@@ -897,8 +897,7 @@ logical_heap_rewrite_flush_mappings(RewriteState state)
897897
898898/* write all mappings consecutively */
899899len = src -> num_mappings * sizeof (LogicalRewriteMappingData );
900- waldata = palloc (len );
901- waldata_start = waldata ;
900+ waldata_start = waldata = palloc (len );
902901
903902/*
904903 * collect data we need to write out, but don't modify ondisk data yet
@@ -921,6 +920,9 @@ logical_heap_rewrite_flush_mappings(RewriteState state)
921920src -> num_mappings -- ;
922921}
923922
923+ Assert (src -> num_mappings == 0 );
924+ Assert (waldata == waldata_start + len );
925+
924926/*
925927 * Note that we deviate from the usual WAL coding practices here,
926928 * check the above "Logical rewrite support" comment for reasoning.
@@ -933,8 +935,6 @@ logical_heap_rewrite_flush_mappings(RewriteState state)
933935written ,len )));
934936src -> off += len ;
935937
936- Assert (src -> num_mappings == 0 );
937-
938938rdata [1 ].data = waldata_start ;
939939rdata [1 ].len = len ;
940940rdata [1 ].buffer = InvalidBuffer ;
@@ -943,6 +943,7 @@ logical_heap_rewrite_flush_mappings(RewriteState state)
943943/* write xlog record */
944944XLogInsert (RM_HEAP2_ID ,XLOG_HEAP2_REWRITE ,rdata );
945945
946+ pfree (waldata_start );
946947}
947948Assert (state -> rs_num_rewrite_mappings == 0 );
948949}