mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Add a warning to AtEOXact_SPI() to catch cases where the current
transaction has been committed without SPI_finish() being called first. Per recent discussion here: http://archives.postgresql.org/pgsql-patches/2003-11/msg00286.php
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.108 2003/11/29 19:51:48 pgsql Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.109 2003/12/02 19:26:47 joe Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -174,18 +174,26 @@ SPI_finish(void)
|
||||
}
|
||||
|
||||
/*
|
||||
* Clean up SPI state at transaction commit or abort (we don't care which).
|
||||
* Clean up SPI state at transaction commit or abort.
|
||||
*/
|
||||
void
|
||||
AtEOXact_SPI(void)
|
||||
AtEOXact_SPI(bool isCommit)
|
||||
{
|
||||
/*
|
||||
* Note that memory contexts belonging to SPI stack entries will be
|
||||
* freed automatically, so we can ignore them here. We just need to
|
||||
* restore our static variables to initial state.
|
||||
*/
|
||||
if (_SPI_stack != NULL) /* there was abort */
|
||||
if (_SPI_stack != NULL)
|
||||
{
|
||||
free(_SPI_stack);
|
||||
if (isCommit)
|
||||
ereport(WARNING,
|
||||
(errcode(ERRCODE_WARNING),
|
||||
errmsg("freeing non-empty SPI stack"),
|
||||
errhint("Check for missing \"SPI_finish\" calls")));
|
||||
}
|
||||
|
||||
_SPI_current = _SPI_stack = NULL;
|
||||
_SPI_connected = _SPI_curid = -1;
|
||||
SPI_processed = 0;
|
||||
|
Reference in New Issue
Block a user