Re: ci: namespace ccache by PostgreSQL major version

From: Andres Freund <andres(at)anarazel(dot)de>
To: Peter Eisentraut <peter(at)eisentraut(dot)org>
Cc: Nazir Bilal Yavuz <byavuz81(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: ci: namespace ccache by PostgreSQL major version
Date: 2026-07-16 21:27:04
Message-ID: gch4hgdyxnrlqsndn5qln4frftabwtscul5fvqhjpv34tu6ool@gfblk57l7j6e
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 2026-07-07 13:35:34 -0400, Andres Freund wrote:
> On 2026-07-06 09:52:19 +0200, Peter Eisentraut wrote:
> > On 03.07.26 16:26, Nazir Bilal Yavuz wrote:
> > > Hi,
> > >
> > > When the Postgres major version is updated, CI fails with [1]:
> > >
> > > 2026-07-02 17:01:01.938 UTC [828] FATAL: incompatible library
> > > "D:/a/postgresql/postgresql/build/tmp_install/usr/local/pgsql/lib/utf8_and_win.dll":
> > > version mismatch
> > > 2026-07-02 17:01:01.938 UTC [828] DETAIL: Server is version 20,
> > > library is version 19.
> > >
> > > This happens because the GitHub Actions ccache is restored across a
> > > version bump, so objects built against the previous version can be
> > > reused, producing libraries that no longer match the server version.
> > >
> > > Here is an attempt to solve this problem by namespacing ccache by
> > > Postgres major version. I added a 'PG_MAJOR_VERSION' variable to the
> > > CI file and used that as a prefix to ccache key. I made this
> > > 'PG_MAJOR_VERSION' variable automatically updated by
> > > 'version_stamp.pl' script.
> > >
> > > Another solution could be reading the version from build files (e.g
> > > meson.build), but then this read needs to be done at each CI run.
> >
> > I'm suspicious about this direction. The major version is not the only
> > piece of data that determines ABI compatibility between the server and
> > extensions. This would only be a partial information. The ABI information
> > exists in the code, and so changes should be visible to ccache. Maybe we
> > are using ccache in the wrong mode or something (see "depend mode", "direct
> > mode", etc.).
>
> Yea, I don't think that's the right answer. I'm reasonably sure I debugged
> this issue a while ago:
>
> https://postgr.es/m/phsrssp75npoyalqsolcd7fmnmlbzbmquc2p7w7mqjlw7432jk%40bzskz3luyjvb
>
> Not a lot has happened on the ccache front, so I suspect we should start
> adding the -fpch-deps flag I mentioned in that thread.
>
> We could make adding -fpch-deps conditional on pch support being enabled, but
> given that it doesn't do anything when pch is not used, I'd just add it when
> supported by the compiler.

Attached is the change I propose.

Greetings,

Andres

Attachment Content-Type Size
v2-0001-meson-Fix-ccache-issues-when-using-precompiled-he.patch text/x-diff 1.9 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2026-07-16 21:35:07 Re: pgstat: add pgstat_prep_pending() for entry ref pending setup
Previous Message Andrey Rachitskiy 2026-07-16 21:19:49 Re: pg19b1: TRAP: failed Assert("pgstat_bktype_io_stats_valid(bktype_shstats, MyBackendType)")