OSDN Git Service

Add a couple of missing FreeQueryDesc calls. Noticed while testing a
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 20 Mar 2008 20:05:56 +0000 (20:05 +0000)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 20 Mar 2008 20:05:56 +0000 (20:05 +0000)
framework to keep track of snapshots in use.

src/backend/commands/portalcmds.c
src/backend/executor/spi.c

index 6efd09c..c876f76 100644 (file)
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/commands/portalcmds.c,v 1.69 2008/01/01 19:45:49 momjian Exp $
+ *       $PostgreSQL: pgsql/src/backend/commands/portalcmds.c,v 1.70 2008/03/20 20:05:56 alvherre Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -262,6 +262,7 @@ PortalCleanup(Portal portal)
                                CurrentResourceOwner = portal->resowner;
                                /* we do not need AfterTriggerEndQuery() here */
                                ExecutorEnd(queryDesc);
+                               FreeQueryDesc(queryDesc);
                        }
                        PG_CATCH();
                        {
@@ -362,6 +363,7 @@ PersistHoldablePortal(Portal portal)
                portal->queryDesc = NULL;               /* prevent double shutdown */
                /* we do not need AfterTriggerEndQuery() here */
                ExecutorEnd(queryDesc);
+               FreeQueryDesc(queryDesc);
 
                /*
                 * Set the position in the result set: ideally, this could be
index a23c4d0..b735791 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.188 2008/02/12 04:09:44 tgl Exp $
+ *       $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.189 2008/03/20 20:05:56 alvherre Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1541,7 +1541,6 @@ _SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls,
                        {
                                Node       *stmt = (Node *) lfirst(lc2);
                                bool            canSetTag;
-                               QueryDesc  *qdesc;
                                DestReceiver *dest;
 
                                _SPI_current->processed = 0;
@@ -1617,6 +1616,8 @@ _SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls,
                                if (IsA(stmt, PlannedStmt) &&
                                        ((PlannedStmt *) stmt)->utilityStmt == NULL)
                                {
+                                       QueryDesc  *qdesc;
+
                                        qdesc = CreateQueryDesc((PlannedStmt *) stmt,
                                                                                        ActiveSnapshot,
                                                                                        crosscheck_snapshot,
@@ -1790,6 +1791,7 @@ _SPI_pquery(QueryDesc *queryDesc, bool fire_triggers, long tcount)
                AfterTriggerEndQuery(queryDesc->estate);
 
        ExecutorEnd(queryDesc);
+       /* FreeQueryDesc is done by the caller */
 
 #ifdef SPI_EXECUTOR_STATS
        if (ShowExecutorStats)