On Tue, Aug 6, 2024 at 10:57 AM Thomas Munro <thomas.mu...@gmail.com> wrote:
> On Mon, Aug 5, 2024 at 8:50 PM Sandeep Thakkar > <sandeep.thak...@enterprisedb.com> 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: 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