PostgreSQL: как сбросить параметр конфигурации?

postgresql.config: log_min_duration_statement = -1

Клиент А:

SELECT set_config('log_min_duration_statement', '30000', false);
SELECT current_setting('log_min_duration_statement');
-----
30s

Клиент Б:

SELECT current_setting('log_min_duration_statement');
-----
-1

Клиент B меняет postgresql.config: log_min_duration_statement = 60000

select pg_reload_conf();
SELECT current_setting('log_min_duration_statement');
---
1 min

===

Хорошо, как клиент A может сбросить свои настройки и использовать текущее значение параметра из файла postgresql.config без закрытия соединения? Т.е. клиент А делает

select pg_reload_conf(); 

но у него все еще есть ранее установленные 30-е годы

1 ответ

Решение

https://www.postgresql.org/docs/current/static/sql-reset.html

RESET - восстановить значение параметра времени выполнения до значения по умолчанию

просто

reset log_min_duration_statement

также https://www.postgresql.org/docs/current/static/functions-admin.html

set_config устанавливает параметр setting_name в новое_значение. Если is_local имеет значение true, новое значение будет применяться только к текущей транзакции. Если вы хотите, чтобы новое значение применялось к текущему сеансу, используйте вместо этого false. Функция соответствует SQL-команде SET.

Другими словами вам не нужно pg_reload_config() - потому что вы меняете настройки только на уровне сеанса. вам нужно перезагрузить только после изменения ponstgres.conf

та же ссылка выше:

pg_reload_conf() Заставить серверные процессы перезагружать свои файлы конфигурации

Другие вопросы по тегам