Thread: pg_reload_conf()

pg_reload_conf()

From
Marc Millas
Date:
Hi,



maybe I am missing something...

with superuser rights, on a postgres 14 and postgres 15 version:
select  setting, boot_val, reset_val from pg_settings where name='log_connections';
off off off
alter system set log_connections to 'on';
select  setting, boot_val, reset_val from pg_settings where name='log_connections';
off off off
... strange
select pg_reload_conf();
t
select  setting, boot_val, reset_val from pg_settings where name='log_connections';
off off off

very strange.

cat postgresql.auto.conf
log_connections = 'on'

obviously, if I stop and restart the DB,
select  setting, boot_val, reset_val from pg_settings where name='log_connections';
on off on

So, I am perplexed: what pg_reload_conf() is doing/not doing ?

thanks


Marc MILLAS
Senior Architect
+33607850334

Re: pg_reload_conf()

From
Adrian Klaver
Date:
On 2/20/23 08:57, Marc Millas wrote:
> select  setting, boot_val, reset_val from pg_settings where 
> name='log_connections';

# select  setting, boot_val, reset_val, context from pg_settings where 
name='log_connections';
  setting | boot_val | reset_val |      context
---------+----------+-----------+-------------------
  on      | off      | on        | superuser-backend


https://www.postgresql.org/docs/15/view-pg-settings.html

There are several possible values of context. In order of decreasing 
difficulty of changing the setting, they are:


...

superuser-backend

     Changes to these settings can be made in postgresql.conf without 
restarting the server. They can also be set for a particular session in 
the connection request packet (for example, via libpq's PGOPTIONS 
environment variable), but only if the connecting user is a superuser or 
has been granted the appropriate SET privilege. However, these settings 
never change in a session after it is started. If you change them in 
postgresql.conf, send a SIGHUP signal to the postmaster to cause it to 
re-read postgresql.conf. The new values will only affect 
subsequently-launched sessions.

...
-- 
Adrian Klaver
adrian.klaver@aklaver.com




Re: pg_reload_conf()

From
"David G. Johnston"
Date:
On Mon, Feb 20, 2023 at 9:57 AM Marc Millas <marc.millas@mokadb.com> wrote:

select pg_reload_conf();
t

So, I am perplexed: what pg_reload_conf() is doing/not doing ?

It is sending a signal and stating success that said signal was sent.

David J.

Re: pg_reload_conf()

From
Marc Millas
Date:
Thanks Adrian,

the fact that the changes are visible only by the new backend, and NOT by the backend which did the changes was what I did missed.

Marc MILLAS
Senior Architect
+33607850334



On Mon, Feb 20, 2023 at 6:01 PM Adrian Klaver <adrian.klaver@aklaver.com> wrote:
On 2/20/23 08:57, Marc Millas wrote:
> select  setting, boot_val, reset_val from pg_settings where
> name='log_connections';

# select  setting, boot_val, reset_val, context from pg_settings where
name='log_connections';
  setting | boot_val | reset_val |      context
---------+----------+-----------+-------------------
  on      | off      | on        | superuser-backend


https://www.postgresql.org/docs/15/view-pg-settings.html

There are several possible values of context. In order of decreasing
difficulty of changing the setting, they are:


...

superuser-backend

     Changes to these settings can be made in postgresql.conf without
restarting the server. They can also be set for a particular session in
the connection request packet (for example, via libpq's PGOPTIONS
environment variable), but only if the connecting user is a superuser or
has been granted the appropriate SET privilege. However, these settings
never change in a session after it is started. If you change them in
postgresql.conf, send a SIGHUP signal to the postmaster to cause it to
re-read postgresql.conf. The new values will only affect
subsequently-launched sessions.

...
--
Adrian Klaver
adrian.klaver@aklaver.com