Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uN6Lp-00BmtQ-OT for pgsql-general@arkaria.postgresql.org; Thu, 05 Jun 2025 08:53:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uN6Ln-0063Zf-TO for pgsql-general@arkaria.postgresql.org; Thu, 05 Jun 2025 08:53:28 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uN6Ln-0063ZX-J2 for pgsql-general@lists.postgresql.org; Thu, 05 Jun 2025 08:53:28 +0000 Received: from mail-oa1-x2f.google.com ([2001:4860:4864:20::2f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uN6Lm-000Lj9-04 for pgsql-general@postgresql.org; Thu, 05 Jun 2025 08:53:26 +0000 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-2d0920ce388so464923fac.0 for ; Thu, 05 Jun 2025 01:53:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749113605; x=1749718405; darn=postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=GyKovDC7MR5FyNuW3onGkUACO19GTazdTTB+gVxyuEY=; b=etSnI0YdxwF+hlPNQJeh9gvyuBb0j1Q65sb5kPVD6dMnFoPRhU4c7RuoY393bYrq88 iNECOT1oRz2h9r679j/996ep3IqKTIi+CZOMsVmas+zi/itrd0exn5vUQGVPLw6J+JQE DRqAlBe5sVcsmoiIEJ8dRscSVZpygsPHMRWCN8JlDBB/26B1IFqY+F1FiMq9sgRjE/qX gsO9DTgzcqcKVJ+aJ+opKkge89gi0cLLjvQ/RdRWpjDAcKTp+ag49IAPANj7eMhPUos3 tW4ACicNrYi6OoAJh2lTpWCiRMoWngYsEbBegac3A9zwLM/cD56PtdM6paFA8ptR0BcV 68yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749113605; x=1749718405; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GyKovDC7MR5FyNuW3onGkUACO19GTazdTTB+gVxyuEY=; b=pleaw4SF/BhNtv94ft0PoiigwKs/bHd4CSiFaCU3/uI71ijp80PfqFAWhtrYUqoF1I 4OBGqXi303e+Sj+Ld9/9sk2DmNB2NwogPwBKvJFF9FfM4KSjfWHDksL/G7y/RmH2vERl +zPtUwn4b5Ixan36caLEjJ7+sVFzrL+BJn+10/V7rUzQKKhEeIV71stGImrwmJ4aAT2w P1Xh9iHPk9Lbq7usdrcl3jfpIN9wvLywHBMHhsQxsHZdvqOi+3K8PiYOM3CaNkaGLx66 PxHBQRrrD0xcpa4pcmcoNOZ1vTqMt3XtF4yCuc8KcLDlix+IHIUw1gZFk5BftQ8bIlIa MDaQ== X-Gm-Message-State: AOJu0Yyd3PWjuF4c3Nig3ibHM4OB57+ocaLyDphaWtIyyPmykjb3HI5D 1GUy85Kn3zLTxq+K3K9WMyznXdAj7D4pK3MsLqy5PrMqYSaaIdzzfOckdXus1nRz2P5xPoadtxI VWnAnzWgSMtjw4DkaBrhZsjygBlJ9RMMHBzG2 X-Gm-Gg: ASbGncu6/Ot6iP036Gfa7vGf8OMDX7TMbMu+gl7cJL+Bl5OFeMsgivZCl9R3mdNV0xb WLBVj75NRxGZw8miOWJUdBCg1X+DY38TMb/EMZzQs8HskIfWZFoVi0HpIZRYM/qyIfaapDxk+8T KwWHYUo0h2uIKVuTZ2fU8TJlYGkddKDhcq9Aw= X-Google-Smtp-Source: AGHT+IHJa+Lgt4ZpRdedCJ65RLCUr3bJG79Txfxb9jYq1qSrA5eW3z2TlvOJ0MHZGihq6UYz43XvMag03RPhkJGIbag= X-Received: by 2002:a05:6870:808a:b0:2e4:c018:e5d7 with SMTP id 586e51a60fabf-2e9bf15718dmr3659137fac.3.1749113605149; Thu, 05 Jun 2025 01:53:25 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Dominique Devienne Date: Thu, 5 Jun 2025 10:53:14 +0200 X-Gm-Features: AX0GCFudVleCecICLwLxzdbXF6MtXdCkTs0MYKhjxMlSSZwkvT5ZzYR4QeQcQeU Message-ID: Subject: Re: LOCALE C.UTF-8 on EDB Windows v17 server To: Laurenz Albe Cc: pgsql-general@postgresql.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Thu, Jun 5, 2025 at 3:01=E2=80=AFAM Laurenz Albe wrote: > On Wed, 2025-06-04 at 14:23 +0200, Dominique Devienne wrote: > > The command I'm using (from a libpq trace) is: > > > > create database "dd_v168" encoding 'UTF8' locale 'C.UTF-8' > > locale_provider 'builtin' template template0 > > > > On Windows, I'm getting > > > > 2025-06-04 14:07:41.227419 B 155 ErrorResponse S "ERROR" V "ERROR" C > > "42809" M "invalid LC_COLLATE locale name: "C.UTF-8"" H "If the locale > > name is specific to ICU, use ICU_LOCALE." F "dbcommands.c" L "1057" R > > "createdb" \x00 > > Pilot error. If you use "LOCALE_PROVIDER builtin", you have to specify > BUILTIN LOCALE too: > > CREATE DATABASE b > TEMPLATE template0 > LOCALE_PROVIDER builtin > BUILTIN_LOCALE 'C.UTF-8' > /* used for aspects other than collation and character type */ > LOCALE 'C'; Thanks Laurenz. Indeed, Using LOCALE vs BUILTIN_LOCALE matters. On Linux, no error unlike on Windows (still inconsistent there IMHO), but the result is slightly different for datcollate and datctype (C vs en_U= S), while the same for datlocprovider and datlocale, what I looked at. Thus I kinda persist that there *is* a portability issue here. Also, note what the doc says: If locale_provider is builtin, then locale or builtin_locale must be specified and set to either C or C.UTF-8. It clearly says "locale or builtin_locale", emphasis on the OR. So two issues here. 1) the doc is wrong or misleading on this. 2) the same command works on Linux, but not Windows. FWIW. --DD C:\Users\ddevienne>psql service=3Dpau17 psql (17.4, server 17.5) ddevienne=3D> select version(); version ---------------------------------------------------------------------------= ------------------------------ PostgreSQL 17.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-26), 64-bit (1 row) ddevienne=3D> create database "dd_v168" encoding 'UTF8' locale 'C.UTF-8' ddevienne-> locale_provider 'builtin' template template0; CREATE DATABASE ddevienne=3D> select datlocprovider, datlocale, datcollate, datctype from pg_database where datname =3D 'dd_v168'; datlocprovider | datlocale | datcollate | datctype ----------------+-----------+------------+---------- b | C.UTF-8 | C.UTF-8 | C.UTF-8 (1 row) ddevienne=3D> create database "dd_v168b" encoding 'UTF8' builtin_locale 'C.= UTF-8' ddevienne-> locale_provider 'builtin' template template0; CREATE DATABASE ddevienne=3D> select datlocprovider, datlocale, datcollate, datctype from pg_database where datname =3D 'dd_v168b'; datlocprovider | datlocale | datcollate | datctype ----------------+-----------+-------------+------------- b | C.UTF-8 | en_US.UTF-8 | en_US.UTF-8 (1 row)