On Mon, Oct 12, 2020 at 3:44 AM David Christensen <da...@endpoint.com> wrote:
>
>
> On Oct 11, 2020, at 1:14 PM, Euler Taveira <euler.tave...@2ndquadrant.com> 
> wrote:
>
> 
> On Fri, 9 Oct 2020 at 15:54, David Christensen <da...@endpoint.com> wrote:
>>
>>
>> Enclosed find a patch to add a “truncate” option to subscription commands.
>>
>> When adding new tables to a subscription (either via `CREATE SUBSCRIPTION` 
>> or `REFRESH PUBLICATION`), tables on the target which are being newly 
>> subscribed will be truncated before the data copy step.  This saves explicit 
>> coordination of a manual `TRUNCATE` on the target tables and allows the 
>> results of the initial data sync to be the same as on the publisher at the 
>> time of sync.
>>
>> To preserve compatibility with existing behavior, the default value for this 
>> parameter is `false`.
>>
>
> Truncate will fail for tables whose foreign keys refer to it. If such a 
> feature cannot handle foreign keys, the usefulness will be restricted.
>
>
> This is true for existing “truncate” with FKs, so doesn’t seem to be any 
> different to me.
>

What would happen if there are multiple tables and truncate on only
one of them failed due to FK check? Does it give an error in such a
case, if so will the other tables be truncated?

> Hypothetically if you checked all new tables and could verify if there were 
> FK cycles only already in the new tables being added then “truncate cascade” 
> would be fine. Arguably if they had existing tables that were part of an FK 
> that wasn’t fully replicated they were already operating brokenly.
>

I think if both PK_table and FK_table are part of the same
subscription then there should be a problem as both them first get
truncated? If they are part of a different subscription (or if they
are not subscribed due to whatever reason) then probably we need to
deal such cases carefully.

-- 
With Regards,
Amit Kapila.


Reply via email to