The following bug has been logged on the website:
Bug reference: 17487
Logged by: Kirill Kravtsov
Email address: kravtsov.k@gmail.com
PostgreSQL version: 14.3
Operating system: Centos 7
Description:
We're using temporary credentials to access the DB. The temporary
credentials are granted a role and automatically become that role on
connect. As soon as temporary credential is removed while the connection is
still alive, any regular query would continue to work, however, a parallel
query would cause an error:
ERROR: role with OID XXXXXX does not exist
CONTEXT: parallel worker
Reproduction steps:
Session 1 (postgres):
$ psql -U postgres
create role testparallelrole;
create role testparalleluser with login password '1';
grant testparallelrole to testparalleluser;
alter role testparalleluser set role testparallelrole;
Session 2 (testparalleluser):
$ psql -U testparalleluser -d postgres;
show role; -- shows testparallelrole
set force_parallel_mode TO 1;
select count(*) from pg_class ; -- ok
Session 1 (postgres):
drop role testparalleluser;
Session 2 (testparalleluser):
set force_parallel_mode TO 0;
select count(*) from pg_class ; -- ok
set force_parallel_mode TO 1;
select count(*) from pg_class ; -- fails