MOVE implementation.
authorVadim B. Mikheev
Mon, 29 Sep 1997 05:59:16 +0000 (05:59 +0000)
committerVadim B. Mikheev
Mon, 29 Sep 1997 05:59:16 +0000 (05:59 +0000)
src/backend/commands/command.c
src/backend/parser/gram.y
src/backend/tcop/utility.c

index 039c3719e5ae6c3c9a24af09e3571f7d3136aff4..e259cb141ee396af89fea302fefc6b9e012c00a5 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.18 1997/09/20 16:14:05 thomas Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.19 1997/09/29 05:56:10 vadim Exp $
  *
  * NOTES
  *   The PortalExecutorHeapMemory crap needs to be eliminated
@@ -99,7 +99,7 @@ PerformPortalFetch(char *name,
 {
    Portal      portal;
    int         feature;
-   QueryDesc  *queryDesc;
+   QueryDesc   queryDesc;
    MemoryContext context;
 
    /* ----------------
@@ -147,9 +147,11 @@ PerformPortalFetch(char *name,
     *  tell the destination to prepare to recieve some tuples
     * ----------------
     */
-   queryDesc = PortalGetQueryDesc(portal);
+   memcpy (&queryDesc, PortalGetQueryDesc(portal), sizeof (queryDesc));
+   queryDesc.dest = dest;
+   
    BeginCommand(name,
-                queryDesc->operation,
+                queryDesc.operation,
                 portal->attinfo,       /* QueryDescGetTypeInfo(queryDesc),
                                         * */
                 false,         /* portal fetches don't end up in
@@ -166,7 +168,7 @@ PerformPortalFetch(char *name,
    PortalExecutorHeapMemory = (MemoryContext)
        PortalGetHeapMemory(portal);
 
-   ExecutorRun(queryDesc, PortalGetState(portal), feature, count);
+   ExecutorRun(&queryDesc, PortalGetState(portal), feature, count);
 
    /* ----------------
     * Note: the "end-of-command" tag is returned by higher-level
index 90afc5349ab591b40b3da86d0eaeeafe9ae5b218..626c8b8b5fd8e1fc52b9d9a5f82f9f5081e8705b 100644 (file)
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.52 1997/09/26 15:09:11 thomas Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.53 1997/09/29 05:58:12 vadim Exp $
  *
  * HISTORY
  *   AUTHOR            DATE            MAJOR EVENT
@@ -107,7 +107,7 @@ static char *FlattenStringList(List *list);
        AddAttrStmt, ClosePortalStmt,
        CopyStmt, CreateStmt, CreateSeqStmt, DefineStmt, DestroyStmt,
        ExtendStmt, FetchStmt,  GrantStmt, CreateTrigStmt, DropTrigStmt,
-       IndexStmt, MoveStmt, ListenStmt, OptimizableStmt,
+       IndexStmt, ListenStmt, OptimizableStmt,
        ProcedureStmt, PurgeStmt,
        RecipeStmt, RemoveAggrStmt, RemoveOperStmt, RemoveFuncStmt, RemoveStmt,
        RenameStmt, RevokeStmt, RuleStmt, TransactionStmt, ViewStmt, LoadStmt,
@@ -162,7 +162,7 @@ static char *FlattenStringList(List *list);
 %type    copy_dirn, archive_type, OptArchiveType, OptArchiveLocation,
        def_type, opt_direction, remove_type, opt_column, event
 
-%type    OptLocation, opt_move_where, fetch_how_many
+%type    OptLocation, fetch_how_many
 
 %type    OptSeqList
 %type  OptSeqElem
@@ -299,7 +299,6 @@ stmt :    AddAttrStmt
        | FetchStmt
        | GrantStmt
        | IndexStmt
-       | MoveStmt
        | ListenStmt
        | ProcedureStmt
        | PurgeStmt
@@ -995,7 +994,7 @@ DestroyStmt:    DROP TABLE relation_name_list
 /*****************************************************************************
  *
  *     QUERY:
- *             fetch [forward | backward] [number | all ] [ in  ]
+ *         fetch/move [forward | backward] [number | all ] [ in  ]
  *
  *****************************************************************************/
 
@@ -1005,6 +1004,16 @@ FetchStmt:   FETCH opt_direction fetch_how_many opt_portal_name
                    n->direction = $2;
                    n->howMany = $3;
                    n->portalname = $4;
+                   n->ismove = false;
+                   $$ = (Node *)n;
+               }
+       |   MOVE opt_direction fetch_how_many opt_portal_name
+               {
+                   FetchStmt *n = makeNode(FetchStmt);
+                   n->direction = $2;
+                   n->howMany = $3;
+                   n->portalname = $4;
+                   n->ismove = true;
                    $$ = (Node *)n;
                }
        ;
@@ -1021,6 +1030,10 @@ fetch_how_many:  Iconst
        |  /*EMPTY*/                    { $$ = 1; /*default*/ }
        ;
 
+opt_portal_name: IN name               { $$ = $2;}
+       | /*EMPTY*/                     { $$ = NULL; }
+       ;
+
 /*****************************************************************************
  *
  *     QUERY:
@@ -1119,42 +1132,6 @@ RevokeStmt: REVOKE privileges ON relation_name_list FROM grantee
                }
        ;
 
-/*****************************************************************************
- *
- *     QUERY:
- *             move [] [] []
- *
- *****************************************************************************/
-
-MoveStmt:  MOVE opt_direction opt_move_where opt_portal_name
-               {
-                   MoveStmt *n = makeNode(MoveStmt);
-                   n->direction = $2;
-                   n->to = FALSE;
-                   n->where = $3;
-                   n->portalname = $4;
-                   $$ = (Node *)n;
-               }
-       |  MOVE opt_direction TO Iconst opt_portal_name
-               {
-                   MoveStmt *n = makeNode(MoveStmt);
-                   n->direction = $2;
-                   n->to = TRUE;
-                   n->where = $4;
-                   n->portalname = $5;
-                   $$ = (Node *)n;
-               }
-       ;
-
-opt_move_where: Iconst                 { $$ = $1; }
-       | /*EMPTY*/                     { $$ = 1; /* default */ }
-       ;
-
-opt_portal_name: IN name               { $$ = $2;}
-       | /*EMPTY*/                     { $$ = NULL; }
-       ;
-
-
 /*****************************************************************************
  *
  *     QUERY:
index 76f5865021b27f12f6cc397c93586ec83d63728e..0cdade1b11993d016fcaa4039b246e6ba827d909 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.24 1997/09/08 21:47:58 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.25 1997/09/29 05:59:16 vadim Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -139,7 +139,7 @@ ProcessUtility(Node *parsetree,
                bool        forward;
                int         count;
 
-               commandTag = "FETCH";
+               commandTag = (stmt->ismove) ? "MOVE" : "FETCH";
                CHECK_IF_ABORTED();
 
                forward = (bool) (stmt->direction == FORWARD);
@@ -149,7 +149,8 @@ ProcessUtility(Node *parsetree,
                 */
 
                count = stmt->howMany;
-               PerformPortalFetch(portalName, forward, count, commandTag, dest);
+               PerformPortalFetch(portalName, forward, count, commandTag, 
+                   (stmt->ismove) ? None : dest);  /* /dev/null for MOVE */
            }
            break;