77 *
88 *
99 * IDENTIFICATION
10- * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.19 1997/09/29 05:56:10 vadim Exp $
10+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.20 1997/10/27 08:55:16 vadim Exp $
1111 *
1212 * NOTES
1313 * The PortalExecutorHeapMemory crap needs to be eliminated
@@ -97,10 +97,10 @@ PerformPortalFetch(char *name,
9797char * tag ,
9898CommandDest dest )
9999{
100- Portal portal ;
101- int feature ;
102- QueryDesc queryDesc ;
103- MemoryContext context ;
100+ Portal portal ;
101+ int feature ;
102+ QueryDesc * queryDesc ;
103+ MemoryContext context ;
104104
105105/* ----------------
106106 *sanity checks
@@ -147,11 +147,19 @@ PerformPortalFetch(char *name,
147147 *tell the destination to prepare to recieve some tuples
148148 * ----------------
149149 */
150- memcpy (& queryDesc ,PortalGetQueryDesc (portal ),sizeof (queryDesc ));
151- queryDesc .dest = dest ;
150+ queryDesc = PortalGetQueryDesc (portal );
151+
152+ if (dest == None )/* MOVE */
153+ {
154+ QueryDesc * qdesc = (QueryDesc * )palloc (sizeof (QueryDesc ));
155+
156+ memcpy (qdesc ,queryDesc ,sizeof (QueryDesc ));
157+ qdesc -> dest = dest ;
158+ queryDesc = qdesc ;
159+ }
152160
153161BeginCommand (name ,
154- queryDesc . operation ,
162+ queryDesc -> operation ,
155163portal -> attinfo ,/* QueryDescGetTypeInfo(queryDesc),
156164 * */
157165 false,/* portal fetches don't end up in
@@ -168,8 +176,11 @@ PerformPortalFetch(char *name,
168176PortalExecutorHeapMemory = (MemoryContext )
169177PortalGetHeapMemory (portal );
170178
171- ExecutorRun (& queryDesc ,PortalGetState (portal ),feature ,count );
179+ ExecutorRun (queryDesc ,PortalGetState (portal ),feature ,count );
172180
181+ if (dest == None )/* MOVE */
182+ pfree (queryDesc );
183+
173184/* ----------------
174185 * Note: the "end-of-command" tag is returned by higher-level
175186 * utility code