ALTER ROLE SET 设置位置

ALTER ROLE SET settings location

我一直在浏览有关设置 PG 参数的文档。我了解 postgresql.confpostgresql.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.

上设置