From 7ac47941bdf3508873e57eb197473bca299a8da1 Mon Sep 17 00:00:00 2001 From: naisila Date: Wed, 10 Jul 2024 12:09:27 +0200 Subject: [PATCH] Use ResourceOwner to track WaitEventSet in PG17 Relevant PG commit: 50c67c2019ab9ade8aa8768bfe604cd802fe8591 https://github.com/postgres/postgres/commit/50c67c2019ab9ade8aa8768bfe604cd802fe8591 --- src/backend/distributed/connection/connection_management.c | 3 ++- src/backend/distributed/connection/remote_commands.c | 2 +- src/backend/distributed/executor/adaptive_executor.c | 2 +- src/include/pg_version_compat.h | 4 ++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/backend/distributed/connection/connection_management.c b/src/backend/distributed/connection/connection_management.c index a8d8bad8a..4787d8f2f 100644 --- a/src/backend/distributed/connection/connection_management.c +++ b/src/backend/distributed/connection/connection_management.c @@ -866,7 +866,8 @@ WaitEventSetFromMultiConnectionStates(List *connections, int *waitCount) *waitCount = 0; } - WaitEventSet *waitEventSet = CreateWaitEventSet(CurrentMemoryContext, eventSetSize); + WaitEventSet *waitEventSet = CreateWaitEventSet(WaitEventSetTracker_compat, + eventSetSize); EnsureReleaseResource((MemoryContextCallbackFunction) (&FreeWaitEventSet), waitEventSet); diff --git a/src/backend/distributed/connection/remote_commands.c b/src/backend/distributed/connection/remote_commands.c index 7a9e0601d..c9860c061 100644 --- a/src/backend/distributed/connection/remote_commands.c +++ b/src/backend/distributed/connection/remote_commands.c @@ -1130,7 +1130,7 @@ BuildWaitEventSet(MultiConnection **allConnections, int totalConnectionCount, /* allocate pending connections + 2 for the signal latch and postmaster death */ /* (CreateWaitEventSet makes room for pgwin32_signal_event automatically) */ - WaitEventSet *waitEventSet = CreateWaitEventSet(CurrentMemoryContext, + WaitEventSet *waitEventSet = CreateWaitEventSet(WaitEventSetTracker_compat, pendingConnectionCount + 2); for (int connectionIndex = 0; connectionIndex < pendingConnectionCount; diff --git a/src/backend/distributed/executor/adaptive_executor.c b/src/backend/distributed/executor/adaptive_executor.c index f7e7c2337..9606cd724 100644 --- a/src/backend/distributed/executor/adaptive_executor.c +++ b/src/backend/distributed/executor/adaptive_executor.c @@ -4740,7 +4740,7 @@ BuildWaitEventSet(List *sessionList) int eventSetSize = GetEventSetSize(sessionList); WaitEventSet *waitEventSet = - CreateWaitEventSet(CurrentMemoryContext, eventSetSize); + CreateWaitEventSet(WaitEventSetTracker_compat, eventSetSize); WorkerSession *session = NULL; foreach_declared_ptr(session, sessionList) diff --git a/src/include/pg_version_compat.h b/src/include/pg_version_compat.h index dc8480f61..44bb6c882 100644 --- a/src/include/pg_version_compat.h +++ b/src/include/pg_version_compat.h @@ -98,6 +98,8 @@ getStxstattarget_compat(HeapTuple tup) #define getAlterStatsStxstattarget_compat(a) ((Node *) makeInteger(a)) #define getIntStxstattarget_compat(a) (intVal(a)) +#define WaitEventSetTracker_compat CurrentResourceOwner + #else #include "access/htup_details.h" @@ -119,6 +121,8 @@ getStxstattarget_compat(HeapTuple tup) #define getAlterStatsStxstattarget_compat(a) (a) #define getIntStxstattarget_compat(a) (a) +#define WaitEventSetTracker_compat CurrentMemoryContext + #endif #if PG_VERSION_NUM >= PG_VERSION_16