From 31e19e8b19d572286e681a5d41bad72e918795b4 Mon Sep 17 00:00:00 2001 From: naisila Date: Thu, 18 Sep 2025 16:08:57 +0300 Subject: [PATCH] Fix HaveRegisteredOrActiveSnapshot() crashes part of ce7ddc0d3da6b6a44e33a54a9e1f7c36e39175e0 --- src/backend/columnar/columnar_metadata.c | 2 ++ src/backend/distributed/metadata/node_metadata.c | 2 ++ src/backend/distributed/transaction/transaction_recovery.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/src/backend/columnar/columnar_metadata.c b/src/backend/columnar/columnar_metadata.c index 3857f1f07..d61ba407d 100644 --- a/src/backend/columnar/columnar_metadata.c +++ b/src/backend/columnar/columnar_metadata.c @@ -657,7 +657,9 @@ SaveStripeSkipList(RelFileLocator relfilelocator, uint64 stripe, 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 39edfec1d..b4a0bb447 100644 --- a/src/backend/distributed/metadata/node_metadata.c +++ b/src/backend/distributed/metadata/node_metadata.c @@ -2859,7 +2859,9 @@ InsertNodeRow(int nodeid, char *nodeName, int32 nodePort, NodeMetadata *nodeMeta TupleDesc tupleDescriptor = RelationGetDescr(pgDistNode); HeapTuple heapTuple = heap_form_tuple(tupleDescriptor, values, isNulls); + 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 4a1503b55..9ea69b88a 100644 --- a/src/backend/distributed/transaction/transaction_recovery.c +++ b/src/backend/distributed/transaction/transaction_recovery.c @@ -102,7 +102,9 @@ LogTransactionRecord(int32 groupId, char *transactionName) TupleDesc tupleDescriptor = RelationGetDescr(pgDistTransaction); HeapTuple heapTuple = heap_form_tuple(tupleDescriptor, values, isNulls); + PushActiveSnapshot(GetTransactionSnapshot()); CatalogTupleInsert(pgDistTransaction, heapTuple); + PopActiveSnapshot(); CommandCounterIncrement();