From 33f0108df8a79cdb6dbf91f7eb4329143c0730d8 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Mon, 30 Dec 2002 15:31:51 +0000 Subject: Cause FETCH 1 to return the current cursor row, or zero if at beginning/end of cursor. Have MOVE return 0/1 depending on cursor position. Matches SQL spec. Pass cursor counter from parser as a long rather than int. Doc updates. --- src/backend/parser/gram.y | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'src/backend/parser') diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index bb94d1f8e8..c19673fc42 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.388 2002/12/12 20:35:13 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.389 2002/12/30 15:31:47 momjian Exp $ * * HISTORY * AUTHOR DATE MAJOR EVENT @@ -2591,13 +2591,6 @@ comment_text: FetchStmt: FETCH direction fetch_how_many from_in name { FetchStmt *n = makeNode(FetchStmt); - if ($2 == RELATIVE) - { - if ($3 == 0) - elog(ERROR, - "FETCH / RELATIVE at current position is not supported"); - $2 = FORWARD; - } if ($3 < 0) { $3 = -$3; @@ -2629,10 +2622,6 @@ FetchStmt: FETCH direction fetch_how_many from_in name | FETCH direction from_in name { FetchStmt *n = makeNode(FetchStmt); - if ($2 == RELATIVE) - { - $2 = FORWARD; - } n->direction = $2; n->howMany = 1; n->portalname = $4; @@ -2719,20 +2708,20 @@ FetchStmt: FETCH direction fetch_how_many from_in name direction: FORWARD { $$ = FORWARD; } | BACKWARD { $$ = BACKWARD; } - | RELATIVE { $$ = RELATIVE; } + | RELATIVE { $$ = FORWARD; } | ABSOLUTE { elog(NOTICE, "FETCH / ABSOLUTE not supported, using RELATIVE"); - $$ = RELATIVE; + $$ = FORWARD; } ; fetch_how_many: Iconst { $$ = $1; } | '-' Iconst { $$ = - $2; } - | ALL { $$ = INT_MAX; } - | LAST { $$ = INT_MAX; } + | ALL { $$ = LONG_MAX; } + | LAST { $$ = LONG_MAX; } | NEXT { $$ = 1; } | PRIOR { $$ = -1; } ; -- cgit v1.2.1