I have some test code that utilize SPI and does the following:

1. SPI_connect
2. set a savepoint (using BeginInternalSubTransaction)
3. execute a statement that contains a syntax error (within PG_TRY/PG_CATCH)
4. rollback to the savepoint (RollbackAndReleaseCurrentSubTransaction)
5. execute some other statement.

it errors out in step 5 with SPI_ERROR_UNCONNECTED. It seems that step 3, when it encounters an error, automatically executes a SPI_finish. Is that the desired behavior?

Should I assume that _all_ errors will act this way, i.e. should I assume that if I end up in a PG_CATCH() that my SPI has been disconnected always?

Regards,
Thomas Hallgren

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

Reply via email to