diff --git a/src/backend/commands/command.c b/src/backend/commands/command.c
index 039c3719e5ae6c3c9a24af09e3571f7d3136aff4..e259cb141ee396af89fea302fefc6b9e012c00a5 100644
--- a/src/backend/commands/command.c
+++ b/src/backend/commands/command.c
@@ -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
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 90afc5349ab591b40b3da86d0eaeeafe9ae5b218..626c8b8b5fd8e1fc52b9d9a5f82f9f5081e8705b 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -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 <ival>	copy_dirn, archive_type, OptArchiveType, OptArchiveLocation,
 		def_type, opt_direction, remove_type, opt_column, event
 
-%type <ival>	OptLocation, opt_move_where, fetch_how_many
+%type <ival>	OptLocation, fetch_how_many
 
 %type <list>	OptSeqList
 %type <defelt>	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 <portalname> ]
+ *			fetch/move [forward | backward] [number | all ] [ in <portalname> ]
  *
  *****************************************************************************/
 
@@ -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 [<dirn>] [<whereto>] [<portalname>]
- *
- *****************************************************************************/
-
-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:
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 76f5865021b27f12f6cc397c93586ec83d63728e..0cdade1b11993d016fcaa4039b246e6ba827d909 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -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;