From: | Thomas Hallgren <thhal(at)mailblocks(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl> |
Cc: | "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>, Filip Hrbek <filip(dot)hrbek(at)plz(dot)comstar(dot)cz> |
Subject: | Re: Savepoints and SPI |
Date: | 2005-03-17 12:15:57 |
Message-ID: | 423974FD.4050609@mailblocks.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Alvaro Herrera wrote:
>On Wed, Mar 16, 2005 at 07:35:57PM +0100, Thomas Hallgren wrote:
>
>
>>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?
>>
>>
>
>I'd expect the code to close an SPI connection that is opened inside the
>savepoint, but if you open it before setting the savepoint then it
>should remain open.
>
>
That doesn't seem to be what happens. ISTM that the AtEOSubXact_SPI will
do this always:
_SPI_connected--;
_SPI_curid = _SPI_connected;
which in essence puts SPI in an unconnected state regardless of what the
values where before on the _SPI_connected and _SPI_curid.
Regards,
Thomas Hallgren
From | Date | Subject | |
---|---|---|---|
Next Message | Kenneth Marshall | 2005-03-17 14:12:58 | Re: Changing the default wal_sync_method to open_sync for Win32? |
Previous Message | Karel Zak | 2005-03-17 10:07:19 | Re: invalidating cached plans |