From 6a72c42fd5af7ada49584694f543eb06dddb4a87 Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Wed, 15 Nov 2023 13:42:30 -0600 Subject: [PATCH] Retire MemoryContextResetAndDeleteChildren() macro. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit As of commit eaa5808e8e, MemoryContextResetAndDeleteChildren() is just a backwards compatibility macro for MemoryContextReset(). Now that some time has passed, this macro seems more likely to create confusion. This commit removes the macro and replaces all remaining uses with calls to MemoryContextReset(). Any third-party code that use this macro will need to be adjusted to call MemoryContextReset() instead. Since the two have behaved the same way since v9.5, such adjustments won't produce any behavior changes for all currently-supported versions of PostgreSQL. Reviewed-by: Amul Sul, Tom Lane, Alvaro Herrera, Dagfinn Ilmari Mannsåker Discussion: https://postgr.es/m/20231113185950.GA1668018%40nathanxps13 --- src/backend/access/brin/brin.c | 4 ++-- src/backend/access/gin/ginscan.c | 2 +- src/backend/access/transam/xact.c | 4 ++-- src/backend/commands/analyze.c | 6 +++--- src/backend/executor/nodeRecursiveunion.c | 2 +- src/backend/executor/nodeSetOp.c | 2 +- src/backend/executor/nodeWindowAgg.c | 10 +++++----- src/backend/executor/spi.c | 4 ++-- src/backend/postmaster/autovacuum.c | 10 +++++----- src/backend/postmaster/bgwriter.c | 2 +- src/backend/postmaster/checkpointer.c | 2 +- src/backend/postmaster/walwriter.c | 2 +- src/backend/replication/logical/worker.c | 2 +- src/backend/statistics/extended_stats.c | 2 +- src/backend/tcop/postgres.c | 2 +- src/backend/utils/cache/evtcache.c | 4 ++-- src/backend/utils/error/elog.c | 2 +- src/include/utils/memutils.h | 3 --- 18 files changed, 31 insertions(+), 34 deletions(-) diff --git a/src/backend/access/brin/brin.c b/src/backend/access/brin/brin.c index 25338a90e2..f0eac078e0 100644 --- a/src/backend/access/brin/brin.c +++ b/src/backend/access/brin/brin.c @@ -297,7 +297,7 @@ brininsert(Relation idxRel, Datum *values, bool *nulls, samepage)) { /* no luck; start over */ - MemoryContextResetAndDeleteChildren(tupcxt); + MemoryContextReset(tupcxt); continue; } } @@ -533,7 +533,7 @@ bringetbitmap(IndexScanDesc scan, TIDBitmap *tbm) CHECK_FOR_INTERRUPTS(); - MemoryContextResetAndDeleteChildren(perRangeCxt); + MemoryContextReset(perRangeCxt); tup = brinGetTupleForHeapBlock(opaque->bo_rmAccess, heapBlk, &buf, &off, &size, BUFFER_LOCK_SHARE); diff --git a/src/backend/access/gin/ginscan.c b/src/backend/access/gin/ginscan.c index ae7b0e9bb8..f719577695 100644 --- a/src/backend/access/gin/ginscan.c +++ b/src/backend/access/gin/ginscan.c @@ -251,7 +251,7 @@ ginFreeScanKeys(GinScanOpaque so) tbm_free(entry->matchBitmap); } - MemoryContextResetAndDeleteChildren(so->keyCtx); + MemoryContextReset(so->keyCtx); so->keys = NULL; so->nkeys = 0; diff --git a/src/backend/access/transam/xact.c b/src/backend/access/transam/xact.c index 8fad8ffa1e..536edb3792 100644 --- a/src/backend/access/transam/xact.c +++ b/src/backend/access/transam/xact.c @@ -1933,7 +1933,7 @@ AtCleanup_Memory(void) * Clear the special abort context for next time. */ if (TransactionAbortContext != NULL) - MemoryContextResetAndDeleteChildren(TransactionAbortContext); + MemoryContextReset(TransactionAbortContext); /* * Release all transaction-local memory. @@ -1969,7 +1969,7 @@ AtSubCleanup_Memory(void) * Clear the special abort context for next time. */ if (TransactionAbortContext != NULL) - MemoryContextResetAndDeleteChildren(TransactionAbortContext); + MemoryContextReset(TransactionAbortContext); /* * Delete the subxact local memory contexts. Its CurTransactionContext can diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index 206d1689ef..e264ffdcf2 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -583,7 +583,7 @@ do_analyze_rel(Relation onerel, VacuumParams *params, stats->stadistinct = n_distinct; } - MemoryContextResetAndDeleteChildren(col_context); + MemoryContextReset(col_context); } if (nindexes > 0) @@ -972,7 +972,7 @@ compute_index_stats(Relation onerel, double totalrows, numindexrows, totalindexrows); - MemoryContextResetAndDeleteChildren(col_context); + MemoryContextReset(col_context); } } @@ -981,7 +981,7 @@ compute_index_stats(Relation onerel, double totalrows, ExecDropSingleTupleTableSlot(slot); FreeExecutorState(estate); - MemoryContextResetAndDeleteChildren(ind_context); + MemoryContextReset(ind_context); } MemoryContextSwitchTo(old_context); diff --git a/src/backend/executor/nodeRecursiveunion.c b/src/backend/executor/nodeRecursiveunion.c index e781003934..3207643156 100644 --- a/src/backend/executor/nodeRecursiveunion.c +++ b/src/backend/executor/nodeRecursiveunion.c @@ -317,7 +317,7 @@ ExecReScanRecursiveUnion(RecursiveUnionState *node) /* Release any hashtable storage */ if (node->tableContext) - MemoryContextResetAndDeleteChildren(node->tableContext); + MemoryContextReset(node->tableContext); /* Empty hashtable if needed */ if (plan->numCols > 0) diff --git a/src/backend/executor/nodeSetOp.c b/src/backend/executor/nodeSetOp.c index 98c1b84d43..5a84969cf8 100644 --- a/src/backend/executor/nodeSetOp.c +++ b/src/backend/executor/nodeSetOp.c @@ -631,7 +631,7 @@ ExecReScanSetOp(SetOpState *node) /* Release any hashtable storage */ if (node->tableContext) - MemoryContextResetAndDeleteChildren(node->tableContext); + MemoryContextReset(node->tableContext); /* And rebuild empty hashtable if needed */ if (((SetOp *) node->ps.plan)->strategy == SETOP_HASHED) diff --git a/src/backend/executor/nodeWindowAgg.c b/src/backend/executor/nodeWindowAgg.c index 77724a6daa..3258305f57 100644 --- a/src/backend/executor/nodeWindowAgg.c +++ b/src/backend/executor/nodeWindowAgg.c @@ -216,7 +216,7 @@ initialize_windowaggregate(WindowAggState *winstate, * it, so we must leave it to the caller to reset at an appropriate time. */ if (peraggstate->aggcontext != winstate->aggcontext) - MemoryContextResetAndDeleteChildren(peraggstate->aggcontext); + MemoryContextReset(peraggstate->aggcontext); if (peraggstate->initValueIsNull) peraggstate->transValue = peraggstate->initValue; @@ -875,7 +875,7 @@ eval_windowaggregates(WindowAggState *winstate) * result for it, else we'll leak memory. */ if (numaggs_restart > 0) - MemoryContextResetAndDeleteChildren(winstate->aggcontext); + MemoryContextReset(winstate->aggcontext); for (i = 0; i < numaggs; i++) { peraggstate = &winstate->peragg[i]; @@ -1351,12 +1351,12 @@ release_partition(WindowAggState *winstate) * any aggregate temp data). We don't rely on retail pfree because some * aggregates might have allocated data we don't have direct pointers to. */ - MemoryContextResetAndDeleteChildren(winstate->partcontext); - MemoryContextResetAndDeleteChildren(winstate->aggcontext); + MemoryContextReset(winstate->partcontext); + MemoryContextReset(winstate->aggcontext); for (i = 0; i < winstate->numaggs; i++) { if (winstate->peragg[i].aggcontext != winstate->aggcontext) - MemoryContextResetAndDeleteChildren(winstate->peragg[i].aggcontext); + MemoryContextReset(winstate->peragg[i].aggcontext); } if (winstate->buffer) diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c index 33975687b3..0e46c59d25 100644 --- a/src/backend/executor/spi.c +++ b/src/backend/executor/spi.c @@ -547,7 +547,7 @@ AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid) if (_SPI_current->execSubid >= mySubid) { _SPI_current->execSubid = InvalidSubTransactionId; - MemoryContextResetAndDeleteChildren(_SPI_current->execCxt); + MemoryContextReset(_SPI_current->execCxt); } /* throw away any tuple tables created within current subxact */ @@ -3083,7 +3083,7 @@ _SPI_end_call(bool use_exec) /* mark Executor context no longer in use */ _SPI_current->execSubid = InvalidSubTransactionId; /* and free Executor memory */ - MemoryContextResetAndDeleteChildren(_SPI_current->execCxt); + MemoryContextReset(_SPI_current->execCxt); } return 0; diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 3a6f24a023..86a3b3d8be 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -555,7 +555,7 @@ AutoVacLauncherMain(int argc, char *argv[]) FlushErrorState(); /* Flush any leaked data in the top-level context */ - MemoryContextResetAndDeleteChildren(AutovacMemCxt); + MemoryContextReset(AutovacMemCxt); /* don't leave dangling pointers to freed memory */ DatabaseListCxt = NULL; @@ -2521,7 +2521,7 @@ do_autovacuum(void) /* clean up memory before each iteration */ - MemoryContextResetAndDeleteChildren(PortalContext); + MemoryContextReset(PortalContext); /* * Save the relation name for a possible error message, to avoid a @@ -2576,7 +2576,7 @@ do_autovacuum(void) /* this resets ProcGlobal->statusFlags[i] too */ AbortOutOfAnyTransaction(); FlushErrorState(); - MemoryContextResetAndDeleteChildren(PortalContext); + MemoryContextReset(PortalContext); /* restart our transaction for the following operations */ StartTransactionCommand(); @@ -2718,7 +2718,7 @@ perform_work_item(AutoVacuumWorkItem *workitem) autovac_report_workitem(workitem, cur_nspname, cur_relname); /* clean up memory before each work item */ - MemoryContextResetAndDeleteChildren(PortalContext); + MemoryContextReset(PortalContext); /* * We will abort the current work item if something errors out, and @@ -2770,7 +2770,7 @@ perform_work_item(AutoVacuumWorkItem *workitem) /* this resets ProcGlobal->statusFlags[i] too */ AbortOutOfAnyTransaction(); FlushErrorState(); - MemoryContextResetAndDeleteChildren(PortalContext); + MemoryContextReset(PortalContext); /* restart our transaction for the following operations */ StartTransactionCommand(); diff --git a/src/backend/postmaster/bgwriter.c b/src/backend/postmaster/bgwriter.c index f2e4f23d9f..d02dc17b9c 100644 --- a/src/backend/postmaster/bgwriter.c +++ b/src/backend/postmaster/bgwriter.c @@ -182,7 +182,7 @@ BackgroundWriterMain(void) FlushErrorState(); /* Flush any leaked data in the top-level context */ - MemoryContextResetAndDeleteChildren(bgwriter_context); + MemoryContextReset(bgwriter_context); /* re-initialize to avoid repeated errors causing problems */ WritebackContextInit(&wb_context, &bgwriter_flush_after); diff --git a/src/backend/postmaster/checkpointer.c b/src/backend/postmaster/checkpointer.c index a3c1aba24e..42c807d352 100644 --- a/src/backend/postmaster/checkpointer.c +++ b/src/backend/postmaster/checkpointer.c @@ -290,7 +290,7 @@ CheckpointerMain(void) FlushErrorState(); /* Flush any leaked data in the top-level context */ - MemoryContextResetAndDeleteChildren(checkpointer_context); + MemoryContextReset(checkpointer_context); /* Now we can allow interrupts again */ RESUME_INTERRUPTS(); diff --git a/src/backend/postmaster/walwriter.c b/src/backend/postmaster/walwriter.c index 266fbc2339..48bc92205b 100644 --- a/src/backend/postmaster/walwriter.c +++ b/src/backend/postmaster/walwriter.c @@ -178,7 +178,7 @@ WalWriterMain(void) FlushErrorState(); /* Flush any leaked data in the top-level context */ - MemoryContextResetAndDeleteChildren(walwriter_context); + MemoryContextReset(walwriter_context); /* Now we can allow interrupts again */ RESUME_INTERRUPTS(); diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c index 52a9f136ab..21abf34ef7 100644 --- a/src/backend/replication/logical/worker.c +++ b/src/backend/replication/logical/worker.c @@ -3647,7 +3647,7 @@ LogicalRepApplyLoop(XLogRecPtr last_received) } /* Cleanup the memory. */ - MemoryContextResetAndDeleteChildren(ApplyMessageContext); + MemoryContextReset(ApplyMessageContext); MemoryContextSwitchTo(TopMemoryContext); /* Check if we need to exit the streaming loop. */ diff --git a/src/backend/statistics/extended_stats.c b/src/backend/statistics/extended_stats.c index 9f67a57724..7f014a0cbb 100644 --- a/src/backend/statistics/extended_stats.c +++ b/src/backend/statistics/extended_stats.c @@ -2237,7 +2237,7 @@ compute_expr_stats(Relation onerel, double totalrows, ExecDropSingleTupleTableSlot(slot); FreeExecutorState(estate); - MemoryContextResetAndDeleteChildren(expr_context); + MemoryContextReset(expr_context); } MemoryContextSwitchTo(old_context); diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 6a070b5d8c..e415cf1f34 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -4457,7 +4457,7 @@ PostgresMain(const char *dbname, const char *username) * query input buffer in the cleared MessageContext. */ MemoryContextSwitchTo(MessageContext); - MemoryContextResetAndDeleteChildren(MessageContext); + MemoryContextReset(MessageContext); initStringInfo(&input_message); diff --git a/src/backend/utils/cache/evtcache.c b/src/backend/utils/cache/evtcache.c index 5a721a4046..879c6d87c3 100644 --- a/src/backend/utils/cache/evtcache.c +++ b/src/backend/utils/cache/evtcache.c @@ -91,7 +91,7 @@ BuildEventTriggerCache(void) * This can happen either because a previous rebuild failed, or * because an invalidation happened before the rebuild was complete. */ - MemoryContextResetAndDeleteChildren(EventTriggerCacheContext); + MemoryContextReset(EventTriggerCacheContext); } else { @@ -262,7 +262,7 @@ InvalidateEventCacheCallback(Datum arg, int cacheid, uint32 hashvalue) */ if (EventTriggerCacheState == ETCS_VALID) { - MemoryContextResetAndDeleteChildren(EventTriggerCacheContext); + MemoryContextReset(EventTriggerCacheContext); EventTriggerCache = NULL; } diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index eeb238331e..6aeb855e49 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -1833,7 +1833,7 @@ FlushErrorState(void) errordata_stack_depth = -1; recursion_depth = 0; /* Delete all data in ErrorContext */ - MemoryContextResetAndDeleteChildren(ErrorContext); + MemoryContextReset(ErrorContext); } /* diff --git a/src/include/utils/memutils.h b/src/include/utils/memutils.h index 21640d62a6..d14e8546a6 100644 --- a/src/include/utils/memutils.h +++ b/src/include/utils/memutils.h @@ -66,9 +66,6 @@ extern PGDLLIMPORT MemoryContext CurTransactionContext; /* This is a transient link to the active portal's memory context: */ extern PGDLLIMPORT MemoryContext PortalContext; -/* Backwards compatibility macro */ -#define MemoryContextResetAndDeleteChildren(ctx) MemoryContextReset(ctx) - /* * Memory-context-type-independent functions in mcxt.c -- 2.39.5