Skip to content

Commit e3cc931

Browse files
author
Antonin Houska
committed
Fix handling of tuple descriptors.
1 parent 57f2b1e commit e3cc931

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

pg_rewrite.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,6 +1192,11 @@ rewrite_table_impl(char *relschema_src, char *relname_src,
11921192
}
11931193

11941194
free_modify_table_state(mtstate);
1195+
/*
1196+
* ExecFindPartition() might have pinned tuple descriptors of the
1197+
* partitions.
1198+
*/
1199+
ExecResetTupleTable(estate->es_tupleTable, true);
11951200
FreeExecutorState(estate);
11961201
if (conv_map)
11971202
free_conversion_map_ext(conv_map);
@@ -1525,11 +1530,8 @@ setup_decoding(Relation rel)
15251530

15261531
/*
15271532
* Tuple descriptor of the source relation might be needed for decoding.
1528-
*
1529-
* Copy is needed because we'll close the relation before using the tuple
1530-
* descriptor.
15311533
*/
1532-
dstate->tupdesc_src = CreateTupleDescCopy(RelationGetDescr(rel));
1534+
dstate->tupdesc_src = RelationGetDescr(rel);
15331535

15341536
MemoryContextSwitchTo(oldcontext);
15351537

@@ -1546,7 +1548,6 @@ decoding_cleanup(LogicalDecodingContext *ctx)
15461548

15471549
ExecDropSingleTupleTableSlot(dstate->tsslot);
15481550
FreeTupleDesc(dstate->tupdesc_change);
1549-
FreeTupleDesc(dstate->tupdesc_src);
15501551
tuplestore_end(dstate->tstore);
15511552

15521553
FreeDecodingContext(ctx);

0 commit comments

Comments
 (0)