-
Notifications
You must be signed in to change notification settings - Fork 695
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support PostgreSQL 17 MERGE features in Citus with clean exceptions #7781
Conversation
d12ed14
to
e5e1455
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## release-13.0 #7781 +/- ##
===============================================
Coverage ? 89.61%
===============================================
Files ? 274
Lines ? 59727
Branches ? 7450
===============================================
Hits ? 53524
Misses ? 4070
Partials ? 2133 |
1e55f40
to
1c39f95
Compare
567be8b
to
a229e76
Compare
a6247c3
to
c48ab7d
Compare
c48ab7d
to
3a78858
Compare
3a78858
to
f57dd3b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The latest update looks good, thanks for accommodating the review comments. The codecov checks are passing now, it looks like.
check-multi-1 is failing on PG14 with one diff, which looks unrelated; it does not fail when I run locally, so the test may be flappy.
https://github.com/citusdata/citus/actions/runs/12320873515/attempts/1#summary-34391423540
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work, thank you! I don't have any major comments, just some PG17 readability ones.
1c39f95
to
e8352a8
Compare
e8352a8
to
5ce353b
Compare
a04a544
to
fc1d94a
Compare
a2ad87b
to
148abb0
Compare
pgmerge.sql: This is a clone of the PostgreSQL community's merge.sql test, adapted for Citus by converting tables into Citus local tables. The expectation is that any MERGE syntax that works on PostgreSQL should work on Citus as-is, utilizing our MERGE deparser. Diffs, which primarily seem to stem fromtwo major features in MERGE introduced by the community: RETURNING support for MERGE MERGE support for updatable views Currently, Citus code does not support these features. For now, I have implemented changes to catch these cases and raise clean exceptions. With these adjustments, the pgmerge tests now pass without diffs.
This is the final commit that adds PG17 compatibility with Citus's current capabilities. You can use Citus community, release-13.0 branch, with PG17.1. --------- Specifically, this commit: - Enables PG17 in the configure script. - Adds PG17 tests to CI using test images that have 17.1 - Fixes an upgrade test: see below for details In `citus_prepare_upgrade()`, don't drop any_value when upgrading from PG16+, because PG16+ has its own any_value function. Attempting to do so results in the error seen in [pg16-pg17 upgrade](https://github.com/citusdata/citus/actions/runs/11768444117/job/32778340003?pr=7661): ``` ERROR: cannot drop function any_value(anyelement) because it is required by the database system CONTEXT: SQL statement "DROP AGGREGATE IF EXISTS pg_catalog.any_value(anyelement)" ``` When 16 becomes the minimum supported Postgres version, the drop statements can be removed. --------- Several PG17 Compatibility commits have been merged before this final one. All these subtasks are done #7653 See the list below: Compilation PR: #7699 Ruleutils PR: #7725 Sister PR for tests: citusdata/the-process#159 Helpful smaller PRs: - #7714 - #7726 - #7731 - #7732 - #7733 - #7738 - #7745 - #7747 - #7748 - #7749 - #7752 - #7755 - #7757 - #7759 - #7760 - #7761 - #7762 - #7765 - #7766 - #7768 - #7769 - #7771 - #7774 - #7776 - #7780 - #7781 - #7785 - #7788 - #7793 - #7796 --------- Co-authored-by: Colm <[email protected]>
pgmerge.sql
tests from PostgreSQL community'smerge.sql
to Citus by converting tables into Citus local tables.RETURNING
support and MERGE on updatable views) not yet supported by Citus.MERGE ... WHEN NOT MATCHED BY SOURCE
restructuring, reducing diffs in pgmerge tests.merge_unsupported.sql
to maintain clarity and avoid large diffs in test files.All merge tests now pass cleanly, with unsupported cases clearly isolated.