diff options
Diffstat (limited to 'src/backend/executor')
-rw-r--r-- | src/backend/executor/functions.c | 9 | ||||
-rw-r--r-- | src/backend/executor/spi.c | 12 |
2 files changed, 17 insertions, 4 deletions
diff --git a/src/backend/executor/functions.c b/src/backend/executor/functions.c index 2a9e5d88a9e..3611c85a5fc 100644 --- a/src/backend/executor/functions.c +++ b/src/backend/executor/functions.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/functions.c,v 1.87 2004/09/06 18:10:38 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/executor/functions.c,v 1.88 2004/09/10 18:39:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -17,6 +17,7 @@ #include "access/heapam.h" #include "catalog/pg_proc.h" #include "catalog/pg_type.h" +#include "commands/trigger.h" #include "executor/execdefs.h" #include "executor/executor.h" #include "executor/functions.h" @@ -273,7 +274,10 @@ postquel_start(execution_state *es, SQLFunctionCachePtr fcache) /* Utility commands don't need Executor. */ if (es->qd->operation != CMD_UTILITY) + { + AfterTriggerBeginQuery(); ExecutorStart(es->qd, false, false); + } es->status = F_EXEC_RUN; } @@ -316,7 +320,10 @@ postquel_end(execution_state *es) /* Utility commands don't need Executor. */ if (es->qd->operation != CMD_UTILITY) + { ExecutorEnd(es->qd); + AfterTriggerEndQuery(); + } FreeQueryDesc(es->qd); es->qd = NULL; diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c index 4ffb27b0139..636eed31eee 100644 --- a/src/backend/executor/spi.c +++ b/src/backend/executor/spi.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.125 2004/08/29 05:06:42 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.126 2004/09/10 18:39:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -16,6 +16,7 @@ #include "access/printtup.h" #include "catalog/heap.h" +#include "commands/trigger.h" #include "executor/spi_priv.h" #include "tcop/tcopprot.h" #include "utils/lsyscache.h" @@ -1434,6 +1435,8 @@ _SPI_pquery(QueryDesc *queryDesc, bool runit, ResetUsage(); #endif + AfterTriggerBeginQuery(); + ExecutorStart(queryDesc, useCurrentSnapshot, false); ExecutorRun(queryDesc, ForwardScanDirection, (long) tcount); @@ -1447,6 +1450,11 @@ _SPI_pquery(QueryDesc *queryDesc, bool runit, elog(ERROR, "consistency check on SPI tuple count failed"); } + ExecutorEnd(queryDesc); + + /* Take care of any queued AFTER triggers */ + AfterTriggerEndQuery(); + if (queryDesc->dest->mydest == SPI) { SPI_processed = _SPI_current->processed; @@ -1459,8 +1467,6 @@ _SPI_pquery(QueryDesc *queryDesc, bool runit, res = SPI_OK_UTILITY; } - ExecutorEnd(queryDesc); - FreeQueryDesc(queryDesc); #ifdef SPI_EXECUTOR_STATS |