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
SETcommand) 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_valwon't do because it ignores changes in the configuration file, andpg_settings.reset_valwon'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.