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 6efd09c44b14bd0cfb233e9268c1c9cf15d793df..c876f76d92022c9917e296c23ec02d34594af061 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 a23c4d017a86f74b9442b3a9f17ef885d1fe5b1d..b73579181640b57363cb117d51a307108f6ec5c0 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)