Обсуждение: how to run encoding-dependent tests by default

Поиск
Список
Период
Сортировка

how to run encoding-dependent tests by default

От
Peter Eisentraut
Дата:
There is a fair amount of collation-related functionality that is only
being tested by sql/collate.icu.utf8.sql and sql/collate.linux.utf8.sql,
which are not run by default.  There is more functionality planned in
this area, so making the testing more straightforward would be useful.

The reason these tests cannot be run by default (other than that they
don't apply to each build, which is easy to figure out) is that

a) They contain UTF8 non-ASCII characters that might not convert to
every server-side encoding, and

b) The error messages mention the encoding name ('ERROR:  collation
"foo" for encoding "UTF8" does not exist')

The server encoding can be set more-or-less arbitrarily for each test
run, and moreover it is computed from the locale, so it's not easy to
determine ahead of time from a makefile, say.

What would be a good way to sort this out?  None of these problems are
terribly difficult on their own, but I'm struggling to come up with a
coherent solution.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Re: how to run encoding-dependent tests by default

От
Tom Lane
Дата:
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
> There is a fair amount of collation-related functionality that is only
> being tested by sql/collate.icu.utf8.sql and sql/collate.linux.utf8.sql,
> which are not run by default.  There is more functionality planned in
> this area, so making the testing more straightforward would be useful.
> The reason these tests cannot be run by default (other than that they
> don't apply to each build, which is easy to figure out) is that
> a) They contain UTF8 non-ASCII characters that might not convert to
> every server-side encoding, and
> b) The error messages mention the encoding name ('ERROR:  collation
> "foo" for encoding "UTF8" does not exist')
> The server encoding can be set more-or-less arbitrarily for each test
> run, and moreover it is computed from the locale, so it's not easy to
> determine ahead of time from a makefile, say.

> What would be a good way to sort this out?  None of these problems are
> terribly difficult on their own, but I'm struggling to come up with a
> coherent solution.

Perhaps set up a separate test run (not part of the core tests) in which
the database is forced to have UTF8 encoding?  That could be expanded
to other encodings too if anyone cares.

            regards, tom lane



Re: how to run encoding-dependent tests by default

От
Andrew Dunstan
Дата:
On 6/17/19 11:32 AM, Tom Lane wrote:
> Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
>> There is a fair amount of collation-related functionality that is only
>> being tested by sql/collate.icu.utf8.sql and sql/collate.linux.utf8.sql,
>> which are not run by default.  There is more functionality planned in
>> this area, so making the testing more straightforward would be useful.
>> The reason these tests cannot be run by default (other than that they
>> don't apply to each build, which is easy to figure out) is that
>> a) They contain UTF8 non-ASCII characters that might not convert to
>> every server-side encoding, and
>> b) The error messages mention the encoding name ('ERROR:  collation
>> "foo" for encoding "UTF8" does not exist')
>> The server encoding can be set more-or-less arbitrarily for each test
>> run, and moreover it is computed from the locale, so it's not easy to
>> determine ahead of time from a makefile, say.
>> What would be a good way to sort this out?  None of these problems are
>> terribly difficult on their own, but I'm struggling to come up with a
>> coherent solution.
> Perhaps set up a separate test run (not part of the core tests) in which
> the database is forced to have UTF8 encoding?  That could be expanded
> to other encodings too if anyone cares.
>
>             



I should point out that the buildfarm does run these tests for every
utf8 locale it's configured for if the TestICU module is enabled. At the
moment the only animal actually running those tests is prion, for
en_US.utf8.


cheers


andrew


-- 
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




Re: how to run encoding-dependent tests by default

От
Andres Freund
Дата:
Hi,

On 2019-06-17 16:56:00 +0200, Peter Eisentraut wrote:
> There is a fair amount of collation-related functionality that is only
> being tested by sql/collate.icu.utf8.sql and sql/collate.linux.utf8.sql,
> which are not run by default.  There is more functionality planned in
> this area, so making the testing more straightforward would be useful.
> 
> The reason these tests cannot be run by default (other than that they
> don't apply to each build, which is easy to figure out) is that
> 
> a) They contain UTF8 non-ASCII characters that might not convert to
> every server-side encoding, and
> 
> b) The error messages mention the encoding name ('ERROR:  collation
> "foo" for encoding "UTF8" does not exist')
> 
> The server encoding can be set more-or-less arbitrarily for each test
> run, and moreover it is computed from the locale, so it's not easy to
> determine ahead of time from a makefile, say.
> 
> What would be a good way to sort this out?  None of these problems are
> terribly difficult on their own, but I'm struggling to come up with a
> coherent solution.

I wonder if using alternative output files and psql's \if could be good
enough here. It's not that hard to maintain an alternative output file
if it's nearly empty.

Basically something like:

\gset SELECT my_encodings_are_compatible() AS compatible
\if :compatible
test;
contents;
\endif

That won't get rid of b) in its entirety, but even just running the test
automatically on platforms it works without problems would be an
improvement.

We probably also could just have a wrapper function in those tests that
catch the exception and print a more anodyne message.

Greetings,

Andres Freund



Re: how to run encoding-dependent tests by default

От
Peter Eisentraut
Дата:
On 2019-06-17 18:39, Andres Freund wrote:
> Basically something like:
> 
> \gset SELECT my_encodings_are_compatible() AS compatible
> \if :compatible
> test;
> contents;
> \endif

Cool, that works out quite well.  See attached patch.  I flipped the
logic around to make it \quit if not compatible.  That way the
alternative expected file is shorter and doesn't need to be updated all
the time.  But it gets the job done either way.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Вложения

Re: how to run encoding-dependent tests by default

От
Peter Eisentraut
Дата:
On 2019-06-23 21:44, Peter Eisentraut wrote:
> On 2019-06-17 18:39, Andres Freund wrote:
>> Basically something like:
>>
>> \gset SELECT my_encodings_are_compatible() AS compatible
>> \if :compatible
>> test;
>> contents;
>> \endif
> 
> Cool, that works out quite well.  See attached patch.  I flipped the
> logic around to make it \quit if not compatible.  That way the
> alternative expected file is shorter and doesn't need to be updated all
> the time.  But it gets the job done either way.

Small patch update: The collate.linux.utf8 test also needs to check in a
similar manner that all the locales it is using are installed.  This
should get the cfbot run passing.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Вложения

Re: how to run encoding-dependent tests by default

От
Tom Lane
Дата:
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
>> Cool, that works out quite well.  See attached patch.  I flipped the
>> logic around to make it \quit if not compatible.  That way the
>> alternative expected file is shorter and doesn't need to be updated all
>> the time.  But it gets the job done either way.

I took a look at this and did some light testing.  It seems to work
as advertised, but I do have one gripe, which is the dependency on
the EXTRA_TESTS mechanism.  There are a few things not to like about
doing it that way:

* need additional hacking for Windows (admittedly, moot for
collate.linux.utf8, but I hope it's not for collate.icu.utf8).

* can't put these tests into a parallel group, they run by themselves;

* if user specifies EXTRA_TESTS on make command line, that overrides
the Makefile so these tests aren't run.

So I wish we could get rid of the Makefile changes, have the test
scripts be completely responsible for whether to run themselves or
not, and put them into the schedule files normally.

It's pretty obvious how we might do this for collate.icu.utf8:
make it look to see if there are any ICU-supplied collations in
pg_collation.

I'm less clear on a reasonable way to detect a glibc platform
from SQL.  The best I can think of is to see if the string
"linux" appears in the output of version(), and that's probably
none too robust.  Can we do anything based on the content of
pg_collation?  Probably not :-(.

Still, even if you only fixed collate.icu.utf8 this way, that
would be a step forward since it would solve the Windows aspect.

            regards, tom lane



Re: how to run encoding-dependent tests by default

От
Tom Lane
Дата:
I wrote:
> I'm less clear on a reasonable way to detect a glibc platform
> from SQL.  The best I can think of is to see if the string
> "linux" appears in the output of version(), and that's probably
> none too robust.  Can we do anything based on the content of
> pg_collation?  Probably not :-(.

Actually, scraping the buildfarm database suggests that checking
version() for "linux" or even "linux-gnu" would work very well.

            regards, tom lane

    sysname    |      snapshot       |
l                                                                                     

---------------+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 alabio        | 2019-07-27 16:00:08 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit" 
 alewife       | 2019-07-28 08:43:19 | #define PG_VERSION_STR "PostgreSQL 13devel on s390x-ibm-linux-gnu, compiled by
gcc(SUSE Linux) 4.8.5, 64-bit" 
 anole         | 2019-07-28 09:31:14 | #define PG_VERSION_STR "PostgreSQL 13devel on ia64-hp-hpux11.31, compiled by cc,
64-bit"
 aye-aye       | 2019-07-27 19:01:09 | #define PG_VERSION_STR "PostgreSQL 13devel on s390x-ibm-linux-gnu, compiled by
gcc(GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit" 
 ayu           | 2019-07-27 21:43:27 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby clang version 4.0.1-10~deb9u2 (tags/RELEASE_401/final), 64-bit" 
 batfish       | 2019-07-16 18:57:42 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby clang version 5.0.0-3~16.04.1 (tags/RELEASE_500/final), 64-bit" 
 blenny        | 2019-07-27 21:53:19 | #define PG_VERSION_STR "PostgreSQL 13devel on s390x-ibm-linux-gnu, compiled by
gcc(Debian 8.3.0-19) 8.3.0, 64-bit" 
 bonito        | 2019-07-27 22:22:23 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (GCC) 8.2.1 20181215 (Red Hat 8.2.1-6), 64-bit" 
 brotula       | 2019-05-30 03:01:02 | #define PG_VERSION_STR "PostgreSQL 12beta1 on powerpc64le-unknown-linux-gnu,
compiledby clang version 3.8.1-24 (tags/RELEASE_381/final), 64-bit" 
 bufflehead    | 2019-07-27 20:22:17 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (SUSE Linux) 4.8.5, 64-bit" 
 buri          | 2019-07-27 23:00:48 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit" 
 butterflyfish | 2019-07-28 12:00:13 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 6.3.0, 64-bit" 
 caiman        | 2019-07-22 19:34:03 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 9.1.1 20190605 (Red Hat 9.1.1-2), 64-bit" 
 calliphoridae | 2019-07-28 07:30:07 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 8.3.0-19) 8.3.0, 64-bit" 
 cardinalfish  | 2019-07-01 02:18:58 | #define PG_VERSION_STR "PostgreSQL 12beta2 on powerpc64le-unknown-linux-gnu,
compiledby clang version 7.0.1-8 (tags/RELEASE_701/final), 64-bit" 
 cavefish      | 2019-07-28 03:22:31 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0, 64-bit" 
 chimaera      | 2019-07-28 01:22:22 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit" 
 chipmunk      | 2019-07-27 19:52:25 | #define PG_VERSION_STR "PostgreSQL 13devel on armv6l-unknown-linux-gnueabihf,
compiledby gcc (Debian 4.6.3-14+rpi1) 4.6.3, 32-bit" 
 chromis       | 2019-07-28 00:54:52 | #define PG_VERSION_STR "PostgreSQL 13devel on s390x-ibm-linux-gnu, compiled by
clangversion 7.0.1-8 (tags/RELEASE_701/final), 64-bit" 
 chub          | 2019-07-28 15:10:01 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64-unknown-linux-gnu,
compiledby gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit" 
 clam          | 2019-07-28 15:28:15 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (GCC) 5.2.1 20151016 (Advance-Toolchain-) [ibm/gcc-5-branch, revision: 229493 merged from gcc-5-branch,
revision228917], 64-bit" 
 cobia         | 2019-05-16 11:43:59 | #define PG_VERSION_STR "PostgreSQL 12devel on s390x-ibm-linux-gnu, compiled by
gcc(Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit" 
 conchuela     | 2019-07-28 10:00:00 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-dragonfly4.4,
compiledby gcc 5.2.1 [DragonFly] Release/2015-07-18, 64-bit" 
 coypu         | 2019-07-10 03:35:55 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc-unknown-netbsd8.0,
compiledby gcc (nb2 20180327) 5.5.0, 32-bit" 
 crake         | 2019-07-28 14:17:29 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 8.3.1 20190223 (Red Hat 8.3.1-2), 64-bit" 
 culicidae     | 2019-07-28 07:30:07 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 8.3.0-19) 8.3.0, 64-bit" 
 cuon          | 2019-07-28 06:43:30 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (Ubuntu/IBM 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609, 64-bit" 
 curculio      | 2019-07-28 10:30:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-openbsd5.9,
compiledby gcc (GCC) 4.2.1 20070719 , 64-bit" 
 damselfly     | 2019-07-28 10:00:31 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-solaris2.11, compiled by
gcc(GCC) 4.7.3, 64-bit" 
 dangomushi    | 2019-07-27 17:13:42 | #define PG_VERSION_STR "PostgreSQL 13devel on armv7l-unknown-linux-gnueabihf,
compiledby clang version 8.0.1 (tags/RELEASE_801/final), 32-bit" 
 danio         | 2019-05-15 17:59:06 | #define PG_VERSION_STR "PostgreSQL 12devel on s390x-ibm-linux-gnu, compiled by
gcc(Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609, 64-bit" 
 demoiselle    | 2019-07-28 14:22:33 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby clang version 5.0.1 (tags/RELEASE_501/final 312548), 64-bit" 
 desmoxytes    | 2019-07-28 07:24:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc-7(Debian 7.4.0-10) 7.4.0, 64-bit" 
 devario       | 2019-07-01 14:09:27 | #define PG_VERSION_STR "PostgreSQL 12beta2 on powerpc64le-unknown-linux-gnu,
compiledby gcc (Debian 8.3.0-6) 8.3.0, 64-bit" 
 dhole         | 2019-07-28 04:43:29 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit" 
 dragonet      | 2019-07-28 07:24:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
clangversion 3.9.1-19+b1 (tags/RELEASE_391/rc2), 64-bit" 
 dromedary     | 2019-07-28 07:27:32 | #define PG_VERSION_STR "PostgreSQL 13devel on i386-apple-darwin10.8.0, compiled
byi686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3), 32-bit" 
 eelpout       | 2019-07-28 07:23:13 | #define PG_VERSION_STR "PostgreSQL 13devel on aarch64-unknown-linux-gnu,
compiledby gcc (Debian 8.3.0-2) 8.3.0, 64-bit" 
 elasmobranch  | 2019-07-28 02:22:28 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812], 64-bit" 
 elver         | 2019-07-28 07:23:10 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-freebsd11.2,
compiledby FreeBSD clang version 6.0.0 (tags/RELEASE_600/final 326565) (based on LLVM 6.0.0), 64-bit" 
 eulachon      | 2019-05-16 14:44:06 | #define PG_VERSION_STR "PostgreSQL 12devel on s390x-ibm-linux-gnu, compiled by
gcc(Ubuntu 7.3.0-16ubuntu3) 7.3.0, 64-bit" 
 filefish      | 2019-07-28 08:30:11 | #define PG_VERSION_STR "PostgreSQL 13devel on s390x-ibm-linux-gnu, compiled by
gcc(SUSE Linux) 7.3.1 20180323 [gcc-7-branch revision 258812], 64-bit" 
 fingerfish    | 2019-05-20 09:01:22 | #define PG_VERSION_STR "PostgreSQL 12devel on s390x-ibm-linux-gnu, compiled by
gcc(GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit" 
 flaviventris  | 2019-07-28 08:00:06 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 20190719-1) 10.0.0 20190718 (experimental) [trunk revision 273586], 64-bit" 
 flier         | 2019-07-28 04:34:17 | #define PG_VERSION_STR "PostgreSQL 13devel on aarch64-unknown-linux-gnu,
compiledby clang version 6.0.1 (tags/RELEASE_601/final 335528), 64-bit" 
 francolin     | 2019-07-28 07:59:24 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 8.3.0-19) 8.3.0, 64-bit" 
 friarbird     | 2019-07-27 05:20:00 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-freebsd9.0,
compiledby cc (GCC) 4.2.1 20070831 patched [FreeBSD], 64-bit" 
 frogfish      | 2019-07-27 14:49:49 | #define PG_VERSION_STR "PostgreSQL 13devel on mips64-unknown-linux-gnuabi64,
compiledby gcc (Debian 4.6.3-14) 4.6.3, 64-bit" 
 fulmar        | 2019-06-17 21:15:14 | #define PG_VERSION_STR "PostgreSQL 12beta2 on x86_64-pc-linux-gnu, compiled by
icc(ICC) 14.0.3 20140422, 64-bit" 
 gadwall       | 2019-07-28 11:22:36 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final), 64-bit" 
 gaur          | 2019-07-22 19:19:57 | #define PG_VERSION_STR "PostgreSQL 13devel on hppa2.0-hp-hpux10.20, compiled by
gcc(GCC) 3.4.6, 32-bit" 
 gharial       | 2019-07-28 00:38:15 | #define PG_VERSION_STR "PostgreSQL 13devel on ia64-hp-hpux11.31, compiled by gcc
(GCC)4.6.0, 64-bit" 
 grison        | 2019-07-28 10:00:02 | #define PG_VERSION_STR "PostgreSQL 13devel on armv7l-unknown-linux-gnueabihf,
compiledby gcc (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516, 32-bit" 
 grouse        | 2019-07-10 09:08:46 | #define PG_VERSION_STR "PostgreSQL 13devel on s390x-ibm-linux-gnu, compiled by
gcc(GCC) 4.4.7 20120313 (Red Hat 4.4.7-18), 64-bit" 
 guaibasaurus  | 2019-07-28 08:17:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit" 
 gull          | 2019-07-27 09:48:01 | #define PG_VERSION_STR "PostgreSQL 13devel on armv7l-unknown-linux-gnueabihf,
compiledby clang version 8.0.0 (tags/RELEASE_800/final), 32-bit" 
 handfish      | 2019-07-24 00:20:51 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 9.1.1 20190503 (Red Hat 9.1.1-1), 64-bit" 
 hornet        | 2019-07-28 08:12:30 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc-ibm-aix7.1.3.0, compiled
byxlc_r -qmaxmem=33554432 -D_LARGE_FILES=1 , 64-bit" 
 hyrax         | 2019-07-25 05:42:16 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
Debianclang version 3.5.0-10 (tags/RELEASE_350/final) (based on LLVM 3.5.0), 64-bit" 
 idiacanthus   | 2019-07-28 07:24:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
clangversion 5.0.2-2 (tags/RELEASE_502/final), 64-bit" 
 jacana        | 2019-07-28 12:00:32 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-w64-mingw32, compiled by
x86_64-w64-mingw32-gcc.exe(x86_64-win32-sjlj-rev0, Built by MinGW-W64 project) 7.3.0, 64-bit" 
 jaguarundi    | 2019-07-27 18:11:00 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-freebsd12.0,
compiledby FreeBSD clang version 6.0.1 (tags/RELEASE_601/final 335540) (based on LLVM 6.0.1), 64-bit" 
 komodoensis   | 2019-07-28 07:24:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc-7(Debian 7.4.0-10) 7.4.0, 64-bit" 
 koreaceratops | 2019-06-22 07:36:21 | #define PG_VERSION_STR "PostgreSQL 12beta2 on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 4.4.7 20120313 (Red Hat 4.4.7-18), 64-bit" 
 lapwing       | 2019-07-28 08:40:06 | #define PG_VERSION_STR "PostgreSQL 13devel on i686-pc-linux-gnu, compiled by gcc
(Debian4.7.2-5) 4.7.2, 32-bit" 
 leech         | 2019-06-07 09:01:31 | #define PG_VERSION_STR "PostgreSQL 12beta1 on x86_64-pc-linux-gnu, compiled by
icc(ICC) 14.0.3 20140422, 64-bit" 
 loach         | 2019-07-28 10:15:00 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-freebsd10.3,
compiledby FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512, 64-bit" 
 locust        | 2019-07-28 08:14:37 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc-apple-darwin9.8.0,
compiledby powerpc-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5493), 32-bit" 
 longfin       | 2019-07-28 07:29:04 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-apple-darwin18.6.0,
compiledby Apple LLVM version 10.0.1 (clang-1001.0.46.4), 64-bit" 
 lorikeet      | 2019-07-28 08:28:49 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-cygwin, compiled by gcc
(GCC)5.4.0, 64-bit" 
 lousyjack     | 2019-07-28 07:33:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 7.3.1 20180303 (Red Hat 7.3.1-5), 64-bit" 
 lumpsucker    | 2019-07-27 20:49:07 | #define PG_VERSION_STR "PostgreSQL 13devel on s390x-ibm-linux-gnu, compiled by
clangversion 5.0.1 (tags/RELEASE_501/final 312548), 64-bit" 
 macaque       | 2019-07-25 19:47:06 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit" 
 magpie        | 2019-06-17 23:22:21 | #define PG_VERSION_STR "PostgreSQL 12beta2 on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 4.4.7 20120313 (Red Hat 4.4.7-18), 64-bit" 
 mandrill      | 2019-07-28 04:14:14 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc-ibm-aix7.1.3.0, compiled
byxlc_r -qmaxmem=33554432 -D_LARGE_FILES=1 -DRANDOMIZE_ALLOCATED_MEMORY, 32-bit" 
 mantid        | 2019-07-28 10:07:05 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 4.8.5 20150623 (Red Hat 4.8.5-36), 64-bit" 
 markhor       | 2019-05-28 22:04:24 | #define PG_VERSION_STR "PostgreSQL 12beta1 on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 4.4.7 20120313 (Red Hat 4.4.7-18), 64-bit" 
 mayfly        | 2019-07-23 04:51:45 | #define PG_VERSION_STR "PostgreSQL 13devel on aarch64-unknown-linux-gnu,
compiledby gcc (SUSE Linux) 9.0.1 20190426 (prerelease) [gcc-9-branch revision 270592], 64-bit" 
 mereswine     | 2019-07-28 07:45:47 | #define PG_VERSION_STR "PostgreSQL 13devel on armv7l-unknown-linux-gnueabihf,
compiledby gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 32-bit" 
 moonjelly     | 2019-07-28 09:17:02 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 10.0.0 20190726 (experimental), 64-bit" 
 mule          | 2019-07-03 23:30:02 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit" 
 mylodon       | 2019-07-28 07:30:07 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
clangversion 6.0.1-11 (tags/RELEASE_601/final), 64-bit" 
 myna          | 2019-07-28 12:00:13 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 7.3.0, 64-bit" 
 nightjar      | 2019-07-28 00:54:12 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-freebsd9.0,
compiledby cc (GCC) 4.2.1 20070831 patched [FreeBSD], 64-bit" 
 nudibranch    | 2019-06-18 23:27:43 | #define PG_VERSION_STR "PostgreSQL 12beta2 on s390x-ibm-linux-gnu, compiled by
gcc(SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973], 64-bit" 
 peripatus     | 2019-07-28 08:20:32 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-freebsd13.0,
compiledby FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM 8.0.1), 64-bit" 
 petalura      | 2019-07-28 08:20:02 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
clangversion 6.0.1-11 (tags/RELEASE_601/final), 64-bit" 
 phycodurus    | 2019-07-28 07:30:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc-7(Debian 7.4.0-10) 7.4.0, 64-bit" 
 piculet       | 2019-07-28 07:59:22 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 8.3.0-19) 8.3.0, 64-bit" 
 pintail       | 2019-07-27 20:10:32 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final), 64-bit" 
 plumeleteer   | 2019-07-03 15:00:32 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-openbsd6.4,
