From 70ab0e6ddc7514af58bf92ca47ea37b02eec8a04 Mon Sep 17 00:00:00 2001 From: Peter Smith Date: Fri, 30 Apr 2021 12:12:28 +1000 Subject: [PATCH v1] Fix wrconn. Use stack variable. Unlike the other function in the subscriptioncmds.c, the AlterSubscription_refresh was accidentally using the global variable "wrconn" instead of a local stack variable. Confusion probably due to same named local/global variables. --- src/backend/commands/subscriptioncmds.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index ec5c409..668cecd 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -601,18 +601,19 @@ AlterSubscription_refresh(Subscription *sub, bool copy_data) char state; } SubRemoveRels; SubRemoveRels *sub_remove_rels; + WalReceiverConn *wrconn; /* Load the library providing us libpq calls. */ load_file("libpqwalreceiver", false); + /* Try to connect to the publisher. */ + wrconn = walrcv_connect(sub->conninfo, true, sub->name, &err); + if (!wrconn) + ereport(ERROR, + (errmsg("could not connect to the publisher: %s", err))); + PG_TRY(); { - /* Try to connect to the publisher. */ - wrconn = walrcv_connect(sub->conninfo, true, sub->name, &err); - if (!wrconn) - ereport(ERROR, - (errmsg("could not connect to the publisher: %s", err))); - /* Get the table list from publisher. */ pubrel_names = fetch_table_list(wrconn, sub->publications); @@ -782,8 +783,7 @@ AlterSubscription_refresh(Subscription *sub, bool copy_data) } PG_FINALLY(); { - if (wrconn) - walrcv_disconnect(wrconn); + walrcv_disconnect(wrconn); } PG_END_TRY(); -- 1.8.3.1