(unnamed)

text/plain

Filename: (unnamed)
Type: text/plain
Part: 0
Message: Re: move 0 behaviour
Index: doc/src/sgml/ref/move.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/move.sgml,v
retrieving revision 1.13
diff -c -c -r1.13 move.sgml
*** doc/src/sgml/ref/move.sgml	21 Apr 2002 19:02:39 -0000	1.13
--- doc/src/sgml/ref/move.sgml	31 Oct 2002 01:15:42 -0000
***************
*** 21,27 ****
     <date>1999-07-20</date>
    </refsynopsisdivinfo>
    <synopsis>
! MOVE [ <replaceable class="PARAMETER">direction</replaceable> ] [ <replaceable class="PARAMETER">count</replaceable> ] 
      { IN | FROM } <replaceable class="PARAMETER">cursor</replaceable>
    </synopsis>
   </refsynopsisdiv>
--- 21,28 ----
     <date>1999-07-20</date>
    </refsynopsisdivinfo>
    <synopsis>
! MOVE [ <replaceable class="PARAMETER">direction</replaceable> ] 
!     {<replaceable class="PARAMETER">count</replaceable> | LAST }
      { IN | FROM } <replaceable class="PARAMETER">cursor</replaceable>
    </synopsis>
   </refsynopsisdiv>
Index: src/backend/commands/portalcmds.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/commands/portalcmds.c,v
retrieving revision 1.3
diff -c -c -r1.3 portalcmds.c
*** src/backend/commands/portalcmds.c	4 Sep 2002 20:31:15 -0000	1.3
--- src/backend/commands/portalcmds.c	31 Oct 2002 01:15:44 -0000
***************
*** 15,20 ****
--- 15,22 ----
  
  #include "postgres.h"
  
+ #include <limits.h>
+ 
  #include "commands/portalcmds.h"
  #include "executor/executor.h"
  
***************
*** 55,61 ****
   *
   *	name: name of portal
   *	forward: forward or backward fetch?
!  *	count: # of tuples to fetch (0 implies all)
   *	dest: where to send results
   *	completionTag: points to a buffer of size COMPLETION_TAG_BUFSIZE
   *		in which to store a command completion status string.
--- 57,63 ----
   *
   *	name: name of portal
   *	forward: forward or backward fetch?
!  *	count: # of tuples to fetch
   *	dest: where to send results
   *	completionTag: points to a buffer of size COMPLETION_TAG_BUFSIZE
   *		in which to store a command completion status string.
***************
*** 100,105 ****
--- 102,115 ----
  		return;
  	}
  
+ 	/* If zero count, we are done */
+ 	if (count == 0)
+ 		return;
+ 
+ 	/* Internally, zero count processes all portal rows */
+ 	if (count == INT_MAX)
+ 		count = 0;
+ 		
  	/*
  	 * switch into the portal context
  	 */
Index: src/backend/executor/execMain.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/executor/execMain.c,v
retrieving revision 1.180
diff -c -c -r1.180 execMain.c
*** src/backend/executor/execMain.c	14 Oct 2002 16:51:30 -0000	1.180
--- src/backend/executor/execMain.c	31 Oct 2002 01:15:50 -0000
***************
*** 1119,1125 ****
  
  		/*
  		 * check our tuple count.. if we've processed the proper number
! 		 * then quit, else loop again and process more tuples..
  		 */
  		current_tuple_count++;
  		if (numberTuples == current_tuple_count)
--- 1119,1126 ----
  
  		/*
  		 * check our tuple count.. if we've processed the proper number
! 		 * then quit, else loop again and process more tuples.  Zero
! 		 * number_tuples means no limit.
  		 */
  		current_tuple_count++;
  		if (numberTuples == current_tuple_count)
