On Thursday, June 13, 2024 8:46 PM Peter Eisentraut <peter@eisentraut.org> wrote:
>
> On 23.05.24 08:36, shveta malik wrote:
> > Conflict Resolution
> > ----------------
> > a) latest_timestamp_wins: The change with later commit timestamp
> wins.
> > b) earliest_timestamp_wins: The change with earlier commit timestamp
> wins.
> > c) apply: Always apply the remote change.
> > d) skip: Remote change is skipped.
> > e) error: Error out on conflict. Replication is stopped, manual
> > action is needed.
>
> You might be aware of pglogical, which has similar conflict resolution modes,
> but they appear to be spelled a bit different. It might be worth reviewing this,
> so that we don't unnecessarily introduce differences.
Right. Some of the proposed resolution names are different from pglogical's
while the functionalities are the same. The following is the comparison with
pglogical:
latest_timestamp_wins(proposal) - last_update_wins(pglogical)
earliest_timestamp_wins(proposal) - first_update_wins(pglogical)
apply(proposal) - apply_remote(pglogical)
skip(proposal) - keep_local(pglogical)
I personally think the pglogical's names read more naturally. But others may
have different opinions on this.
>
> https://github.com/2ndquadrant/pglogical?tab=readme-ov-file#conflicts
>
> There might also be other inspiration to be found related to this in pglogical
> documentation or code.
Another difference is that we allow users to specify different resolutions for
different conflicts, while pglogical allows specifying one resolution for all conflict.
I think the proposed approach offers more flexibility to users, which seems more
favorable to me.
Best Regards,
Hou zj