Em qua., 23 de jun. de 2021 às 14:38, Ranier Vilela <ranier...@gmail.com>
escreveu:

> Hi,
>
> Not per Coverity!
>
> About comments:
> 1. For drop, no "copy data"
> 2. Only refresh the added/*dropped* list of publications. (my emphasis)
>
> The documentation says:
> https://www.postgresql.org/docs/14/sql-altersubscription.html
>
> "DROP PUBLICATION *publication_name*
>
> Changes the list of subscribed publications. SET replaces the entire list
> of publications with a new list, ADD adds additional publications, DROP
> removes publications from the list of publications. See CREATE
> SUBSCRIPTION
> <https://www.postgresql.org/docs/14/sql-createsubscription.html> for more
> information. By default, this command will also act like REFRESH
> PUBLICATION, except that in case of ADD or DROP, only the added or
> dropped publications are refreshed.
>
> *set_publication_option* specifies additional options for this operation.
> The supported options are:
> refresh (boolean)
>
> When false, the command will not try to refresh table information. REFRESH
> PUBLICATION should then be executed separately. The default is true.
>
> Additionally, refresh options as described under REFRESH PUBLICATION may
> be specified."
> So, is allowed DROP PUBLICATION with (refresh = true)
>
> I try some tests with subscription.sql:
> CREATE SUBSCRIPTION regress_testsub3 CONNECTION
> 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false,
> streaming = true);
> +CREATE SUBSCRIPTION regress_testsub3 CONNECTION
> 'dbname=regress_doesnotexist' PUBLICATION testpub WITH (connect = false,
> streaming = true);
> +WARNING:  tables were not subscribed, you will have to run ALTER
> SUBSCRIPTION ... REFRESH PUBLICATION to subscribe the tables
>
> ALTER SUBSCRIPTION regress_testsub3 ENABLE;
> ALTER SUBSCRIPTION regress_testsub3 REFRESH PUBLICATION;
> +ALTER SUBSCRIPTION regress_testsub3 ENABLE;
> +ALTER SUBSCRIPTION regress_testsub3 REFRESH PUBLICATION;
> +ERROR:  could not connect to the publisher: connection to server at
> "localhost" (::1), port 58080 failed: FATAL:  database
> "regress_doesnotexist" does not exist
>
> -- ok - delete active publication with refresh = true
> ALTER SUBSCRIPTION regress_testsub3 DROP PUBLICATION testpub WITH (refresh
> = true);
> +-- ok - delete active publication with refresh = true
> +ALTER SUBSCRIPTION regress_testsub3 DROP PUBLICATION testpub WITH
> (refresh = true);
> +ERROR:  subscription must contain at least one publication
>
> I think this bug is live, for lack of tests with DROP PUBLICATION WITH
> (refresh = true).
>
https://github.com/postgres/postgres/commit/3af10943ce21450e299b3915b9cad47cd90369e9
fixes some issues with subscriptioncmds.c, but IMHO still lack this issue.

regards,
Ranier Vilela

Reply via email to