Index: src/backend/parser/gram.y
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/parser/gram.y,v
retrieving revision 2.370
diff -c -c -r2.370 gram.y
*** src/backend/parser/gram.y	22 Sep 2002 21:44:43 -0000	2.370
--- src/backend/parser/gram.y	31 Oct 2002 01:16:14 -0000
***************
*** 49,54 ****
--- 49,55 ----
  #include "postgres.h"
  
  #include <ctype.h>
+ #include <limits.h>
  
  #include "access/htup.h"
  #include "catalog/index.h"
***************
*** 357,363 ****
  	JOIN
  	KEY
  
! 	LANCOMPILER LANGUAGE LEADING LEFT LEVEL LIKE LIMIT
  	LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION
  	LOCK_P
  
--- 358,364 ----
  	JOIN
  	KEY
  
! 	LANCOMPILER LANGUAGE LAST LEADING LEFT LEVEL LIKE LIMIT
  	LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION
  	LOCK_P
  
***************
*** 2644,2650 ****
  					if ($3 < 0)
  					{
  						$3 = -$3;
! 						$2 = (($2 == FORWARD)? BACKWARD: FORWARD);
  					}
  					n->direction = $2;
  					n->howMany = $3;
--- 2645,2651 ----
  					if ($3 < 0)
  					{
  						$3 = -$3;
! 						$2 = (($2 == FORWARD) ? BACKWARD: FORWARD);
  					}
  					n->direction = $2;
  					n->howMany = $3;
***************
*** 2712,2719 ****
  fetch_how_many:
  			Iconst									{ $$ = $1; }
  			| '-' Iconst							{ $$ = - $2; }
! 											/* 0 means fetch all tuples*/
! 			| ALL									{ $$ = 0; }
  			| NEXT									{ $$ = 1; }
  			| PRIOR									{ $$ = -1; }
  		;
--- 2713,2720 ----
  fetch_how_many:
  			Iconst									{ $$ = $1; }
  			| '-' Iconst							{ $$ = - $2; }
! 			| ALL									{ $$ = INT_MAX; }
! 			| LAST									{ $$ = INT_MAX; }
  			| NEXT									{ $$ = 1; }
  			| PRIOR									{ $$ = -1; }
  		;
***************
*** 7098,7103 ****
--- 7099,7105 ----
  			| KEY
  			| LANGUAGE
  			| LANCOMPILER
+ 			| LAST
  			| LEVEL
  			| LISTEN
  			| LOAD
Index: src/backend/parser/keywords.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/parser/keywords.c,v
retrieving revision 1.127
diff -c -c -r1.127 keywords.c
*** src/backend/parser/keywords.c	18 Sep 2002 21:35:22 -0000	1.127
--- src/backend/parser/keywords.c	31 Oct 2002 01:16:15 -0000
***************
*** 172,177 ****
--- 172,178 ----
  	{"key", KEY},
  	{"lancompiler", LANCOMPILER},
  	{"language", LANGUAGE},
+ 	{"last", LAST},
  	{"leading", LEADING},
  	{"left", LEFT},
  	{"level", LEVEL},
Index: src/backend/tcop/utility.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/tcop/utility.c,v
retrieving revision 1.180
diff -c -c -r1.180 utility.c
*** src/backend/tcop/utility.c	21 Oct 2002 20:31:52 -0000	1.180
--- src/backend/tcop/utility.c	31 Oct 2002 01:16:18 -0000
***************
*** 262,270 ****
  				forward = (bool) (stmt->direction == FORWARD);
  
  				/*
! 				 * parser ensures that count is >= 0 and 'fetch ALL' -> 0
  				 */
- 
  				count = stmt->howMany;
  				PerformPortalFetch(portalName, forward, count,
  								   (stmt->ismove) ? None : dest,
--- 262,269 ----
  				forward = (bool) (stmt->direction == FORWARD);
  
  				/*
! 				 * parser ensures that count is >= 0
  				 */
  				count = stmt->howMany;
  				PerformPortalFetch(portalName, forward, count,
  								   (stmt->ismove) ? None : dest,