diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index cb3f1066c..6579c52d9 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -73,7 +73,7 @@ USER citus # build postgres versions separately for effective parrallelism and caching of already built versions when changing only certain versions FROM base AS pg15 -RUN MAKEFLAGS="-j $(nproc)" pgenv build 15.13 +RUN MAKEFLAGS="-j $(nproc)" pgenv build 15.14 RUN rm .pgenv/src/*.tar* RUN make -C .pgenv/src/postgresql-*/ clean RUN make -C .pgenv/src/postgresql-*/src/include install @@ -85,7 +85,7 @@ RUN cp -r .pgenv/src .pgenv/pgsql-* .pgenv/config .pgenv-staging/ RUN rm .pgenv-staging/config/default.conf FROM base AS pg16 -RUN MAKEFLAGS="-j $(nproc)" pgenv build 16.9 +RUN MAKEFLAGS="-j $(nproc)" pgenv build 16.10 RUN rm .pgenv/src/*.tar* RUN make -C .pgenv/src/postgresql-*/ clean RUN make -C .pgenv/src/postgresql-*/src/include install @@ -97,7 +97,7 @@ RUN cp -r .pgenv/src .pgenv/pgsql-* .pgenv/config .pgenv-staging/ RUN rm .pgenv-staging/config/default.conf FROM base AS pg17 -RUN MAKEFLAGS="-j $(nproc)" pgenv build 17.5 +RUN MAKEFLAGS="-j $(nproc)" pgenv build 17.6 RUN rm .pgenv/src/*.tar* RUN make -C .pgenv/src/postgresql-*/ clean RUN make -C .pgenv/src/postgresql-*/src/include install @@ -216,7 +216,7 @@ COPY --chown=citus:citus .psqlrc . RUN sudo chown --from=root:root citus:citus -R ~ # sets default pg version -RUN pgenv switch 17.5 +RUN pgenv switch 17.6 # make connecting to the coordinator easy ENV PGPORT=9700 diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index ae4b1b9b8..2a4f2df86 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -31,12 +31,12 @@ jobs: pgupgrade_image_name: "ghcr.io/citusdata/pgupgradetester" style_checker_image_name: "ghcr.io/citusdata/stylechecker" style_checker_tools_version: "0.8.18" - sql_snapshot_pg_version: "17.5" - image_suffix: "-vb17c33b" - pg15_version: '{ "major": "15", "full": "15.13" }' - pg16_version: '{ "major": "16", "full": "16.9" }' - pg17_version: '{ "major": "17", "full": "17.5" }' - upgrade_pg_versions: "15.13-16.9-17.5" + sql_snapshot_pg_version: "17.6" + image_suffix: "-v4df94a0" + pg15_version: '{ "major": "15", "full": "15.14" }' + pg16_version: '{ "major": "16", "full": "16.10" }' + pg17_version: '{ "major": "17", "full": "17.6" }' + upgrade_pg_versions: "15.14-16.10-17.6" steps: # Since GHA jobs need at least one step we use a noop step here. - name: Set up parameters diff --git a/src/backend/columnar/columnar_metadata.c b/src/backend/columnar/columnar_metadata.c index e9f577690..e3264311c 100644 --- a/src/backend/columnar/columnar_metadata.c +++ b/src/backend/columnar/columnar_metadata.c @@ -659,8 +659,9 @@ SaveStripeSkipList(RelFileLocator relfilelocator, uint64 stripe, nulls[Anum_columnar_chunk_minimum_value - 1] = true; nulls[Anum_columnar_chunk_maximum_value - 1] = true; } - + PushActiveSnapshot(GetTransactionSnapshot()); InsertTupleAndEnforceConstraints(modifyState, values, nulls); + PopActiveSnapshot(); } } diff --git a/src/backend/distributed/metadata/node_metadata.c b/src/backend/distributed/metadata/node_metadata.c index 90b2ae6cd..e662dca8d 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -3288,7 +3288,9 @@ InsertNodeRow(int nodeid, char *nodeName, int32 nodePort, NodeMetadata *nodeMeta Int32GetDatum(nodeMetadata->nodeprimarynodeid); HeapTuple heapTuple = heap_form_tuple(tupleDescriptor, values, isNulls); - CATALOG_INSERT_WITH_SNAPSHOT(pgDistNode, heapTuple); + PushActiveSnapshot(GetTransactionSnapshot()); + CatalogTupleInsert(pgDistNode, heapTuple); + PopActiveSnapshot(); CitusInvalidateRelcacheByRelid(DistNodeRelationId()); diff --git a/src/backend/distributed/transaction/transaction_recovery.c b/src/backend/distributed/transaction/transaction_recovery.c index 260e91b56..6b5997f39 100644 --- a/src/backend/distributed/transaction/transaction_recovery.c +++ b/src/backend/distributed/transaction/transaction_recovery.c @@ -106,7 +106,9 @@ LogTransactionRecord(int32 groupId, char *transactionName, FullTransactionId out HeapTuple heapTuple = heap_form_tuple(tupleDescriptor, values, isNulls); /* insert new tuple */ - CATALOG_INSERT_WITH_SNAPSHOT(pgDistTransaction, heapTuple); + PushActiveSnapshot(GetTransactionSnapshot()); + CatalogTupleInsert(pgDistTransaction, heapTuple); + PopActiveSnapshot(); CommandCounterIncrement(); diff --git a/src/include/pg_version_compat.h b/src/include/pg_version_compat.h index 997ad4b58..a30925e4e 100644 --- a/src/include/pg_version_compat.h +++ b/src/include/pg_version_compat.h @@ -13,10 +13,6 @@ #include "pg_version_constants.h" -/* we need these for PG-18’s PushActiveSnapshot/PopActiveSnapshot APIs */ -#include "access/xact.h" -#include "utils/snapmgr.h" - #if PG_VERSION_NUM >= PG_VERSION_18 #define create_foreignscan_path_compat(a, b, c, d, e, f, g, h, i, j, k) \ create_foreignscan_path( \ @@ -40,14 +36,6 @@ /* PG-18 unified row-compare operator codes under COMPARE_* */ #define ROWCOMPARE_NE COMPARE_NE -#define CATALOG_INSERT_WITH_SNAPSHOT(rel, tup) \ - do { \ - Snapshot __snap = GetTransactionSnapshot(); \ - PushActiveSnapshot(__snap); \ - CatalogTupleInsert((rel), (tup)); \ - PopActiveSnapshot(); \ - } while (0) - #elif PG_VERSION_NUM >= PG_VERSION_17 #define create_foreignscan_path_compat(a, b, c, d, e, f, g, h, i, j, k) \ create_foreignscan_path( \ @@ -56,9 +44,6 @@ (g), (h), (i), (j), (k) \ ) -/* no-op wrapper on older PGs */ -#define CATALOG_INSERT_WITH_SNAPSHOT(rel, tup) \ - CatalogTupleInsert((rel), (tup)) #endif #if PG_VERSION_NUM >= PG_VERSION_17 @@ -469,10 +454,6 @@ getStxstattarget_compat(HeapTuple tup) k) create_foreignscan_path(a, b, c, d, e, f, g, h, \ i, k) -/* no-op wrapper on older PGs */ -#define CATALOG_INSERT_WITH_SNAPSHOT(rel, tup) \ - CatalogTupleInsert((rel), (tup)) - #define getProcNo_compat(a) (a->pgprocno) #define getLxid_compat(a) (a->lxid)