From 034fffbf31be42c789f4a5fbe2edb62e4b07fa9c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 31 Jan 2010 18:15:39 +0000 Subject: Fix memory leak created by deferrable-index-constraints patches. We need to free the OID list returned by ExecInsertIndexTuples to avoid a query-lifespan memory leak. When many rows require rechecking, this can be a significant leak --- it's even more than the space used for the queued trigger events. Dean Rasheed --- src/backend/executor/nodeModifyTable.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/backend/executor/nodeModifyTable.c') diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c index 170dda31373..cad08fa8f72 100644 --- a/src/backend/executor/nodeModifyTable.c +++ b/src/backend/executor/nodeModifyTable.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/executor/nodeModifyTable.c,v 1.4 2010/01/02 16:57:44 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/executor/nodeModifyTable.c,v 1.5 2010/01/31 18:15:39 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -254,6 +254,8 @@ ExecInsert(TupleTableSlot *slot, /* AFTER ROW INSERT Triggers */ ExecARInsertTriggers(estate, resultRelInfo, tuple, recheckIndexes); + list_free(recheckIndexes); + /* Process RETURNING if present */ if (resultRelInfo->ri_projectReturning) return ExecProcessReturning(resultRelInfo->ri_projectReturning, @@ -570,6 +572,8 @@ lreplace:; ExecARUpdateTriggers(estate, resultRelInfo, tupleid, tuple, recheckIndexes); + list_free(recheckIndexes); + /* Process RETURNING if present */ if (resultRelInfo->ri_projectReturning) return ExecProcessReturning(resultRelInfo->ri_projectReturning, -- cgit v1.2.3