On Fri, Feb 7, 2025 at 7:46 AM Hayato Kuroda (Fujitsu) <kuroda.hay...@fujitsu.com> wrote: > > Dear Shubham, > > Thanks for updating the patch. > > Previously you told that you had a plan to extend the patch to drop other > replication > objects [1], but I think it is not needed. pg_createsubscriber has already > been > able to drop the existing subscrisubscriptions in > check_and_drop_existing_subscriptions(). > As for the replication slot, I have told in [2], it would be created > intentionally > thus I feel it should not be dropped. > Thus I regard the patch does not have concrete extending plan. > > Below part contains my review comment. > > 01. Option name > > Based on the above discussion, "--cleanup-publisher-objects" is not suitable > because > it won't drop replication slots. How about "--cleanup-publications"? >
I have changed the name of the option to "--cleanup-existing-publications" > 02. usage() > ``` > + printf(_(" -C --cleanup-publisher-objects drop all publications on > the logical replica\n")); > ``` Fixed. > s/logical replica/subscriber > > 03. drop_all_publications > ``` > +/* Drops all existing logical replication publications from all subscriber > + * databases > + */ > +static void > ``` > > Initial line of the comment must be blank [3]. > Removed this function. > 04. main > ``` > + {"cleanup-publisher-objects", no_argument, NULL, 'C'}, > ``` > > Is there a reason why upper case is used? I feel lower one is enough. > Fixed. > 05. main > ``` > + /* Drop publications from the subscriber if requested */ > + if (opt.cleanup_publisher_objects) > + drop_all_publications(dbinfo); > ``` > > After considering more, I noticed that we have already called > drop_publication() > in the setup_subscriber(). Can we call drop_all_publications() there instead > when > -C is specified? > I agree with you on this. I have removed the drop_all_publication() and added the "--cleanup-existing-publications" option to the drop_publication() > 06. 040_pg_createsubscriber.pl > > ``` > +$node_s->start; > +# Create publications to test it's removal > +$node_p->safe_psql($db1, "CREATE PUBLICATION test_pub FOR ALL TABLES;"); > +$node_p->safe_psql($db1, "CREATE PUBLICATION test_pub2 FOR ALL TABLES;"); > + > +# Verify the existing publications > +my $pub_count_before = > + $node_s->safe_psql($db1, "SELECT COUNT(*) FROM pg_publication;"); > +is($pub_count_before, '2', > + 'two publications created before --cleanup-publisher-objects is run'); > + > +$node_s->stop; > ``` > > I feel it requires unnecessary startup and shutdown. IIUC, creating > publications and check > counts can be before stopping the node_s, around line 331. > Fixed. > 07. 040_pg_createsubscriber.pl > > ``` > +$node_p->safe_psql($db1, "CREATE PUBLICATION test_pub FOR ALL TABLES;"); > +$node_p->safe_psql($db1, "CREATE PUBLICATION test_pub2 FOR ALL TABLES;"); > + > +# Verify the existing publications > +my $pub_count_before = > + $node_s->safe_psql($db1, "SELECT COUNT(*) FROM pg_publication;"); > +is($pub_count_before, '2', > + 'two publications created before --cleanup-publisher-objects is run'); > + > ``` > > Also, there is a possibility that CREATE PUBLICATION on node_p is not > replicated yet > when SELECT COUNT(*) is executed. Please wait for the replay. > > [1]: > https://www.postgresql.org/message-id/CAHv8RjL4OvoYafofTb_U_JD5HuyoNowBoGpMfnEbhDSENA74Kg%40mail.gmail.com > [2]: > https://www.postgresql.org/message-id/OSCPR01MB1496664FDC38DA40A441F449FF5EE2%40OSCPR01MB14966.jpnprd01.prod.outlook.com > [3]: https://www.postgresql.org/docs/devel/source-format.html > Fixed. The attached Patch contains the suggested changes. Thanks and regards, Shubham Khanna.
v4-0001-Support-for-dropping-all-publications-in-pg_creat.patch
Description: Binary data