Re: Add support for specifying tables in pg_createsubscriber. - Mailing list pgsql-hackers

From Peter Smith
Subject Re: Add support for specifying tables in pg_createsubscriber.
Date
Msg-id CAHut+PuJ21hY8LMsjQ0Gr9OLbg5KoK00799+JAcDyQr+s8O1uw@mail.gmail.com
Whole thread Raw
In response to Re: Add support for specifying tables in pg_createsubscriber.  (Shubham Khanna <khannashubham1197@gmail.com>)
Responses Re: Add support for specifying tables in pg_createsubscriber.
List pgsql-hackers
Hi Shubham,

IIUC the v6 will be rewritten to remove the new option, in favour of
just redefining the --publication option behaviour.

So, much of the current v6 will become obsolete. The below comment is
just for one piece of code that I thought will survive the rewrite.

======
src/bin/pg_basebackup/pg_createsubscriber.c

setup_publisher:

1.
+ /*
+ * Check if publication already exists when
+ * --reuse-existing-publications is specified
+ */
+ if (opt->reuse_existing_pubs && check_publication_exists(conn,
dbinfo[i].pubname, dbinfo[i].dbname))
+ {
+ pg_log_info("using existing publication \"%s\" in database \"%s\"",
+ dbinfo[i].pubname, dbinfo[i].dbname);
+ make_pub = false;
+ }
+
  /*
  * Create publication on publisher. This step should be executed
  * *before* promoting the subscriber to avoid any transactions between
  * consistent LSN and the new publication rows (such transactions
  * wouldn't see the new publication rows resulting in an error).
  */
- create_publication(conn, &dbinfo[i]);
+ if (make_pub)
+ {
+ create_publication(conn, &dbinfo[i]);
+ dbinfo[i].made_publication = true;
+ if (opt->reuse_existing_pubs)
+ pg_log_info("created publication \"%s\" in database \"%s\"",
+ dbinfo[i].pubname, dbinfo[i].dbname);
+ }
+ else
+ dbinfo[i].made_publication = false;

I think there are still too many if/else here. This logic can be
simplified like below:

if (check_publication_exists(...))
{
  pg_log_info("using existing publication...");
  dbinfo[i].made_publication = false;
}
else
{
  create_publication(conn, &dbinfo[i]);
  pg_log_info("created publication ...");
  dbinfo[i].made_publication = true;
}

======
Kind Regards,
Peter Smith
Fujitsu Australia



pgsql-hackers by date:

Previous
From: Chao Li
Date:
Subject: Re: remove unnecessary include in src/backend/commands/policy.c
Next
From: Chao Li
Date:
Subject: Re: Fix missing EvalPlanQual recheck for TID scans