Hi,
On 2023-03-15 09:56:10 +0900, Michael Paquier wrote:
> On Tue, Mar 14, 2023 at 02:54:40PM -0700, Andres Freund wrote:
> > Object description
> > -----------------------------------------------------------
> > function pg_get_wal_record_info(pg_lsn)
> > - function pg_get_wal_records_info(pg_lsn,pg_lsn)
> > function pg_get_wal_records_info_till_end_of_wal(pg_lsn)
> > - function pg_get_wal_stats(pg_lsn,pg_lsn,boolean)
> > + function pg_get_wal_records_info(pg_lsn,pg_lsn)
> > function pg_get_wal_stats_till_end_of_wal(pg_lsn,boolean)
> > + function pg_get_wal_stats(pg_lsn,pg_lsn,boolean)
> > (5 rows)
> >
> > -- Make sure checkpoints don't interfere with the test.
> >
> > Looks like it's missing an ORDER BY.
>
> Interesting. This is "\dx+ pg_walinspect".
> listOneExtensionContents() uses pg_describe_object() for that, and
> there is already an ORDER BY based on it. I would not have expected
> this part to be that much sensitive. Is this using a specific ICU
> collation, because this is a side-effect of switching ICU as the
> default in initdb?
It's using ICU, but not a specific collation. The build I linked to is WIP
hackery to add ICU support to windows CI. Here's the initdb output:
https://api.cirrus-ci.com/v1/artifact/task/6288336663347200/testrun/build/testrun/pg_walinspect/regress/log/initdb.log
The database cluster will be initialized with this locale configuration:
provider: icu
ICU locale: en_US
LC_COLLATE: English_United States.1252
LC_CTYPE: English_United States.1252
LC_MESSAGES: English_United States.1252
LC_MONETARY: English_United States.1252
LC_NUMERIC: English_United States.1252
LC_TIME: English_United States.1252
The default database encoding has accordingly been set to "WIN1252".
The default text search configuration will be set to "english".
For comparison, here's a recent CI run (which also failed on windows, but for
unrelated reasons), without ICU:
https://api.cirrus-ci.com/v1/artifact/task/6478925920993280/testrun/build/testrun/pg_walinspect/regress/log/initdb.log
The database cluster will be initialized with locale "English_United States.1252".
The default database encoding has accordingly been set to "WIN1252".
The default text search configuration will be set to "english".
> As a solution, this could use pg_identify_object(classid, objid, 0) in
> the ORDER BY clause to enforce a better ordering of the objects dealt
> with as it decomposes the object name and the object type. That
> should be enough, I assume, as it looks to be parenthesis vs
> underscore that switch the order.
Greetings,
Andres Freund