aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/command.c
diff options
context:
space:
mode:
authorVadim B. Mikheev <vadim4o@yahoo.com>1997-10-27 08:55:16 +0000
committerVadim B. Mikheev <vadim4o@yahoo.com>1997-10-27 08:55:16 +0000
commit110ba08a12fc1b3db38864ebd4b0feae5b3657a7 (patch)
tree7afb1ada746e81d2788feb14d446e4b09b3a4072 /src/backend/commands/command.c
parentf15eeff1bd8f0a7928042b487d9bae6180c04bf0 (diff)
downloadpostgresql-110ba08a12fc1b3db38864ebd4b0feae5b3657a7.tar.gz
postgresql-110ba08a12fc1b3db38864ebd4b0feae5b3657a7.zip
Fix binary cursors broken by MOVE implementation.
(Thanks to Bruce for finding what caused problem).
Diffstat (limited to 'src/backend/commands/command.c')
-rw-r--r--src/backend/commands/command.c29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/backend/commands/command.c b/src/backend/commands/command.c
index e259cb141ee..1f80e9e2e0d 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.19 1997/09/29 05:56:10 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.20 1997/10/27 08:55:16 vadim Exp $
*
* NOTES
* The PortalExecutorHeapMemory crap needs to be eliminated
@@ -97,10 +97,10 @@ PerformPortalFetch(char *name,
char *tag,
CommandDest dest)
{
- Portal portal;
- int feature;
- QueryDesc queryDesc;
- MemoryContext context;
+ Portal portal;
+ int feature;
+ QueryDesc *queryDesc;
+ MemoryContext context;
/* ----------------
* sanity checks
@@ -147,11 +147,19 @@ PerformPortalFetch(char *name,
* tell the destination to prepare to recieve some tuples
* ----------------
*/
- memcpy (&queryDesc, PortalGetQueryDesc(portal), sizeof (queryDesc));
- queryDesc.dest = dest;
+ queryDesc = PortalGetQueryDesc(portal);
+
+ if ( dest == None ) /* MOVE */
+ {
+ QueryDesc *qdesc = (QueryDesc *) palloc (sizeof (QueryDesc));
+
+ memcpy (qdesc, queryDesc, sizeof (QueryDesc));
+ qdesc->dest = dest;
+ queryDesc = qdesc;
+ }
BeginCommand(name,
- queryDesc.operation,
+ queryDesc->operation,
portal->attinfo, /* QueryDescGetTypeInfo(queryDesc),
* */
false, /* portal fetches don't end up in
@@ -168,8 +176,11 @@ PerformPortalFetch(char *name,
PortalExecutorHeapMemory = (MemoryContext)
PortalGetHeapMemory(portal);
- ExecutorRun(&queryDesc, PortalGetState(portal), feature, count);
+ ExecutorRun(queryDesc, PortalGetState(portal), feature, count);
+ if ( dest == None ) /* MOVE */
+ pfree (queryDesc);
+
/* ----------------
* Note: the "end-of-command" tag is returned by higher-level
* utility code