On Tue, Aug 6, 2024 at 10:57 AM Thomas Munro <thomas.munro@xxxxxxxxx> wrote:
On Mon, Aug 5, 2024 at 8:50 PM Sandeep Thakkar
<sandeep.thakkar@xxxxxxxxxxxxxxxx> wrote:
> This issue is seen only on v16 and not the back branches (tested on 15 and 14) and also confirmed by @Ertan Küçükoglu at https://github.com/EnterpriseDB/edb-installers/issues/127#issuecomment-2268371442
Does that mean you can reproduce the problem with initdb.exe directly
in a shell? That is, remove the EDB installer from the picture and
compare v15 and v16 with the exact command line options that
initcluster.vbs is using, or perhaps just:
initdb.exe --locale="Turkish,Türkiye" --encoding=UTF-8 -D pgdata
yes, here is the output:
c:\Program Files\PostgreSQL\16\bin>initdb.exe --encoding=UTF-8 -A scram-sha-256 -U postgres -D "c:\Program Files\PostgreSQL\16\data" --locale "Turkish,Türkiye" -W
The files belonging to this database system will be owned by user "sandeep".
This user must also own the server process.
The database cluster will be initialized with locale "Turkish_Türkiye.1254".
The default text search configuration will be set to "turkish".
Data page checksums are disabled.
Enter new superuser password:
Enter it again:
fixing permissions on existing directory c:/Program Files/PostgreSQL/16/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... windows
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... child process was terminated by exception 0xC0000409
initdb: removing contents of data directory "c:/Program Files/PostgreSQL/16/data"
. o O (Why does that locale name have a comma?) If v15 works and v16
breaks, perhaps you could try comparing the output with the attached
patch? It will give a hex dump of the contents of the locale name at
various points in the program, to see if/where it was corrupted, which
might also be a bit less confusing than looking at script output via
email (I don't even know how many onion layers of transcoding are
involved...)
here is the output:
v15:
v16:
v15:
c:\Program Files\PostgreSQL\15\bin>initdb.exe --encoding=UTF-8 -A scram-sha-256 -U postgres -D "c:\Program Files\PostgreSQL\15\data" --locale "Turkish,Türkiye" -W
XXX debug raw: getopt optarg = "Turkish,Türkiye"
XXX debug hex: getopt optarg = { 54 75 72 6b 69 73 68 2c 54 fc 72 6b 69 79 65 }
XXX debug txt: getopt optarg = { T u r k i s h , T ? r k i y e }
XXX debug raw: getopt optarg = "Turkish,Türkiye"
XXX debug hex: getopt optarg = { 54 75 72 6b 69 73 68 2c 54 fc 72 6b 69 79 65 }
XXX debug txt: getopt optarg = { T u r k i s h , T ? r k i y e }
The files belonging to this database system will be owned by user "sandeep".
This user must also own the server process.
XXX debug raw: setlocales lc_ctype = "Turkish,Türkiye"
XXX debug hex: setlocales lc_ctype = { 54 75 72 6b 69 73 68 2c 54 fc 72 6b 69 79 65 }
XXX debug txt: setlocales lc_ctype = { T u r k i s h , T ? r k i y e }
XXX debug raw: setlocales cannonname = "Turkish_Türkiye.1254"
XXX debug hex: setlocales cannonname = { 54 75 72 6b 69 73 68 5f 54 fc 72 6b 69 79 65 2e 31 32 35 34 }
XXX debug txt: setlocales cannonname = { T u r k i s h _ T ? r k i y e . 1 2 5 4 }
XXX debug raw: setup_locale_encoding = "Turkish_Türkiye.1254"
XXX debug hex: setup_locale_encoding = { 54 75 72 6b 69 73 68 5f 54 fc 72 6b 69 79 65 2e 31 32 35 34 }
XXX debug txt: setup_locale_encoding = { T u r k i s h _ T ? r k i y e . 1 2 5 4 }
The database cluster will be initialized with locale "Turkish_Türkiye.1254".
The default text search configuration will be set to "turkish".
Data page checksums are disabled.
Enter new superuser password:
Enter it again:
fixing permissions on existing directory c:/Program Files/PostgreSQL/15/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... windows
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
pg_ctl -D ^"c^:^\Program^ Files^\PostgreSQL^\15^\data^" -l logfile start
v16:
C:\Program Files\PostgreSQL\16\bin>initdb.exe --encoding=UTF-8 -A scram-sha-256 -U postgres -D "c:\Program Files\PostgreSQL\16\data" --locale "Turkish,Türkiye" -W XXX debug raw: getopt optarg = "Turkish,Türkiye" XXX debug hex: getopt optarg = { 54 75 72 6b 69 73 68 2c 54 fc 72 6b 69 79 65 } XXX debug txt: getopt optarg = { T u r k i s h , T ? r k i y e } XXX debug raw: getopt optarg = "Turkish,Türkiye" XXX debug hex: getopt optarg = { 54 75 72 6b 69 73 68 2c 54 fc 72 6b 69 79 65 } XXX debug txt: getopt optarg = { T u r k i s h , T ? r k i y e } The files belonging to this database system will be owned by user "Administrator". This user must also own the server process. XXX debug raw: setlocales lc_ctype = "Turkish,Türkiye" XXX debug hex: setlocales lc_ctype = { 54 75 72 6b 69 73 68 2c 54 fc 72 6b 69 79 65 } XXX debug txt: setlocales lc_ctype = { T u r k i s h , T ? r k i y e } XXX debug raw: setlocales cannonname = "Turkish_Türkiye.1254" XXX debug hex: setlocales cannonname = { 54 75 72 6b 69 73 68 5f 54 fc 72 6b 69 79 65 2e 31 32 35 34 } XXX debug txt: setlocales cannonname = { T u r k i s h _ T ? r k i y e . 1 2 5 4 } XXX debug raw: setup_locale_encoding = "Turkish_Türkiye.1254" XXX debug hex: setup_locale_encoding = { 54 75 72 6b 69 73 68 5f 54 fc 72 6b 69 79 65 2e 31 32 35 34 } XXX debug txt: setup_locale_encoding = { T u r k i s h _ T ? r k i y e . 1 2 5 4 } The database cluster will be initialized with locale "Turkish_Türkiye.1254". The default text search configuration will be set to "turkish". Data page checksums are disabled. Enter new superuser password: Enter it again: fixing permissions on existing directory c:/Program Files/PostgreSQL/16/data ... ok creating subdirectories ... ok selecting dynamic shared memory implementation ... windows selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting default time zone ... UTC creating configuration files ... ok running bootstrap script ... ok performing post-bootstrap initialization ... child process was terminated by exception 0xC0000409 initdb: removing contents of data directory "c:/Program Files/PostgreSQL/16/data"
Sandeep Thakkar