PG19: build foundation (source-level compat, scaffold ruleutils_19.c, CI image bump)#8601
Open
ihalatci wants to merge 5 commits into
Open
PG19: build foundation (source-level compat, scaffold ruleutils_19.c, CI image bump)#8601ihalatci wants to merge 5 commits into
ihalatci wants to merge 5 commits into
Conversation
Bump image_suffix to -dev-e11d99c (PG19-capable test images) and PG minors to 16.14/17.10/18.4. Add pg19_version and wire 19devel into the build matrix. PG19 is intentionally not added to the regression, failure, cdc, or upgrade jobs yet (those need the upstream-derived ruleutils_19.c that lands in a follow-up).
Accept PG19 in configure/pg_version_constants.h and add centralised source-compat shims in pg_version_compat.h. Adapt distributed/columnar headers for renamed/retyped PG19 APIs. Add 128 KB shmem slack on PG19 to absorb ShmemInitHash up-front allocation, and drop a pre-existing hash double-count in maintenanced.c exposed by that change.
Source-level fixes across the distributed and columnar code to build clean under PG19's stricter warnings (old-style prototypes, strict forward declarations, implicit-fallthrough annotations, new switch arms, API renames). The build keeps the same warning/error flags as PG17/PG18 -- warnings are fixed at the source, not silenced.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## pg19-support #8601 +/- ##
=============================================
Coverage 88.76% 88.76%
=============================================
Files 288 288
Lines 64302 64315 +13
Branches 8091 8091
=============================================
+ Hits 57075 57091 +16
- Misses 4888 4891 +3
+ Partials 2339 2333 -6 🚀 New features to boost your workflow:
|
751c742 to
c1df190
Compare
Scaffold cloned from ruleutils_18.c retargeted at the PG19 version guard, plus the minimal source changes required for it to compile under PG19's -Werror (the real upstream-derived deparse port lands in a follow-up PR, per the #7725/#8010 precedent): - get_name_for_var_field(): handle the new PG19 RTE_GRAPH_TABLE rtekind in the switch (grouped with the subquery cases, as upstream does). - isSimpleNode(): replace the comment-style /* FALLTHROUGH */ with pg_fallthrough; (PG19 builds with -Wimplicit-fallthrough=5, which no longer accepts comment markers). - generate_function_name(): pass the new &fgc_flags argument to func_get_detail(), which gained a parameter in PG19. Exclude the file from citus-style in .gitattributes: it is an upstream-derived clone exceeding the CI uncrustify 10,000-line limit.
c1df190 to
ab238fc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DESCRIPTION: Add PG19 build support; extension compiles and loads.
First PR of the PG19 enablement series tracked in #8597. Achieves
source-level compatibility with PG19 (
pg19devel) and a cleanCREATE EXTENSION cituswhile keeping PG17 and PG18 builds green.Regression-test correctness and PG19 feature integration land in
follow-up PRs against the
pg19-supportdevelopment branch.Commits
image_suffixto-dev-e11d99c(PG19-capable testimages) and PG minors to 16.14/17.10/18.4; add
pg19_versionandwire
19develinto the build matrix only.configure/pg_version_constants.h; centralised compat shims inpg_version_compat.h; distributed/columnar header adaptations forrenamed/retyped PG19 APIs; 128 KB shmem slack on PG19 for the new
ShmemInitHashup-front allocation, plus themaintenanced.cdouble-count fix that change exposes.
prototypes, strict forward declarations, implicit-fallthrough, new
switch arms, API renames). No compiler-flag demotion — the build
keeps the same warning/error flags as PG17/PG18.
ruleutils_18.cretargeted atthe PG19 version guard so the binary links (per the PG17 compatibility: ruleutils #7725 / Pg18 ruleutils adaptation #8010
precedent; the real upstream-derived port lands in a follow-up PR).
Excluded from citus-style via
.gitattributes— it is anupstream-derived clone exceeding the CI uncrustify 10,000-line limit.
Scope / non-goals
test-citus,test-citus-failure,test-citus-cdc, or the upgrade jobs: theregression suite needs the upstream-derived
ruleutils_19.cfrom thefollow-up PR, and no released Citus supports PG19 yet. Running the
suite on this PR alone produces silent PG18-on-PG19 deparse
corruption.
multi_explain.cis touched only for theInstrumentation/NodeInstrumentationrename; a separateTupleDescFinalizeruntimefix lands in a later PR.
Validation
CREATE EXTENSION citussucceeds on PG19.Refs: #8597