I wrote:
> ... In particular, I'm concerned that this patch will
> result in subtle changes in what settings get chosen during initdb.
OK, after reviewing the code a bit more I take that back --- initdb's
choices are entirely made within initdb.
However, I don't much like the choice to set LC_COLLATE and LC_CTYPE
differently. That seems to be risking weird behavior, and for what?
I'd be inclined to just remove the WIN32 stanza, initialize all
three of these variables with "", and explain it along the lines of
* In the postmaster, absorb the environment values for LC_COLLATE
* and LC_CTYPE. Individual backends will change these later to
* settings taken from pg_database, but the postmaster cannot do
* that. If we leave these set to "C" then message localization
* might not work well in the postmaster.
That ends up being no code change in main.c, except on Windows.
I concur that we can drop the transmission of LC_COLLATE and
LC_CTYPE via environment variables.
regards, tom lane