ALTER SUBSCRIPTION REFRESH PUBLICATION has default copy_data = true?

Started by Peter Smithover 4 years ago4 messages
#1Peter Smith
smithpb2250@gmail.com

Hi.

The documentation of ALTER SUBSCRIPTION REFRESH PUBLICATION [1]https://www.postgresql.org/docs/devel/sql-altersubscription.html says:

----------

REFRESH PUBLICATION

Fetch missing table information from publisher. This will start
replication of tables that were added to the subscribed-to
publications since the last invocation of REFRESH PUBLICATION or since
CREATE SUBSCRIPTION.

refresh_option specifies additional options for the refresh operation.
The supported options are:

copy_data (boolean)

Specifies whether the existing data in the publications that are being
subscribed to should be copied once the replication starts. The
default is true. (Previously subscribed --tables are not copied.)

----------

But I found that default copy_data = true to be unintuitive.

e.g. When I had previously done the CREATE SUBSCRIPTION using
copy_data = false, then I assumed (wrongly) that the subscription
default would remain as copy_data = false even when doing the REFRESH
PUBLICATION.

Is that a deliberate functionality, or is it a quirk / bug?

------
[1]: https://www.postgresql.org/docs/devel/sql-altersubscription.html

Kind Regards,
Peter Smith.
Fujitsu Australia

#2Peter Eisentraut
peter.eisentraut@enterprisedb.com
In reply to: Peter Smith (#1)
Re: ALTER SUBSCRIPTION REFRESH PUBLICATION has default copy_data = true?

On 02.06.21 03:10, Peter Smith wrote:

The documentation of ALTER SUBSCRIPTION REFRESH PUBLICATION [1] says:

But I found that default copy_data = true to be unintuitive.

e.g. When I had previously done the CREATE SUBSCRIPTION using
copy_data = false, then I assumed (wrongly) that the subscription
default would remain as copy_data = false even when doing the REFRESH
PUBLICATION.

Is that a deliberate functionality, or is it a quirk / bug?

copy_data is an option of the action, not a property of the
subscription. The difference between those two things is admittedly not
clearly (at all?) documented.

However, I'm not sure whether creating a subscription that always
defaults to copy_data=false for tables added in the future is useful
functionality, so I think the current behavior is okay.

#3Bharath Rupireddy
bharath.rupireddyforpostgres@gmail.com
In reply to: Peter Smith (#1)
Re: ALTER SUBSCRIPTION REFRESH PUBLICATION has default copy_data = true?

On Wed, Jun 2, 2021 at 6:40 AM Peter Smith <smithpb2250@gmail.com> wrote:

Hi.

The documentation of ALTER SUBSCRIPTION REFRESH PUBLICATION [1] says:

----------

REFRESH PUBLICATION

Fetch missing table information from publisher. This will start
replication of tables that were added to the subscribed-to
publications since the last invocation of REFRESH PUBLICATION or since
CREATE SUBSCRIPTION.

refresh_option specifies additional options for the refresh operation.
The supported options are:

copy_data (boolean)

Specifies whether the existing data in the publications that are being
subscribed to should be copied once the replication starts. The
default is true. (Previously subscribed --tables are not copied.)

----------

But I found that default copy_data = true to be unintuitive.

e.g. When I had previously done the CREATE SUBSCRIPTION using
copy_data = false, then I assumed (wrongly) that the subscription
default would remain as copy_data = false even when doing the REFRESH
PUBLICATION.

The fact is that the options copy_data, create_slot and connect are
not stored in the catalog pg_subscription (actually they don't need to
be). Among these the copy_data option can be specified in the ALTER
... SUBSCRIPTION.

Is that a deliberate functionality, or is it a quirk / bug?

I don't think it's a bug. Maybe adding a note in the docs about the
options which are stored/not stored in the pg_subscription catalog
would help.

With Regards,
Bharath Rupireddy.

#4Peter Smith
smithpb2250@gmail.com
In reply to: Peter Eisentraut (#2)
Re: ALTER SUBSCRIPTION REFRESH PUBLICATION has default copy_data = true?

On Thu, Jun 3, 2021 at 12:52 AM Peter Eisentraut
<peter.eisentraut@enterprisedb.com> wrote:

Is that a deliberate functionality, or is it a quirk / bug?

copy_data is an option of the action, not a property of the
subscription. The difference between those two things is admittedly not
clearly (at all?) documented.

However, I'm not sure whether creating a subscription that always
defaults to copy_data=false for tables added in the future is useful
functionality, so I think the current behavior is okay.

...

On Thu, Jun 3, 2021 at 12:53 AM Bharath Rupireddy
<bharath.rupireddyforpostgres@gmail.com> wrote:

Is that a deliberate functionality, or is it a quirk / bug?

I don't think it's a bug....

...

OK. Thanks to both of you for sharing your thoughts about it.

------
Kind Regards,
Peter Smith
Fujitsu Australia