It seems to me that when flushing logical mappings to disk, each mapping file leaks the buffer used to pass the mappings to XLogInsert. Also, it seems consistent to allocate that buffer in the RewriteState memory context. Patch attached.
Regards, Ants Aasma -- Cybertec Schönig & Schönig GmbH Gröhrmühlgasse 26 A-2700 Wiener Neustadt Web: http://www.postgresql-support.de
diff --git a/src/backend/access/heap/rewriteheap.c b/src/backend/access/heap/rewriteheap.c index 4cf07ea..ae439e8 100644 --- a/src/backend/access/heap/rewriteheap.c +++ b/src/backend/access/heap/rewriteheap.c @@ -897,7 +897,7 @@ logical_heap_rewrite_flush_mappings(RewriteState state) /* write all mappings consecutively */ len = src->num_mappings * sizeof(LogicalRewriteMappingData); - waldata = palloc(len); + waldata = MemoryContextAlloc(state->rs_cxt, len); waldata_start = waldata; /* @@ -943,6 +943,7 @@ logical_heap_rewrite_flush_mappings(RewriteState state) /* write xlog record */ XLogInsert(RM_HEAP2_ID, XLOG_HEAP2_REWRITE, rdata); + pfree(waldata); } Assert(state->rs_num_rewrite_mappings == 0); }
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers