pgsql: Fix createdb tests for C locale

Started by Peter Eisentrautalmost 4 years ago7 messagescomitters
Jump to latest
#1Peter Eisentraut
peter_e@gmx.net

Fix createdb tests for C locale

If the createdb tests run under the C locale, the database cluster
will be initialized with encoding SQL_ASCII. With the checks added in
c7db01e325a530ec38ec7ba57cd3ed32e123e33c, this will cause several
ICU-related tests to fail because SQL_ASCII is not supported by ICU.
To work around that, use initdb option -E UTF8 for those tests to get
past that check.

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/8135d0bd455217bd345090bae085b2bbcf62bdb0

Modified Files
--------------
src/bin/scripts/t/020_createdb.pl | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)

#2Christoph Berg
myon@debian.org
In reply to: Peter Eisentraut (#1)
Re: pgsql: Fix createdb tests for C locale

Re: Peter Eisentraut

Fix createdb tests for C locale

If the createdb tests run under the C locale, the database cluster
will be initialized with encoding SQL_ASCII. With the checks added in
c7db01e325a530ec38ec7ba57cd3ed32e123e33c, this will cause several
ICU-related tests to fail because SQL_ASCII is not supported by ICU.
To work around that, use initdb option -E UTF8 for those tests to get
past that check.

This seems to have broken 15 on apt.pg.o/Debian:

00:49:04 make[2]: Leaving directory '/<<PKGBUILDDIR>>/build/src/test/subscription'
00:49:04 make -C icu check
00:49:04 make[2]: Entering directory '/<<PKGBUILDDIR>>/build/src/test/icu'
00:49:04 echo "+++ tap check in src/test/icu +++" && rm -rf '/<<PKGBUILDDIR>>/build/src/test/icu'/tmp_check && /bin/mkdir -p '/<<PKGBUILDDIR>>/build/src/test/icu'/tmp_check && cd /<<PKGBUILDDIR>>/build/../src/test/icu && TESTDIR='/<<PKGBUILDDIR>>/build/src/test/icu' PATH="/<<PKGBUILDDIR>>/build/tmp_install/usr/lib/postgresql/15/bin:/<<PKGBUILDDIR>>/build/src/test/icu:$PATH" LD_LIBRARY_PATH="/<<PKGBUILDDIR>>/build/tmp_install/usr/lib/x86_64-linux-gnu" PGPORT='65432' PG_REGRESS='/<<PKGBUILDDIR>>/build/src/test/icu/../../../src/test/regress/pg_regress' /usr/bin/prove -I /<<PKGBUILDDIR>>/build/../src/test/perl/ -I /<<PKGBUILDDIR>>/build/../src/test/icu --verbose t/*.pl
00:49:04 +++ tap check in src/test/icu +++
00:49:06
00:49:06 # Failed test 'ICU locale must be specified for ICU provider: error message'
00:49:06 # at t/010_database.pl line 60.
00:49:06 # 'psql:<stdin>:1: ERROR: encoding "SQL_ASCII" is not supported with ICU provider'
00:49:06 # doesn't match '(?^:ERROR: ICU locale must be specified)'
00:49:06 # Looks like you failed 1 test of 5.
00:49:06 t/010_database.pl ..
00:49:06 ok 1 - sort by database default locale
00:49:06 ok 2 - sort by explicit collation standard
00:49:06 ok 3 - sort by explicit collation upper first
00:49:06 ok 4 - ICU locale must be specified for ICU provider: exit code not 0
00:49:06 not ok 5 - ICU locale must be specified for ICU provider: error message
00:49:06 1..5
00:49:06 Dubious, test returned 1 (wstat 256, 0x100)
00:49:06 Failed 1/5 subtests
00:49:06
00:49:06 Test Summary Report
00:49:06 -------------------
00:49:06 t/010_database.pl (Wstat: 256 Tests: 5 Failed: 1)
00:49:06 Failed test: 5
00:49:06 Non-zero exit status: 1
00:49:06 Files=1, Tests=5, 2 wallclock secs ( 0.02 usr 0.00 sys + 0.81 cusr 0.32 csys = 1.15 CPU)
00:49:06 Result: FAIL
00:49:06 make[2]: *** [Makefile:19: check] Error 1
00:49:06 make[2]: Leaving directory '/<<PKGBUILDDIR>>/build/src/test/icu'

https://pgdgbuild.dus.dg-i.net/job/postgresql-15-binaries-snapshot/194/architecture=amd64,distribution=sid/console

Christoph

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Christoph Berg (#2)
Re: pgsql: Fix createdb tests for C locale

Christoph Berg <myon@debian.org> writes:

This seems to have broken 15 on apt.pg.o/Debian:

Fails on RHEL8 too, if LANG=C.
OK if LANG=C.utf8.

(The lack of buildfarm complaints is distressing. Apparently
our coverage of ICU is very thin.)

regards, tom lane

#4Peter Eisentraut
peter_e@gmx.net
In reply to: Christoph Berg (#2)
Re: pgsql: Fix createdb tests for C locale

On 17.09.22 12:15, Christoph Berg wrote:

Re: Peter Eisentraut

Fix createdb tests for C locale

If the createdb tests run under the C locale, the database cluster
will be initialized with encoding SQL_ASCII. With the checks added in
c7db01e325a530ec38ec7ba57cd3ed32e123e33c, this will cause several
ICU-related tests to fail because SQL_ASCII is not supported by ICU.
To work around that, use initdb option -E UTF8 for those tests to get
past that check.

This seems to have broken 15 on apt.pg.o/Debian:

fixed

#5Peter Eisentraut
peter_e@gmx.net
In reply to: Tom Lane (#3)
Re: pgsql: Fix createdb tests for C locale

On 17.09.22 16:44, Tom Lane wrote:

Christoph Berg <myon@debian.org> writes:

This seems to have broken 15 on apt.pg.o/Debian:

Fails on RHEL8 too, if LANG=C.
OK if LANG=C.utf8.

(The lack of buildfarm complaints is distressing. Apparently
our coverage of ICU is very thin.)

This issue is with a combination of ICU and environment locale "C".
There is ICU coverage in the build farm, but apparently none with C
locale set.

#6Andres Freund
andres@anarazel.de
In reply to: Peter Eisentraut (#5)
Re: pgsql: Fix createdb tests for C locale

Hi,

On 2022-09-19 15:46:04 -0400, Peter Eisentraut wrote:

On 17.09.22 16:44, Tom Lane wrote:

Christoph Berg <myon@debian.org> writes:

This seems to have broken 15 on apt.pg.o/Debian:

Fails on RHEL8 too, if LANG=C.
OK if LANG=C.utf8.

(The lack of buildfarm complaints is distressing. Apparently
our coverage of ICU is very thin.)

This issue is with a combination of ICU and environment locale "C". There is
ICU coverage in the build farm, but apparently none with C locale set.

I could change the configuration of mylodon (Werror=cXX-extensions), serinus
(gcc snapshots) or calliphoridae (DDCOPY_PARSE_PLAN_TREES
-DRAW_EXPRESSION_COVERAGE_TEST ) to use LANG=C. I don't think it'd affect the
aspects they're otherwise testing.

Greetings,

Andres Freund

#7Andrew Dunstan
andrew@dunslane.net
In reply to: Peter Eisentraut (#5)
Re: pgsql: Fix createdb tests for C locale

On 2022-09-19 Mo 15:46, Peter Eisentraut wrote:

On 17.09.22 16:44, Tom Lane wrote:

Christoph Berg <myon@debian.org> writes:

This seems to have broken 15 on apt.pg.o/Debian:

Fails on RHEL8 too, if LANG=C.
OK if LANG=C.utf8.

(The lack of buildfarm complaints is distressing.  Apparently
our coverage of ICU is very thin.)

This issue is with a combination of ICU and environment locale "C".
There is ICU coverage in the build farm, but apparently none with C
locale set.

Yep, it's been like that for 5 years, ever since we added support for
the ICU collation test. See
<https://github.com/PGBuildFarm/client-code/blob/main/PGBuild/Modules/TestICU.pm&gt;
line 59:

    return unless $locale =~ /utf8/i;

We can change that of course, I'm open to suggestions.

cheers

andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com