Revert FETCH/MOVE int64 patch. Was using incorrect checks for
authorBruce Momjian <bruce@momjian.us>
Sun, 3 Sep 2006 03:19:45 +0000 (03:19 +0000)
committerBruce Momjian <bruce@momjian.us>
Sun, 3 Sep 2006 03:19:45 +0000 (03:19 +0000)
fetch/move in scan.l.

src/backend/commands/portalcmds.c
src/backend/executor/spi.c
src/backend/parser/gram.y
src/backend/parser/scan.l
src/backend/tcop/postgres.c
src/backend/tcop/pquery.c
src/include/executor/spi.h
src/include/nodes/parsenodes.h
src/include/tcop/pquery.h
src/include/utils/portal.h

index 48f32d5388bd53b26dc9ee3ba5445696717813d2..21e9e857bd4488ef7fa277e68cc245cdfc89d032 100644 (file)
@@ -177,7 +177,7 @@ PerformPortalFetch(FetchStmt *stmt,
                                   char *completionTag)
 {
        Portal          portal;
-       int64           nprocessed;
+       long            nprocessed;
 
        /*
         * Disallow empty-string cursor name (conflicts with protocol-level
@@ -210,7 +210,7 @@ PerformPortalFetch(FetchStmt *stmt,
 
        /* Return command status if wanted */
        if (completionTag)
-               snprintf(completionTag, COMPLETION_TAG_BUFSIZE, "%s " INT64_FORMAT,
+               snprintf(completionTag, COMPLETION_TAG_BUFSIZE, "%s %ld",
                                 stmt->ismove ? "MOVE" : "FETCH",
                                 nprocessed);
 }
index ee0653506843400f84498b46dbceaf77a8571527..db70a65ce07a97661c529c6cb6b2423d17f4100e 100644 (file)
@@ -45,7 +45,7 @@ static int    _SPI_pquery(QueryDesc *queryDesc, long tcount);
 
 static void _SPI_error_callback(void *arg);
 
-static void _SPI_cursor_operation(Portal portal, bool forward, int64 count,
+static void _SPI_cursor_operation(Portal portal, bool forward, long count,
                                          DestReceiver *dest);
 
 static _SPI_plan *_SPI_copy_plan(_SPI_plan *plan, int location);
@@ -980,7 +980,7 @@ SPI_cursor_find(const char *name)
  *     Fetch rows in a cursor
  */
 void
-SPI_cursor_fetch(Portal portal, bool forward, int64 count)
+SPI_cursor_fetch(Portal portal, bool forward, long count)
 {
        _SPI_cursor_operation(portal, forward, count,
                                                  CreateDestReceiver(DestSPI, NULL));
@@ -994,7 +994,7 @@ SPI_cursor_fetch(Portal portal, bool forward, int64 count)
  *     Move in a cursor
  */
 void
-SPI_cursor_move(Portal portal, bool forward, int64 count)
+SPI_cursor_move(Portal portal, bool forward, long count)
 {
        _SPI_cursor_operation(portal, forward, count, None_Receiver);
 }
@@ -1639,10 +1639,10 @@ _SPI_error_callback(void *arg)
  *     Do a FETCH or MOVE in a cursor
  */
 static void
-_SPI_cursor_operation(Portal portal, bool forward, int64 count,
+_SPI_cursor_operation(Portal portal, bool forward, long count,
                                          DestReceiver *dest)
 {
-       int64           nfetched;
+       long            nfetched;
 
        /* Check that the portal is valid */
        if (!PortalIsValid(portal))
index 42bf76df11ffe4bcb3544899da6c7d2faf4f6480..8a6add011d76064b9f8aff2ec7282403e54ab799 100644 (file)
@@ -116,7 +116,6 @@ static void doNegateFloat(Value *v);
 %union
 {
        int                                     ival;
-       int64                           i64val; 
        char                            chr;
        char                            *str;
        const char                      *keyword;
@@ -325,7 +324,6 @@ static void doNegateFloat(Value *v);
 %type <boolean> opt_varying opt_timezone
 
 %type <ival>   Iconst SignedIconst
-%type <i64val>  SignedI64const
 %type <str>            Sconst comment_text
 %type <str>            RoleId opt_granted_by opt_boolean ColId_or_Sconst
 %type <list>   var_list var_list_or_default
@@ -450,7 +448,6 @@ static void doNegateFloat(Value *v);
 /* Special token types, not actually keywords - see the "lex" file */
 %token <str>   IDENT FCONST SCONST BCONST XCONST Op
 %token <ival>  ICONST PARAM
-%token <i64val> I64CONST 
 
 /* precedence: lowest to highest */
 %nonassoc      SET                             /* see relation_expr_opt_alias */
@@ -3359,27 +3356,6 @@ fetch_direction:
                                        n->howMany = $1;
                                        $$ = (Node *)n;
                                }
-                       | ABSOLUTE_P SignedI64const
-                               {
-                                               FetchStmt *n = makeNode(FetchStmt);
-                                               n->direction = FETCH_ABSOLUTE;
-                                               n->howMany = $2;
-                                               $$ = (Node *)n;
-                               }
-                       | RELATIVE_P SignedI64const
-                               {
-                                               FetchStmt *n = makeNode(FetchStmt);
-                                               n->direction = FETCH_RELATIVE;
-                                               n->howMany = $2;
-                                               $$ = (Node *)n;
-                               }
-                       | SignedI64const
-                               {
-                                               FetchStmt *n = makeNode(FetchStmt);
-                                               n->direction = FETCH_FORWARD;
-                                               n->howMany = $1;
-                                               $$ = (Node *)n;
-                               }
                        | ALL
                                {
                                        FetchStmt *n = makeNode(FetchStmt);
@@ -3401,13 +3377,6 @@ fetch_direction:
                                        n->howMany = $2;
                                        $$ = (Node *)n;
                                }
-                       | FORWARD SignedI64const
-                               {
-                                               FetchStmt *n = makeNode(FetchStmt);
-                                               n->direction = FETCH_FORWARD;
-                                               n->howMany = $2;
-                                               $$ = (Node *)n;
-                               }
                        | FORWARD ALL
                                {
                                        FetchStmt *n = makeNode(FetchStmt);
@@ -3429,13 +3398,6 @@ fetch_direction:
                                        n->howMany = $2;
                                        $$ = (Node *)n;
                                }
-                       | BACKWARD SignedI64const
-                               {
-                                               FetchStmt *n = makeNode(FetchStmt);
-                                               n->direction = FETCH_BACKWARD;
-                                               n->howMany = $2;
-                                               $$ = (Node *)n;
-                               }
                        | BACKWARD ALL
                                {
                                        FetchStmt *n = makeNode(FetchStmt);
@@ -8540,9 +8502,6 @@ RoleId:           ColId                                                                   { $$ = $1; };
 SignedIconst: ICONST                                                           { $$ = $1; }
                        | '-' ICONST                                                    { $$ = - $2; }
                ;
-SignedI64const: I64CONST                                                       { $$ = $1; }
-                       | '-' I64CONST                                                  { $$ = - $2; }
-               ;
 
 /*
  * Name classification hierarchy.
index 7e91d0f7586c41a058453c0083bf4f5fadf1cf51..19675138c81566f0f2f35482a7d3e1b57fea062f 100644 (file)
@@ -666,22 +666,6 @@ other                      .
 #endif
                                                )
                                        {
-                                               /* For Fetch/Move stmt, convert the string into int64 value */
-                                               if((strcmp(yylval.keyword, "fetch")==0) || (strcmp(yylval.keyword, "move")==0))
-                                               {
-                                                               int64 int64Val;
-                                                               errno = 0;
-       
-                                                               int64Val =      strtoll(yytext, &endptr, 10);
-                                                               if (*endptr != '\0' || errno == ERANGE)
-                                                               {
-                                                                                       yylval.str = pstrdup(yytext);
-                                                                                       return FCONST;
-                                                               }
-                                                               yylval.i64val = int64Val; 
-                                                               return I64CONST;
-                                               }
-
                                                /* integer too large, treat it as a float */
                                                yylval.str = pstrdup(yytext);
                                                return FCONST;
index 587534abd31de2d1d63d38703a5e183dd45c784e..eee4e227f53d04a69328afff5914cd5183412fac 100644 (file)
@@ -1687,7 +1687,7 @@ exec_bind_message(StringInfo input_message)
  * Process an "Execute" message for a portal
  */
 static void
-exec_execute_message(const char *portal_name, int64 max_rows)
+exec_execute_message(const char *portal_name, long max_rows)
 {
        CommandDest dest;
        DestReceiver *receiver;
@@ -3308,13 +3308,13 @@ PostgresMain(int argc, char *argv[], const char *username)
                        case 'E':                       /* execute */
                                {
                                        const char *portal_name;
-                                       int64                   max_rows;
+                                       int                     max_rows;
 
                                        /* Set statement_timestamp() */
                                        SetCurrentStatementStartTimestamp();
 
                                        portal_name = pq_getmsgstring(&input_message);
-                                       max_rows = pq_getmsgint64(&input_message);
+                                       max_rows = pq_getmsgint(&input_message, 4);
                                        pq_getmsgend(&input_message);
 
                                        exec_execute_message(portal_name, max_rows);
index 8a40f10609e40ea15d29ec8a413652333b44fee3..a4a5932c742c0bbbc22d5cf47839f67e54994252 100644 (file)
@@ -38,18 +38,18 @@ static void ProcessQuery(Query *parsetree,
                         DestReceiver *dest,
                         char *completionTag);
 static void FillPortalStore(Portal portal);
-static uint64 RunFromStore(Portal portal, ScanDirection direction, int64 count,
+static uint32 RunFromStore(Portal portal, ScanDirection direction, long count,
                         DestReceiver *dest);
-static int64 PortalRunSelect(Portal portal, bool forward, int64 count,
+static long PortalRunSelect(Portal portal, bool forward, long count,
                                DestReceiver *dest);
 static void PortalRunUtility(Portal portal, Query *query,
                                 DestReceiver *dest, char *completionTag);
 static void PortalRunMulti(Portal portal,
                           DestReceiver *dest, DestReceiver *altdest,
                           char *completionTag);
-static int64 DoPortalRunFetch(Portal portal,
+static long DoPortalRunFetch(Portal portal,
                                 FetchDirection fdirection,
-                                int64 count,
+                                long count,
                                 DestReceiver *dest);
 static void DoPortalRewind(Portal portal);
 
@@ -581,7 +581,7 @@ PortalSetResultFormat(Portal portal, int nFormats, int16 *formats)
  * suspended due to exhaustion of the count parameter.
  */
 bool
-PortalRun(Portal portal, int64 count,
+PortalRun(Portal portal, long count,
                  DestReceiver *dest, DestReceiver *altdest,
                  char *completionTag)
 {
@@ -773,15 +773,15 @@ PortalRun(Portal portal, int64 count,
  *
  * Returns number of rows processed (suitable for use in result tag)
  */
-static int64
+static long
 PortalRunSelect(Portal portal,
                                bool forward,
-                               int64 count,
+                               long count,
                                DestReceiver *dest)
 {
        QueryDesc  *queryDesc;
        ScanDirection direction;
-       uint64          nprocessed;
+       uint32          nprocessed;
 
        /*
         * NB: queryDesc will be NULL if we are fetching from a held cursor or a
@@ -834,12 +834,12 @@ PortalRunSelect(Portal portal,
 
                if (!ScanDirectionIsNoMovement(direction))
                {
-                       int64           oldPos;
+                       long            oldPos;
 
                        if (nprocessed > 0)
                                portal->atStart = false;                /* OK to go backward now */
                        if (count == 0 ||
-                               (uint64) nprocessed < (uint64) count)
+                               (unsigned long) nprocessed < (unsigned long) count)
                                portal->atEnd = true;   /* we retrieved 'em all */
                        oldPos = portal->portalPos;
                        portal->portalPos += nprocessed;
@@ -882,7 +882,7 @@ PortalRunSelect(Portal portal,
                                portal->portalPos++;    /* adjust for endpoint case */
                        }
                        if (count == 0 ||
-                               (uint64) nprocessed < (uint64) count)
+                               (unsigned long) nprocessed < (unsigned long) count)
                        {
                                portal->atStart = true; /* we retrieved 'em all */
                                portal->portalPos = 0;
@@ -890,7 +890,7 @@ PortalRunSelect(Portal portal,
                        }
                        else
                        {
-                               int64           oldPos;
+                               long            oldPos;
 
                                oldPos = portal->portalPos;
                                portal->portalPos -= nprocessed;
@@ -958,11 +958,11 @@ FillPortalStore(Portal portal)
  * are run in the caller's memory context (since we have no estate).  Watch
  * out for memory leaks.
  */
-static uint64
-RunFromStore(Portal portal, ScanDirection direction, int64 count,
+static uint32
+RunFromStore(Portal portal, ScanDirection direction, long count,
                         DestReceiver *dest)
 {
-       int64           current_tuple_count = 0;
+       long            current_tuple_count = 0;
        TupleTableSlot *slot;
 
        slot = MakeSingleTupleTableSlot(portal->tupDesc);
@@ -1010,7 +1010,7 @@ RunFromStore(Portal portal, ScanDirection direction, int64 count,
 
        ExecDropSingleTupleTableSlot(slot);
 
-       return (uint64) current_tuple_count;
+       return (uint32) current_tuple_count;
 }
 
 /*
@@ -1200,13 +1200,13 @@ PortalRunMulti(Portal portal,
  *
  * Returns number of rows processed (suitable for use in result tag)
  */
-int64
+long
 PortalRunFetch(Portal portal,
                           FetchDirection fdirection,
-                          int64 count,
+                          long count,
                           DestReceiver *dest)
 {
-       int64           result;
+       long            result;
        Portal          saveActivePortal;
        Snapshot        saveActiveSnapshot;
        ResourceOwner saveResourceOwner;
@@ -1307,10 +1307,10 @@ PortalRunFetch(Portal portal,
  *
  * Returns number of rows processed (suitable for use in result tag)
  */
-static int64
+static long
 DoPortalRunFetch(Portal portal,
                                 FetchDirection fdirection,
-                                int64 count,
+                                long count,
                                 DestReceiver *dest)
 {
        bool            forward;
@@ -1347,7 +1347,7 @@ DoPortalRunFetch(Portal portal,
                                 * we are.      In any case, we arrange to fetch the target row
                                 * going forwards.
                                 */
-                               if (portal->posOverflow || portal->portalPos == FETCH_ALL ||
+                               if (portal->posOverflow || portal->portalPos == LONG_MAX ||
                                        count - 1 <= portal->portalPos / 2)
                                {
                                        DoPortalRewind(portal);
@@ -1357,7 +1357,7 @@ DoPortalRunFetch(Portal portal,
                                }
                                else
                                {
-                                       int64           pos = portal->portalPos;
+                                       long            pos = portal->portalPos;
 
                                        if (portal->atEnd)
                                                pos++;  /* need one extra fetch if off end */
@@ -1469,7 +1469,7 @@ DoPortalRunFetch(Portal portal,
         */
        if (!forward && count == FETCH_ALL && dest->mydest == DestNone)
        {
-               int64           result = portal->portalPos;
+               long            result = portal->portalPos;
 
                if (result > 0 && !portal->atEnd)
                        result--;
index 7721b2bfe606ded94699a5d52852f7106c478ce7..e57329e53d77af6c20f33aba2a427fb9df712128 100644 (file)
@@ -126,8 +126,8 @@ extern void SPI_freetuptable(SPITupleTable *tuptable);
 extern Portal SPI_cursor_open(const char *name, void *plan,
                                Datum *Values, const char *Nulls, bool read_only);
 extern Portal SPI_cursor_find(const char *name);
-extern void SPI_cursor_fetch(Portal portal, bool forward, int64 count);
-extern void SPI_cursor_move(Portal portal, bool forward, int64 count);
+extern void SPI_cursor_fetch(Portal portal, bool forward, long count);
+extern void SPI_cursor_move(Portal portal, bool forward, long count);
 extern void SPI_cursor_close(Portal portal);
 
 extern void AtEOXact_SPI(bool isCommit);
index ddf534d4ab2bf60e6d23cc4add1b36e7fbbb49d6..585f270dbe9f1ee9dc40979fc9df9198625eecce 100644 (file)
@@ -14,8 +14,6 @@
 #ifndef PARSENODES_H
 #define PARSENODES_H
 
-#include "limits.h"
-
 #include "nodes/primnodes.h"
 #include "nodes/value.h"
 
@@ -1441,18 +1439,13 @@ typedef enum FetchDirection
        FETCH_RELATIVE
 } FetchDirection;
 
-#ifdef HAVE_INT64
-#define FETCH_ALL      LLONG_MAX
-#else
 #define FETCH_ALL      LONG_MAX
-#endif
-
 
 typedef struct FetchStmt
 {
        NodeTag         type;
        FetchDirection direction;       /* see above */
-       int64           howMany;                /* number of rows, or position argument */
+       long            howMany;                /* number of rows, or position argument */
        char       *portalname;         /* name of portal (cursor) */
        bool            ismove;                 /* TRUE if MOVE */
 } FetchStmt;
index 947b29ebb7d5fed3177039ed4a98c3eeccf48caa..6badc315f257bdb07ce16775d98b1b1da9a0d136 100644 (file)
@@ -30,13 +30,13 @@ extern void PortalStart(Portal portal, ParamListInfo params,
 extern void PortalSetResultFormat(Portal portal, int nFormats,
                                          int16 *formats);
 
-extern bool PortalRun(Portal portal, int64 count,
+extern bool PortalRun(Portal portal, long count,
                  DestReceiver *dest, DestReceiver *altdest,
                  char *completionTag);
 
-extern int64 PortalRunFetch(Portal portal,
+extern long PortalRunFetch(Portal portal,
                           FetchDirection fdirection,
-                          int64 count,
+                          long count,
                           DestReceiver *dest);
 
 #endif   /* PQUERY_H */
index 7f5d9aa2cd5ece37da200c30a6dec8421ef2301a..5e08d3f590150495b2266f6744883af35ae13b98 100644 (file)
@@ -173,7 +173,7 @@ typedef struct PortalData
        bool            atStart;
        bool            atEnd;
        bool            posOverflow;
-       int64           portalPos;
+       long            portalPos;
 
        /* Presentation data, primarily used by the pg_cursors system view */
        TimestampTz     creation_time;  /* time at which this portal was defined */