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