compiledby gcc (GCC) 4.2.1 20070719 , 64-bit" 
 pogona        | 2019-07-28 08:10:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc-7(Debian 7.4.0-10) 7.4.0, 64-bit" 
 prairiedog    | 2019-07-28 07:25:24 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc-apple-darwin8.11.0,
compiledby powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5341), 32-bit" 
 prion         | 2019-07-28 07:23:13 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit" 
 queensnake    | 2019-07-22 21:32:27 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
clangversion 3.4.2 (tags/RELEASE_34/dot2-final), 64-bit" 
 quokka        | 2019-07-28 14:53:52 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64-unknown-linux-gnu,
compiledby gcc (GCC) 5.3.1 20170120 (Advance-Toolchain-at9.0) [ibm/gcc-5-branch revision 244812], 64-bit" 
 rhinoceros    | 2019-07-28 07:30:09 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit" 
 seawasp       | 2019-07-14 13:29:20 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
clangversion 9.0.0 (trunk 364708), 64-bit" 
 serinus       | 2019-07-28 08:00:06 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 20190719-1) 10.0.0 20190718 (experimental) [trunk revision 273586], 64-bit" 
 shoveler      | 2019-07-28 13:43:35 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby clang version 3.9.1-9 (tags/RELEASE_391/rc2), 64-bit" 
 sidewinder    | 2019-07-28 10:45:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-netbsd7.0, compiled
