]> granicus.if.org Git - postgresql/commitdiff
Fix not-quite-right Assertion. Did not work at all in extended-query
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 2 Aug 2004 21:42:18 +0000 (21:42 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 2 Aug 2004 21:42:18 +0000 (21:42 +0000)
mode (per complaint from Kris Jurka) and it was only by chance that it
didn't fail in simple-query mode.  A COMMIT or ROLLBACK has to be
executed by a portal, therefore it's wrong to suppose that there aren't
any live portals at CleanupTransaction time.

src/backend/utils/mmgr/portalmem.c

index 2093dc2a4636dff21834492c44be7eaab6945b92..11abf52b87078cb2b09d3dfb7241e0e0cacbefc2 100644 (file)
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/mmgr/portalmem.c,v 1.67 2004/07/17 03:29:46 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/mmgr/portalmem.c,v 1.68 2004/08/02 21:42:18 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -556,10 +556,6 @@ AtCleanup_Portals(void)
        {
                Portal          portal = hentry->portal;
 
-               /* AtAbort_Portals should have fixed these: */
-               Assert(portal->status != PORTAL_ACTIVE);
-               Assert(portal->resowner == NULL);
-
                /*
                 * Do nothing else to cursors held over from a previous
                 * transaction. (This test must include checking CURSOR_OPT_HOLD,
@@ -568,7 +564,11 @@ AtCleanup_Portals(void)
                 */
                if (portal->createXact != xact &&
                        (portal->cursorOptions & CURSOR_OPT_HOLD))
+               {
+                       Assert(portal->status != PORTAL_ACTIVE);
+                       Assert(portal->resowner == NULL);
                        continue;
+               }
 
                /* Else zap it. */
                PortalDrop(portal, false);