On 2020-04-09 09:28, Amit Langote wrote:
This patch makes the tests pass for me:diff --git a/src/backend/replication/pgoutput/pgoutput.c b/src/backend/replication/pgoutput/pgoutput.c index 5fbf2d4367..cf6e8629c1 100644 --- a/src/backend/replication/pgoutput/pgoutput.c +++ b/src/backend/replication/pgoutput/pgoutput.c @@ -305,7 +305,7 @@ maybe_send_schema(LogicalDecodingContext *ctx, /* Map must live as long as the session does. */ oldctx = MemoryContextSwitchTo(CacheMemoryContext); - relentry->map = convert_tuples_by_name(indesc, outdesc); + relentry->map = convert_tuples_by_name(CreateTupleDescCopy(indesc), CreateTupleDescCopy(outdesc)); MemoryContextSwitchTo(oldctx); send_relation_and_attrs(ancestor, ctx); RelationClose(ancestor); Please check.Thanks. Yes, that's what I just found out too and was about to send a patch, which is basically same as yours as far as the fix for this issue is concerned.
I have committed my patch but not ...
While figuring this out, I thought the nearby code could be rearranged a bit, especially to de-duplicate the code. Also, I think get_rel_sync_entry() may be a better place to set the map, rather than maybe_send_schema(). Thoughts?
because I didn't really have an opinion on that at the time, but if you still want it considered or have any open thoughts on this thread, please resend or explain.
-- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
