Robert Haas <robertmh...@gmail.com> writes:
> On Wed, Aug 30, 2017 at 9:20 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:
>> I"m okay with a narrow solution if SET ROLE really is
>> the only problem, but at this stage I'm not convinced of that.

> I don't think the problem with role is that it's catalog-dependent,
> but that the effective value is changed by code that never calls
> SetConfigOption() or set_config_option() or anything other mechanism
> that the GUC code knows about.

It's certainly possible that that's a contributing factor, but the
variant that Amit alluded to demonstrates that catalog dependency
is part of the problem:

regression=# create user testuser1;
CREATE ROLE
regression=# \c - testuser1
You are now connected to database "regression" as user "testuser1".

-- in a different session, do "drop user testuser1;", then:

regression=> show role;
 role 
------
 none
(1 row)

regression=> show session authorization;
 session_authorization 
-----------------------
 testuser1
(1 row)

regression=> select count(*) from pg_class;
 count 
-------
  1113
(1 row)

regression=> set force_parallel_mode TO 1;
SET
regression=> select count(*) from pg_class;      
ERROR:  role with OID 110981 does not exist
CONTEXT:  parallel worker
regression=> set force_parallel_mode TO 0;
SET
regression=> select count(*) from pg_class;
 count 
-------
  1113
(1 row)

The problem here is exactly that we cannot transmit the leader's
state to the worker.  You can't blame it on SET ROLE, because
I didn't do one.

                        regards, tom lane


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to