bygcc (nb2 20150115) 4.8.4, 64-bit" 
 skate         | 2019-07-28 06:01:41 | #define PG_VERSION_STR "PostgreSQL 13devel on sparc64-unknown-linux-gnu,
compiledby gcc-4.7 (Debian 4.7.2-5) 4.7.2, 32-bit" 
 skink         | 2019-07-28 08:14:52 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Debian 8.3.0-19) 8.3.0, 64-bit" 
 snapper       | 2019-07-28 12:01:36 | #define PG_VERSION_STR "PostgreSQL 13devel on sparc64-unknown-linux-gnu,
compiledby gcc-4.7 (Debian 4.7.2-5) 4.7.2, 32-bit" 
 spurfowl      | 2019-07-28 07:23:05 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
gcc(Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609, 64-bit" 
 starfrontlet  | 2019-07-03 22:10:41 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-unknown-openbsd6.4,
compiledby OpenBSD clang version 6.0.0 (tags/RELEASE_600/final) (based on LLVM 6.0.0), 64-bit" 
 sungazer      | 2019-07-28 07:26:16 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc-ibm-aix7.1.3.0, compiled
bygcc (GCC) 4.8.1, 64-bit" 
 takin         | 2019-07-28 07:43:24 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (SUSE Linux) 4.8.5, 64-bit" 
 tern          | 2019-07-28 07:18:12 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc-ibm-aix7.1.3.0, compiled
bygcc (GCC) 4.8.1, 32-bit" 
 thorntail     | 2019-07-28 07:28:10 | #define PG_VERSION_STR "PostgreSQL 13devel on sparc64-unknown-linux-gnu,
compiledby gcc-8 (Debian 8.3.0-19) 8.3.0, 64-bit" 
 tick          | 2019-05-15 22:36:21 | #define PG_VERSION_STR "PostgreSQL 12devel on x86_64-pc-linux-gnu, compiled by
clangversion 3.4 (tags/RELEASE_34/final), 64-bit" 
 topminnow     | 2019-06-08 15:32:18 | #define PG_VERSION_STR "PostgreSQL 12beta1 on mipsel-unknown-linux-gnu, compiled
bygcc (Debian 4.9.2-10+deb8u1) 4.9.2, 32-bit" 
 treepie       | 2019-06-18 01:34:55 | #define PG_VERSION_STR "PostgreSQL 12beta2 on x86_64-pc-linux-gnu, compiled by
clangversion 3.4 (tags/RELEASE_34/final), 64-bit" 
 urocryon      | 2019-07-28 05:43:24 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit" 
 vulpes        | 2019-07-27 09:30:08 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6), 64-bit" 
 wobbegong     | 2019-07-26 21:28:05 | #define PG_VERSION_STR "PostgreSQL 13devel on powerpc64le-unknown-linux-gnu,
