The following patch removes FETCH LAST and instead supports FETCH ALL.
It also clarifies the docs to mention it sits on the last row, not after
the last row.
Applied.
---------------------------------------------------------------------------
Tom Lane wrote:
> Bruce Momjian <[EMAIL PROTECTED]> writes:
> > Hiroshi Inoue wrote:
> > Are you suggesting removing FETCH LAST _and_ MOVE LAST?.
> >>
> >> Yes. Should cursors be positioned on the last row
> >> or EOF by MOVE LAST ? Anyway I see no necessity to use
> >> the standard keyword LAST currently.
> >>
> > I think MOVE LAST works well.
>
> > OK, so we will switch it to MOVE END. That seems OK.
>
> What is good about that??? We already have a nonstandard keyword
> for this functionality: MOVE ALL. There is no reason to invent another
> one.
>
> I tend to agree with Hiroshi that it's a bad idea to add a standard
> keyword to represent not-quite-standard behavior. MOVE ALL is our
> historical spelling for this functionality, and adding MOVE LAST is
> not really bringing anything to the party.
>
> regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>
--
Bruce Momjian | http://candle.pha.pa.us
[EMAIL PROTECTED] | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Index: doc/src/sgml/ref/fetch.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/fetch.sgml,v
retrieving revision 1.23
diff -c -c -r1.23 fetch.sgml
*** doc/src/sgml/ref/fetch.sgml 8 Jan 2003 00:22:26 -0000 1.23
--- doc/src/sgml/ref/fetch.sgml 3 Feb 2003 14:00:38 -0000
***************
*** 22,28 ****
</refsynopsisdivinfo>
<synopsis>
FETCH [ <replaceable class="PARAMETER">direction</replaceable> ] [ <replaceable
class="PARAMETER">count</replaceable> ] { IN | FROM } <replaceable
class="PARAMETER">cursor</replaceable>
! FETCH [ FORWARD | BACKWARD | RELATIVE ] [ <replaceable
class="PARAMETER">#</replaceable> | ALL | LAST | NEXT | PRIOR ]
{ IN | FROM } <replaceable class="PARAMETER">cursor</replaceable>
</synopsis>
--- 22,28 ----
</refsynopsisdivinfo>
<synopsis>
FETCH [ <replaceable class="PARAMETER">direction</replaceable> ] [ <replaceable
class="PARAMETER">count</replaceable> ] { IN | FROM } <replaceable
class="PARAMETER">cursor</replaceable>
! FETCH [ FORWARD | BACKWARD | RELATIVE ] [ <replaceable
class="PARAMETER">#</replaceable> | ALL | NEXT | PRIOR ]
{ IN | FROM } <replaceable class="PARAMETER">cursor</replaceable>
</synopsis>
***************
*** 107,123 ****
<varlistentry>
<term>
- LAST
- </term>
- <listitem>
- <para>
- Same as <literal>ALL</>, but conforms to SQL92 syntax.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
NEXT
</term>
<listitem>
--- 107,112 ----
***************
*** 212,218 ****
If the number of rows remaining in the cursor is less
than <replaceable class="PARAMETER">#</replaceable>,
then only those available are fetched.
! Substituting the keyword ALL or LAST in place of a number will
cause all remaining rows in the cursor to be retrieved.
Rows may be fetched in both FORWARD and BACKWARD
directions. The default direction is FORWARD.
--- 201,207 ----
If the number of rows remaining in the cursor is less
than <replaceable class="PARAMETER">#</replaceable>,
then only those available are fetched.
! Substituting the keyword ALL in place of a number will
cause all remaining rows in the cursor to be retrieved.
Rows may be fetched in both FORWARD and BACKWARD
directions. The default direction is FORWARD.
***************
*** 220,232 ****
<para>
The cursor position can be before the first row of the query result, or on
! any particular row of the result, or after the last row of the result.
When created, a cursor is positioned before the first row. After fetching
some rows, the cursor is positioned on the last row retrieved. A new
<command>FETCH</command> always steps one row in the specified direction
(if possible) before beginning to return rows. If the
<command>FETCH</command> requests more rows than available, the cursor is
! left positioned after the last row of the query result (or before the first
row, in the case of a backward fetch). This will always be the case after
<command>FETCH ALL</>.
</para>
--- 209,221 ----
<para>
The cursor position can be before the first row of the query result, or on
! any particular row of the result.
When created, a cursor is positioned before the first row. After fetching
some rows, the cursor is positioned on the last row retrieved. A new
<command>FETCH</command> always steps one row in the specified direction
(if possible) before beginning to return rows. If the
<command>FETCH</command> requests more rows than available, the cursor is
! left positioned on the last row of the query result (or on the first
row, in the case of a backward fetch). This will always be the case after
<command>FETCH ALL</>.
</para>
***************
*** 236,242 ****
A zero row count requests fetching the current row without moving the
cursor --- that is, re-fetching the most recently fetched row.
This will succeed unless the cursor is positioned before the
! first row or after the last row; in which case, no row is returned.
</para>
</tip>
--- 225,231 ----
A zero row count requests fetching the current row without moving the
cursor --- that is, re-fetching the most recently fetched row.
This will succeed unless the cursor is positioned before the
! first row; in which case, no row is returned.
</para>
</tip>
Index: doc/src/sgml/ref/move.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/ref/move.sgml,v
retrieving revision 1.16
diff -c -c -r1.16 move.sgml
*** doc/src/sgml/ref/move.sgml 8 Jan 2003 00:22:26 -0000 1.16
--- doc/src/sgml/ref/move.sgml 3 Feb 2003 14:00:38 -0000
***************
*** 34,40 ****
</title>
<para>
<command>MOVE</command> allows the user to move the cursor position a
! specified number of rows, or all the way to the end or start of the query.
<command>MOVE</command> works exactly like the <command>FETCH</command>
command, except it only repositions the cursor and does not return rows.
</para>
--- 34,41 ----
</title>
<para>
<command>MOVE</command> allows the user to move the cursor position a
! specified number of rows, or to the beginning or end of the cursor.
! <command>MOVE ALL</command> moves to the last row of the cursor.
<command>MOVE</command> works exactly like the <command>FETCH</command>
command, except it only repositions the cursor and does not return rows.
</para>
Index: src/backend/parser/gram.y
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/parser/gram.y,v
retrieving revision 2.397
diff -c -c -r2.397 gram.y
*** src/backend/parser/gram.y 2 Feb 2003 23:46:38 -0000 2.397
--- src/backend/parser/gram.y 3 Feb 2003 14:01:13 -0000
***************
*** 361,367 ****
KEY
! LANCOMPILER LANGUAGE LAST LEADING LEFT LEVEL LIKE LIMIT
LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION
LOCK_P
--- 361,367 ----
KEY
! LANCOMPILER LANGUAGE LEADING LEFT LEVEL LIKE LIMIT
LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LOCATION
LOCK_P
***************
*** 2713,2719 ****
Iconst
{ $$ = $1; }
| '-' Iconst
{ $$ = - $2; }
| ALL
{ $$ = INT_MAX; }
- | LAST
{ $$ = INT_MAX; }
| NEXT
{ $$ = 1; }
| PRIOR
{ $$ = -1; }
;
--- 2713,2718 ----
***************
*** 7131,7137 ****
| KEY
| LANCOMPILER
| LANGUAGE
- | LAST
| LEVEL
| LISTEN
| LOAD
--- 7130,7135 ----
Index: src/backend/parser/keywords.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/parser/keywords.c,v
retrieving revision 1.132
diff -c -c -r1.132 keywords.c
*** src/backend/parser/keywords.c 12 Dec 2002 20:35:13 -0000 1.132
--- src/backend/parser/keywords.c 3 Feb 2003 14:01:14 -0000
***************
*** 172,178 ****
{"key", KEY},
{"lancompiler", LANCOMPILER},
{"language", LANGUAGE},
- {"last", LAST},
{"leading", LEADING},
{"left", LEFT},
{"level", LEVEL},
--- 172,177 ----
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
http://archives.postgresql.org