Possible regression setting GUCs on \connect

David Steele <david@pgmasters.net>

From: David Steele <david@pgmasters.net>
To: Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2023-04-27T15:22:09Z
Lists: pgsql-hackers
Hackers,

I have been updating pgAudit for PG16 and ran into the following issue 
in the regression tests:

\connect - user1
WARNING:  permission denied to set parameter "pgaudit.log_level"

This happens after switching back and forth a few times between the 
current user when the regression script was executed and user1 which is 
created in the script. Specifically, it happens at [1].

I have tracked the issue down to context == PGC_USERSET for case 
PGC_SUSET in set_config_option_ext(). This GUC is PGC_SUSET so it seems 
like once it is set reloading it should not be an issue.

If the GUC is set again immediately before the \connect then there is no 
error, so it looks like the correct context is being lost somewhere 
along the way.

Before I get into serious debugging on this issue, I thought it would be 
good to bring it up in case the answer is obvious to someone else.

Thanks,
-David

[1] 
https://github.com/pgaudit/pgaudit/compare/dev-pg16-ci#diff-db4bb73982787fa1d07d4c9d80bc54028b8d2a52b80806f1352a42c42f00eaaaR604



Commits

  1. Revert "Add USER SET parameter values for pg_db_role_setting"

  2. Fix wrong construct_array_builtin() call in GUCArrayDelete()

  3. In hstore_plpython, avoid crashing when return value isn't a mapping.

  4. Allow granting SET and ALTER SYSTEM privileges on GUC parameters.