Options given both on cmd-line and in the config with different values
Hello hackers,
I'm trying to understand what is happening in the following bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=1935301
The upgrade process makes it a bit more difficult, but it seems to boil
down to this problem -- even when pg_ctl gets clear guidance where to
find datadir using -D option on the command-line, it forgets this
guidance once finding data_directory option in the postgresql.conf.
Is this the expected behavior actually? Or is the behavior in this case
(i.e. when the same option is specified on the cmd-line and also in the
datadir, with different values) defined at all?
(couldn't find it in the doc and even google does not return me anything
useful)
Thanks for any tips,
Honza
Honza Horak <hhorak@redhat.com> writes:
I'm trying to understand what is happening in the following bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=1935301
The upgrade process makes it a bit more difficult, but it seems to boil
down to this problem -- even when pg_ctl gets clear guidance where to
find datadir using -D option on the command-line, it forgets this
guidance once finding data_directory option in the postgresql.conf.
Is this the expected behavior actually?
The rule actually is that -D on the command line says where to find
the configuration file. While -D is then also the default for where
to find the data directory, the config file can override that by
giving data_directory explicitly.
This is intended to support situations where the config file is kept
outside the data directory for management reasons. If you are not
actively doing that, I'd recommend *not* setting data_directory
explicitly in the file.
While I've not studied the bug report carefully, it sounds like the
update process you're using involves copying the old config file
across verbatim. You'd at minimum need to filter out data_directory
and related settings to make that safe.
regards, tom lane
On 4/14/21 7:55 PM, Tom Lane wrote:
Honza Horak <hhorak@redhat.com> writes:
I'm trying to understand what is happening in the following bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=1935301The upgrade process makes it a bit more difficult, but it seems to boil
down to this problem -- even when pg_ctl gets clear guidance where to
find datadir using -D option on the command-line, it forgets this
guidance once finding data_directory option in the postgresql.conf.Is this the expected behavior actually?
The rule actually is that -D on the command line says where to find
the configuration file. While -D is then also the default for where
to find the data directory, the config file can override that by
giving data_directory explicitly.This is intended to support situations where the config file is kept
outside the data directory for management reasons. If you are not
actively doing that, I'd recommend *not* setting data_directory
explicitly in the file.While I've not studied the bug report carefully, it sounds like the
update process you're using involves copying the old config file
across verbatim. You'd at minimum need to filter out data_directory
and related settings to make that safe.
Thanks for explaining, it makes perfect sense. You're right that there
is some dbdata directory moving involved, so in that case removing
data_directory option from postgresql.conf makes sense.
Thanks,
Honza