From: | Peter Smith <smithpb2250(at)gmail(dot)com> |
---|---|
To: | Shubham Khanna <khannashubham1197(at)gmail(dot)com> |
Cc: | "Zhijie Hou (Fujitsu)" <houzj(dot)fnst(at)fujitsu(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Add support for specifying tables in pg_createsubscriber. |
Date: | 2025-09-15 00:30:56 |
Message-ID: | CAHut+PuJ21hY8LMsjQ0Gr9OLbg5KoK00799+JAcDyQr+s8O1uw@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | 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
From | Date | Subject | |
---|---|---|---|
Next Message | Chao Li | 2025-09-15 01:49:22 | Re: Fix missing EvalPlanQual recheck for TID scans |
Previous Message | Chao Li | 2025-09-15 00:18:52 | Re: remove unnecessary include in src/backend/commands/policy.c |