Обсуждение: Re: pgsql: Inline pg_ascii_tolower() and pg_ascii_toupper().
On 2025-Nov-26, Jeff Davis wrote: > Inline pg_ascii_tolower() and pg_ascii_toupper(). I think this broke the CI on (some flavors of?) Windows. In https://cirrus-ci.com/task/6080935063453696 I got [19:09:39.518] [1597/2357] Linking target src/backend/postgres.exe [19:09:39.518] FAILED: [code=1] src/backend/postgres.exe [19:09:39.518] "cc" @src/backend/postgres.exe.rsp [19:09:39.518] C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/backend/postgres_lib.a.p/commands_event_trigger.c.obj:in function `filter_list_to_array': [19:09:39.518] c:\cirrus\build/../src/backend/commands/event_trigger.c:377:(.text+0x2a5): undefined reference to `pg_ascii_toupper' [19:09:39.518] collect2.exe: error: ld returned 1 exit status [19:09:39.520] [1598/2357] Compiling C object src/backend/snowball/dict_snowball.dll.p/libstemmer_stem_ISO_8859_1_indonesian.c.obj [19:09:39.521] [1599/2357] Compiling C object src/backend/snowball/dict_snowball.dll.p/libstemmer_stem_ISO_8859_1_irish.c.obj [19:09:39.616] [1600/2357] Compiling C object src/backend/snowball/dict_snowball.dll.p/libstemmer_stem_ISO_8859_1_english.c.obj [19:09:39.648] [1601/2357] Compiling C object src/backend/replication/pgoutput/pgoutput.dll.p/pgoutput.c.obj [19:09:39.760] [1602/2357] Compiling C object src/backend/snowball/dict_snowball.dll.p/libstemmer_stem_ISO_8859_1_german.c.obj [19:09:39.762] ninja: build stopped: subcommand failed. I'm surprised it didn't do anything to the buildfarm. Are we lacking coverage? -- Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/
=?utf-8?Q?=C3=81lvaro?= Herrera <alvherre@kurilemu.de> writes: > On 2025-Nov-26, Jeff Davis wrote: >> Inline pg_ascii_tolower() and pg_ascii_toupper(). > I think this broke the CI on (some flavors of?) Windows. In > https://cirrus-ci.com/task/6080935063453696 > I got > [19:09:39.518] C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/backend/postgres_lib.a.p/commands_event_trigger.c.obj:in function `filter_list_to_array': > [19:09:39.518] c:\cirrus\build/../src/backend/commands/event_trigger.c:377:(.text+0x2a5): undefined reference to `pg_ascii_toupper' That's bizarre. I checked recent cfbot rebuilds of some of my patches and there's no problem, also just looking at port.h it's impossible to see how this could happen. Some weird compiled-code caching misbehavior in CI, perhaps? regards, tom lane
> On Nov 29, 2025, at 04:40, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > =?utf-8?Q?=C3=81lvaro?= Herrera <alvherre@kurilemu.de> writes: >> On 2025-Nov-26, Jeff Davis wrote: >>> Inline pg_ascii_tolower() and pg_ascii_toupper(). > >> I think this broke the CI on (some flavors of?) Windows. In >> https://cirrus-ci.com/task/6080935063453696 >> I got > >> [19:09:39.518] C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/backend/postgres_lib.a.p/commands_event_trigger.c.obj:in function `filter_list_to_array': >> [19:09:39.518] c:\cirrus\build/../src/backend/commands/event_trigger.c:377:(.text+0x2a5): undefined reference to `pg_ascii_toupper' > > That's bizarre. I checked recent cfbot rebuilds of some of my patches > and there's no problem, also just looking at port.h it's impossible > to see how this could happen. Some weird compiled-code caching > misbehavior in CI, perhaps? > > regards, tom lane > > ec4997a moved the two functions from pgstrcasecmp.c to port.h and made them inline, so maybe some old .o were not rebuiltand still need to link to the old functions. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
Hi, On 2025-11-28 15:40:19 -0500, Tom Lane wrote: > =?utf-8?Q?=C3=81lvaro?= Herrera <alvherre@kurilemu.de> writes: > > On 2025-Nov-26, Jeff Davis wrote: > >> Inline pg_ascii_tolower() and pg_ascii_toupper(). > > > I think this broke the CI on (some flavors of?) Windows. In > > https://cirrus-ci.com/task/6080935063453696 > > I got > > > [19:09:39.518] C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/backend/postgres_lib.a.p/commands_event_trigger.c.obj:in function `filter_list_to_array': > > [19:09:39.518] c:\cirrus\build/../src/backend/commands/event_trigger.c:377:(.text+0x2a5): undefined reference to `pg_ascii_toupper' > > That's bizarre. I checked recent cfbot rebuilds of some of my patches > and there's no problem, also just looking at port.h it's impossible > to see how this could happen. Some weird compiled-code caching > misbehavior in CI, perhaps? Yea, I suspect something with ccache is going wrong. We have before noticed problems with ccache on mingw, where it somehow used .o files from the wrong major versions, despite obviously the input files obviously not supposed to be matching. I don't know what could cause that... For now I've cleared the task's cache, but that's clearly not a full fix... Greetings, Andres Freund
On Sun, Nov 30, 2025 at 3:53 AM Andres Freund <andres@anarazel.de> wrote: > On 2025-11-28 15:40:19 -0500, Tom Lane wrote: > > =?utf-8?Q?=C3=81lvaro?= Herrera <alvherre@kurilemu.de> writes: > > > On 2025-Nov-26, Jeff Davis wrote: > > >> Inline pg_ascii_tolower() and pg_ascii_toupper(). > > > > > I think this broke the CI on (some flavors of?) Windows. In > > > https://cirrus-ci.com/task/6080935063453696 > > > I got > > > > > [19:09:39.518] C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: src/backend/postgres_lib.a.p/commands_event_trigger.c.obj:in function `filter_list_to_array': > > > [19:09:39.518] c:\cirrus\build/../src/backend/commands/event_trigger.c:377:(.text+0x2a5): undefined reference to `pg_ascii_toupper' > > > > That's bizarre. I checked recent cfbot rebuilds of some of my patches > > and there's no problem, also just looking at port.h it's impossible > > to see how this could happen. Some weird compiled-code caching > > misbehavior in CI, perhaps? > > Yea, I suspect something with ccache is going wrong. We have before noticed > problems with ccache on mingw, where it somehow used .o files from the wrong > major versions, despite obviously the input files obviously not supposed to be > matching. I don't know what could cause that... To have compiled event_trigger.c without a warning about an undeclared function and then generated an unresolvable symbol reference, I suppose it must either have (1) failed to track the dependency on the precompiled header (so ccache spat out a cached .o from before commit ec4997a9 that it shouldn't have), or (2) failed to re-precompile the header (so ccache spat out a cached .pch from before commit ec4997a9 that it shouldn't have and then this or some earlier build compiled a broken .o)? Hmm...