Stephen Frost <[EMAIL PROTECTED]> writes:
> * Tom Lane ([EMAIL PROTECTED]) wrote:
>> I cannot duplicate the behavior you show, in either HEAD or 8.2.

> Wow.  Okay, this is more interesting.  It has some interaction with:
> \set ON_ERROR_ROLLBACK 'on'
> in my .psqlrc.  If I remove that, then it works as expected.

Ah.  log_statement = all tells the tale:

regression=# set log_statement='all';
SET
regression=# \set ON_ERROR_ROLLBACK 'on'
regression=# begin;
BEGIN
regression=# set local role tgl;
SET
regression=# show role;
 role 
------
 none
(1 row)

regression=# 

and the postmaster log has

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 :-(

                        regards, tom lane

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

Reply via email to