On 01/05/2018 04:30 PM, Peter Eisentraut wrote:
> A merge conflict has arisen, so for simplicity, here is an updated patch.
>
> On 12/20/17 10:08, Peter Eisentraut wrote:
>> Updated patch attached.
>>
>> I have addressed the most recent review comments I believe.
>>
>> The question about what happens to cursor loops in PL/Perl and PL/Python
>> would be addressed by the separate thread "portal pinning". The test
>> cases in this patch are currently marked by FIXMEs.
>>
>> I have changed the SPI API a bit. I got rid of SPI_set_nonatomic() and
>> instead introduced SPI_connect_ext() that you can pass flags to. The
>> advantage of that is that in the normal case we can continue to use the
>> existing memory contexts, so nothing changes for existing uses, which
>> seems desirable. (This also appears to address some sporadic test
>> failures in PL/Perl.)
>>
>> I have also cleaned up the changes in portalmem.c further, so the
>> changes are now even smaller.
>>
>> The commit message in this patch contains more details about some of
>> these changes.
Generally looks good.
This confused me slightly:
+ Transactions cannot be ended inside loops through query results
or inside
+ blocks with exception handlers.
I suggest: "A transaction cannot be ended inside a loop over query
results, nor inside a block with exception handlers."
The patch has bitrotted slightly in src/backend/commands/portalcmds.c
The plperl expected file needs updating. Also, why does spi_commit() in
a loop result in an error message but not spi_rollback()?
cheers
andrew
--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services