Обсуждение: Does EXEC_BACKEND mode still need to propagate setlocale settings?
The recent bug report about CheckMyDatabase() failing to use pg_perm_setlocale() led me to look for other uses of setlocale() that might be wrong. I found two fishy calls in restore_backend_variables(). I am thinking though that the correct fix is to delete them and get rid of the overhead of transmitting the postmaster's setlocale settings to child processes this way. A regular backend is going to do CheckMyDatabase momentarily, and in any case it seems to me that the postmaster hasn't bothered to change these values off the system defaults and so there is no need to do anything special to inherit its values. Comments? regards, tom lane
Tom Lane wrote: > The recent bug report about CheckMyDatabase() failing to use > pg_perm_setlocale() led me to look for other uses of setlocale() that > might be wrong. I found two fishy calls in restore_backend_variables(). I just did the exact same thing but you beat me.. > I am thinking though that the correct fix is to delete them and get > rid of the overhead of transmitting the postmaster's setlocale settings > to child processes this way. A regular backend is going to do > CheckMyDatabase momentarily, and in any case it seems to me that the > postmaster hasn't bothered to change these values off the system defaults > and so there is no need to do anything special to inherit its values. Agreed. In EXEC_BACKEND case, main() sets them to the same system defaults before restore_backend_variables() is called. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes: > Tom Lane wrote: >> I am thinking though that the correct fix is to delete them and get >> rid of the overhead of transmitting the postmaster's setlocale settings >> to child processes this way. > Agreed. In EXEC_BACKEND case, main() sets them to the same system > defaults before restore_backend_variables() is called. Right. It would only matter if the postmaster changed them again later, but so far as I can see it does not. The most likely future change that would make it do so would be establishing GUC variables to control them, but we still wouldn't need a special mechanism to transmit the settings. Will go remove those calls. regards, tom lane