Puedo ver la corriente search_pathcon:
show search_path ;Y puedo configurar el search_pathpara la sesión actual con:
set search_path = "$user", public, postgis;Además, puedo configurar permanentemente search_pathpara una base de datos dada con:
alter database mydb set search_path = "$user", public, postgis ;Y puedo configurar permanentemente search_pathun rol determinado (usuario) con:
alter role johnny set search_path = "$user", public, postgis ;Pero me gustaría saber cómo determinar cuáles son las bases de datos y las configuraciones de roles (con respecto a search_path) antes de modificarlas.
fuente

alter role myrole set search_path = "$user", public, postgis ;, noté quepg_roles.rolconfig(correspondiente a mi rol) obtuve el valor{"search_path=\"$user\", public, postgis"}. Además,select * from pg_db_role_setting ;ahora muestra una fila adicional. Y después de ejecutaralter database mydb set search_path = "$user", public, postgis ;, veo una fila correspondienteselect * from pg_db_role_setting ;; al final, no estoy seguro de cómo "deshacer" estos cambios.Las configuraciones permanentes para las bases de datos y los roles se almacenan en la tabla de todo el clúster del sistema pg_db_role_settings .
Solo las configuraciones alteradas están presentes. Si la ruta de búsqueda nunca se modificó para una base de datos o un rol, supongo que se puede suponer
"$user",public.El valor de la configuración antes de cualquier cambio, incluso a nivel de clúster (a través de la configuración global
postgresql.conf) se puede consultar desde la base de datos con:El valor de la configuración antes de cualquier cambio dentro de la sesión (a través del
SETcomando) se puede consultar desde la base de datos con:Cuando se establece un valor no predeterminado en
postgresql.conf, no es sencillo obtener ese valor en SQL independientemente de la sesión actual .pg_settings.boot_valno lo hará porque ignora los cambios en el archivo de configuración, ypg_settings.reset_valtampoco lo hará, porque está influenciado por la configuración de la base de datos / usuario potencialmente establecidaALTER USER/ALTER DATABASE. La forma más simple para que un DBA obtenga el valor es simplemente buscarlopostgresql.conf. De lo contrario, vea Restablecer ruta de búsqueda al valor predeterminado global del clúster que cubre este tema en detalle.fuente
boot_valrealmente el valor predeterminado de fábrica compilado, no la configuraciónpostgresql.conf?reset_vallugar deboot_val.reset_val. Me topé con esta vieja pregunta investigando esta reciente: dba.stackexchange.com/questions/145280/…Es cierto para postgres y Redshift. Esto parece demasiado simple en comparación con las respuestas anteriores que dependen
pg_db_role_setting, pero lauseconfigcolumna tendrá una lista de configuraciones de usuariosearch_path, incluida , formateada como una lista.pg_user La documentación de Postgres está aquí
Para ser más selectivo:
Creo que esta tabla de usuarios contiene todos los usuarios en el clúster, no solo db específico, pero no lo verifiqué.
fuente