The permanent settings for both databases and roles are stored in the pg_db_role_settings system cluster-wide table.
Only settings passed to ALTER USER
and ALTER DATABASE
are present in this table. To get at the values that are configured aside from these commands:
The value of the setting prior to any change, including at the cluster level (through the global configuration
postgresql.conf
) can be queried from the database with:SELECT boot_val FROM pg_settings WHERE name='search_path';
The value of the setting prior to any change within the session (through the
SET
command) can be queried from the database with:SELECT reset_val FROM pg_settings WHERE name='search_path';
When it's set a non-default value in
postgresql.conf
, it's not straightforward to obtain that value in SQL independently of the current session.pg_settings.boot_val
won't do because it ignores changes in the configuration file, andpg_settings.reset_val
won't either, because it's influenced by the database/user settings potentially set throughALTER USER/ALTER DATABASE
. The simplest way for a DBA to get the value is to just look it up inpostgresql.conf
. Otherwise, seeReset search_path to the global, cluster default which covers this topic in detail.