* Alvaro Herrera ([EMAIL PROTECTED]) wrote: > Tom Lane wrote: > > 2007-06-28 22:02:14.418 EDT 2870 LOG: statement: begin; > > 2007-06-28 22:02:26.044 EDT 2870 LOG: statement: SAVEPOINT > > pg_psql_temporary_savepoint > > 2007-06-28 22:02:26.045 EDT 2870 LOG: statement: set local role tgl; > > 2007-06-28 22:02:26.047 EDT 2870 LOG: statement: RELEASE > > pg_psql_temporary_savepoint > > 2007-06-28 22:02:57.545 EDT 2870 LOG: statement: SAVEPOINT > > pg_psql_temporary_savepoint > > 2007-06-28 22:02:57.546 EDT 2870 LOG: statement: show role; > > 2007-06-28 22:02:57.548 EDT 2870 LOG: statement: RELEASE > > pg_psql_temporary_savepoint > > > > So actually, ON_ERROR_ROLLBACK breaks *any* use of SET LOCAL, not just > > ROLE. Not sure that this is fixable :-( > > Maybe if psql sees "SET LOCAL" it shouldn't send the RELEASE command. > But it seems a bit error prone to be finding each command that may be > affected by RELEASE ... what other thing do we have that works at the > level of subtransactions?
At the very least, anything which does work at the subtransaction level and not the transaction level should be documented as such... I don't see anything (perhaps I've missed it) in the 'set local' or the 'release savepoint' documentation which describes this behavior... :/ Perhaps I've misunderstood, but generally when we say 'transaction', we're meaning the a 'full' one and not a savepoint/release in the documentation. The 'SET LOCAL' documentation even talks explicitly about COMMIT and ROLLBACK being what causes a reset, RELEASE isn't mentioned. Thanks, Stephen
signature.asc
Description: Digital signature