]> granicus.if.org Git - postgresql/commit
Fix SPI error cleanup and memory leak
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 2 May 2018 20:50:03 +0000 (16:50 -0400)
committerPeter Eisentraut <peter_e@gmx.net>
Thu, 3 May 2018 12:39:15 +0000 (08:39 -0400)
commit30c66e77be1d890c3cca766259c0bec80bcac1b5
treea4b27230b6a9412e58786d483220cd02b9c9bca7
parenta365f52d58317e3b24e06564e1f6474ffa3221d4
Fix SPI error cleanup and memory leak

Since the SPI stack has been moved from TopTransactionContext to
TopMemoryContext, setting _SPI_stack to NULL in AtEOXact_SPI() leaks
memory.  In fact, we don't need to do that anymore: We just leave the
allocated stack around for the next SPI use.

Also, refactor the SPI cleanup so that it is run both at transaction end
and when returning to the main loop on an exception.  The latter is
necessary when a procedure calls a COMMIT or ROLLBACK command that
itself causes an error.
src/backend/executor/spi.c
src/backend/tcop/postgres.c
src/include/executor/spi.h