Dear Shubham,

Thanks for updating the patch. Few comments.

01. CreateSubscriberOptions
```
+       bool            cleanup_existing_publications;  /* drop all 
publications */
```

My previous comment [1] #1 did not intend to update attributes. My point was
only for the third argument of setup_subscriber().

02. setup_subscriber()
```
+                       pg_log_info("cleaning up existing publications on the 
subscriber");
```

I don't think this output is needed. check_and_drop_existing_publications() has 
the similar output.

03. drop_publication_by_name()
```
+
+       appendPQExpBuffer(query, "DROP PUBLICATION %s", pubname_esc);
+       pg_log_info("dropping publication %s in database \"%s\"", pubname, 
dbname);
+       pg_log_debug("command is: %s", query->data);

```

Currently, appendPQExpBuffer() is done after the pg_log_info(). Please reserve 
current ordering if
there are no reasons. Also, variable "str" is currently used instead of query, 
please follow.

04. drop_publication_by_name()
```
        if (!dry_run)
        {
-               res = PQexec(conn, str->data);
+               res = PQexec(conn, query->data);
                if (PQresultStatus(res) != PGRES_COMMAND_OK)
+                       dbinfo->made_publication = false;
+               else
                {
-                       pg_log_error("could not drop publication \"%s\" in 
database \"%s\": %s",
-                                                dbinfo->pubname, 
dbinfo->dbname, PQresultErrorMessage(res));
-                       dbinfo->made_publication = false;       /* don't try 
again. */
-
-                       /*
-                        * Don't disconnect and exit here. This routine is used 
by primary
-                        * (cleanup publication / replication slot due to an 
error) and
-                        * subscriber (remove the replicated publications). In 
both cases,
-                        * it can continue and provide instructions for the 
user to remove
-                        * it later if cleanup fails.
-                        */
+                       pg_log_error("could not drop publication %s in database 
\"%s\": %s",
+                                                pubname, dbname, 
PQresultErrorMessage(res));
                }
```

pg_log_error() is exected when the command succeed: This is not correct.

05. 040_pg_createsubscriber.pl
```
+# Set up node A as primary
+my $node_a = PostgreSQL::Test::Cluster->new('node_a');
+my $aconnstr = $node_a->connstr;
+$node_a->init(allows_streaming => 'logical');
+$node_a->append_conf('postgresql.conf', 'autovacuum = off');
+$node_a->start;
```

I don't think new primary is not needed. Can't you reuse node_p?

[1]: 
https://www.postgresql.org/message-id/OSCPR01MB14966D845AC77FC46ECEECCE4F5C72%40OSCPR01MB14966.jpnprd01.prod.outlook.com

Best regards,
Hayato Kuroda
FUJITSU LIMITED

Reply via email to