aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/commands/portalcmds.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c
index 8c4c9fe282d..7263495d548 100644
--- a/src/backend/commands/portalcmds.c
+++ b/src/backend/commands/portalcmds.c
@@ -14,7 +14,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/portalcmds.c,v 1.24.2.1 2004/11/28 22:16:49 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/portalcmds.c,v 1.24.2.2 2007/02/06 22:49:48 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -363,7 +363,20 @@ PersistHoldablePortal(Portal portal)
*/
MemoryContextSwitchTo(portal->holdContext);
- if (!portal->atEnd)
+ if (portal->atEnd)
+ {
+ /* we can handle this case even if posOverflow */
+ HeapTuple tup;
+ bool should_free;
+
+ while ((tup = tuplestore_gettuple(portal->holdStore, true,
+ &should_free)) != NULL)
+ {
+ if (should_free)
+ pfree(tup);
+ }
+ }
+ else
{
long store_pos;