compiledby clang version 5.0.2 (tags/RELEASE_502/final), 64-bit" 
 xenodermus    | 2019-07-28 08:00:01 | #define PG_VERSION_STR "PostgreSQL 13devel on x86_64-pc-linux-gnu, compiled by
clangversion 6.0.1-11 (tags/RELEASE_601/final), 64-bit" 

Re: how to run encoding-dependent tests by default

От
Tom Lane
Дата:
Oh ... one other thought, based on forcing the collate.linux.utf8
test to run on platforms where it can be expected to fail: I think
you'd be well advised to make that test verify that the required
collations are present, the same as you did in the collate.icu.utf8
test.  I noticed for instance that it fails if en_US.utf8 is not
present (or not spelled exactly like that), but I doubt that that
locale is necessarily present on every Linux platform.  tr_TR is
even more likely to be subject to packagers' whims.

            regards, tom lane



Re: how to run encoding-dependent tests by default

От
Peter Eisentraut
Дата:
On 2019-07-28 20:12, Tom Lane wrote:
> So I wish we could get rid of the Makefile changes, have the test
> scripts be completely responsible for whether to run themselves or
> not, and put them into the schedule files normally.
> 
> It's pretty obvious how we might do this for collate.icu.utf8:
> make it look to see if there are any ICU-supplied collations in
> pg_collation.
> 
> I'm less clear on a reasonable way to detect a glibc platform
> from SQL.  The best I can think of is to see if the string
> "linux" appears in the output of version(), and that's probably
> none too robust.  Can we do anything based on the content of
> pg_collation?  Probably not :-(.
> 
> Still, even if you only fixed collate.icu.utf8 this way, that
> would be a step forward since it would solve the Windows aspect.

Good points.  Updated patch attach.

(The two tests create the same schema name, so they cannot be run in
parallel.  I opted against changing that here, since it would blow up
the patch and increase the diff between the two tests.)

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Вложения

Re: how to run encoding-dependent tests by default

От
Peter Eisentraut
Дата:
On 2019-07-28 21:42, Tom Lane wrote:
> Oh ... one other thought, based on forcing the collate.linux.utf8
> test to run on platforms where it can be expected to fail: I think
> you'd be well advised to make that test verify that the required
> collations are present, the same as you did in the collate.icu.utf8
> test.  I noticed for instance that it fails if en_US.utf8 is not
> present (or not spelled exactly like that), but I doubt that that
> locale is necessarily present on every Linux platform.  tr_TR is
> even more likely to be subject to packagers' whims.

This was already done in my v2 test posted in this thread.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Re: how to run encoding-dependent tests by default

От
Tom Lane
Дата:
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
> On 2019-07-28 20:12, Tom Lane wrote:
>> So I wish we could get rid of the Makefile changes, have the test
>> scripts be completely responsible for whether to run themselves or
>> not, and put them into the schedule files normally.

> Good points.  Updated patch attach.

v3 looks good and passes local testing.  I've marked it RFC.

> (The two tests create the same schema name, so they cannot be run in
> parallel.  I opted against changing that here, since it would blow up
> the patch and increase the diff between the two tests.)

This does create one tiny nit, which is that the order of the
parallel and serial schedule files don't match.  Possibly I'm
overly anal-retentive about that, but I think it's confusing
when they don't.

            regards, tom lane



Re: how to run encoding-dependent tests by default

От
Peter Eisentraut
Дата:
On 2019-07-29 16:47, Tom Lane wrote:
>> (The two tests create the same schema name, so they cannot be run in
>> parallel.  I opted against changing that here, since it would blow up
>> the patch and increase the diff between the two tests.)
> 
> This does create one tiny nit, which is that the order of the
> parallel and serial schedule files don't match.  Possibly I'm
> overly anal-retentive about that, but I think it's confusing
> when they don't.

Right.  Committed with adjustment to keep these consistent.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services