Обсуждение: Re: pgsql: Inline pg_ascii_tolower() and pg_ascii_toupper().

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

Re: pgsql: Inline pg_ascii_tolower() and pg_ascii_toupper().

От
Álvaro Herrera
Дата:
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/



Re: pgsql: Inline pg_ascii_tolower() and pg_ascii_toupper().

От
Tom Lane
Дата:
=?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



Re: pgsql: Inline pg_ascii_tolower() and pg_ascii_toupper().

От
Chao Li
Дата:

> 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/







Re: pgsql: Inline pg_ascii_tolower() and pg_ascii_toupper().

От
Andres Freund
Дата:
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



Re: pgsql: Inline pg_ascii_tolower() and pg_ascii_toupper().

От
Thomas Munro
Дата:
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...