The following bug has been logged on the website:
Bug reference: 18545
Logged by: Andrey Rachitskiy
Email address: therealgofman@mail.ru
PostgreSQL version: 16.3
Operating system: Debian 12
Description:
\dt breaks transaction, calling error when executed in SET SESSION
AUTHORIZATION. This happens in two cases, with different SET.
Case one:
postgres@debian-test:~$ psql -U postgres
psql (16.3)
Type "help" for help.
postgres=# \set VERBOSITY verbose
postgres=# BEGIN;
BEGIN
postgres=*# CREATE USER regress_priv_user8;
CREATE ROLE
postgres=*# SET SESSION AUTHORIZATION regress_priv_user8;
SET
postgres=*> \dt+;
Did not find any relations.
postgres=*> SET LOCAL debug_parallel_query = 1;
SET
postgres=*> \dt+;
ERROR: 22023: role "regress_priv_user8" does not exist
CONTEXT: while setting parameter "session_authorization" to
"regress_priv_user8"
parallel worker
LOCATION: call_string_check_hook, guc.c:6734
postgres=!#
\q
Case two:
postgres@debian-test:~$ psql -U postgres
psql (16.3)
Type "help" for help.
postgres=# \set VERBOSITY verbose
postgres=# BEGIN;
BEGIN
postgres=*# CREATE USER regress_priv_user8;
CREATE ROLE
postgres=*# SET SESSION AUTHORIZATION regress_priv_user8;
SET
postgres=*> \dt+
Did not find any relations.
postgres=*> set local parallel_setup_cost = 0;
SET
postgres=*> set local min_parallel_table_scan_size = 0;
SET
postgres=*> \dt+
ERROR: 22023: role "regress_priv_user8" does not exist
CONTEXT: while setting parameter "session_authorization" to
"regress_priv_user8"
parallel worker
LOCATION: call_string_check_hook, guc.c:6734
postgres=!#
\q