ALTER ROLE SET 设置位置
ALTER ROLE SET settings location
我一直在浏览有关设置 PG 参数的文档。我了解 postgresql.conf
和 postgresql.auto.conf
的行为,尤其是 ALTER SYSTEM
变体和这些集群范围默认值的 SUPERUSER
要求。
我最近发现 ALTER ROLE SET
允许普通用户设置 USER 上下文设置并持久化它们(更改首先在下次登录时看到,并且仅在登录时更新)。这些值正确地没有出现在上面的 .conf
文件中 - 但它们必须保存在某个地方,因为它们会持续存在于未来的会话中。 pg_settings
确实反映了登录后设置列中的更改,但来源仍然是用户,因此无法判断它来自 ROLE 上的持久值而不是某些会话持续时间设置。
这些 ALTER ROLE SET
值保存在哪里?如果 ALTER ROLE SET
执行,是否保证如果服务器重新启动或 PITR'd 此更改保留?为什么源不反映 'role' 之类的东西来区分?
此信息保存在 pg_db_role_setting
目录中。
因此,这些更改是持久的。
pg_settings
会将 source
显示为 user
,这是您需要的所有信息,因为它必须在 current_user
.
上设置
我一直在浏览有关设置 PG 参数的文档。我了解 postgresql.conf
和 postgresql.auto.conf
的行为,尤其是 ALTER SYSTEM
变体和这些集群范围默认值的 SUPERUSER
要求。
我最近发现 ALTER ROLE SET
允许普通用户设置 USER 上下文设置并持久化它们(更改首先在下次登录时看到,并且仅在登录时更新)。这些值正确地没有出现在上面的 .conf
文件中 - 但它们必须保存在某个地方,因为它们会持续存在于未来的会话中。 pg_settings
确实反映了登录后设置列中的更改,但来源仍然是用户,因此无法判断它来自 ROLE 上的持久值而不是某些会话持续时间设置。
这些 ALTER ROLE SET
值保存在哪里?如果 ALTER ROLE SET
执行,是否保证如果服务器重新启动或 PITR'd 此更改保留?为什么源不反映 'role' 之类的东西来区分?
此信息保存在 pg_db_role_setting
目录中。
因此,这些更改是持久的。
pg_settings
会将 source
显示为 user
,这是您需要的所有信息,因为它必须在 current_user
.