Re: Conflict Detection and Resolution - Mailing list pgsql-hackers
From | Nisha Moond |
---|---|
Subject | Re: Conflict Detection and Resolution |
Date | |
Msg-id | CABdArM6Addr9LtTxsgxV6c2-G9x0rJs=QHJMCqaLCiPB_36Aqg@mail.gmail.com Whole thread Raw |
In response to | Re: Conflict Detection and Resolution (shveta malik <shveta.malik@gmail.com>) |
Responses |
Re: Conflict Detection and Resolution
|
List | pgsql-hackers |
On Tue, Oct 1, 2024 at 9:48 AM shveta malik <shveta.malik@gmail.com> wrote: > > On Mon, Sep 30, 2024 at 2:55 PM Peter Smith <smithpb2250@gmail.com> wrote: > > > > On Mon, Sep 30, 2024 at 4:29 PM shveta malik <shveta.malik@gmail.com> wrote: > > > > > > On Mon, Sep 30, 2024 at 11:04 AM Peter Smith <smithpb2250@gmail.com> wrote: > > > > > > > > On Mon, Sep 30, 2024 at 2:27 PM shveta malik <shveta.malik@gmail.com> wrote: > > > > > > > > > > On Fri, Sep 27, 2024 at 1:00 PM Peter Smith <smithpb2250@gmail.com> wrote: > > > > > > > > > > > ~~~ > > > > > > > > > > > > 14. > > > > > > 99. General - ordering of conflict_resolver > > > > > > > > > > > > nit - ditto. Let's name these in alphabetical order. IMO it makes more > > > > > > sense than the current random ordering. > > > > > > > > > > > > > > > > I feel ordering of resolvers should be same as that of conflict > > > > > types, i.e. resolvers of insert variants first, then update variants, > > > > > then delete variants. But would like to know what others think on > > > > > this. > > > > > > > > > > > > > Resolvers in v14 were documented in this random order: > > > > error > > > > skip > > > > apply_remote > > > > keep_local > > > > apply_or_skip > > > > apply_or_error > > > > > > > > > > Yes, these should be changed. > > > > > > > Some of these are resolvers for different conflicts. How can you order > > > > these as "resolvers for insert" followed by "resolvers for update" > > > > followed by "resolvers for delete" without it all still appearing in > > > > random order? > > > > > > I was thinking of ordering them like this: > > > > > > apply_remote: applicable to insert_exists, update_exists, > > > update_origin_differ, delete_origin_differ > > > keep_local: applicable to insert_exists, > > > update_exists, update_origin_differ, delete_origin_differ > > > apply_or_skip: applicable to update_missing > > > apply_or_error : applicable to update_missing > > > skip: applicable to update_missing and > > > delete_missing > > > error: applicable to all. > > > > > > i.e. in order of how they are applicable to conflict_types starting > > > from insert_exists till delete_origin_differ (i.e. reading > > > ConflictTypeResolverMap, from left to right and then top to bottom). > > > Except I have kept 'error' at the end instead of keeping it after > > > 'keep_local' as the former makes more sense there. > > > > > > > This proves my point because, without your complicated explanation to > > accompany it, the final order (below) just looks random to me: > > apply_remote > > keep_local > > apply_or_skip > > apply_or_error > > skip > > error > > > > Unless there is some compelling reason to do it differently, I still > > prefer A-Z (the KISS principle). > > > > The "applicable to conflict_types" against each resolver (which will > be mentioned in doc too) is a pretty good reason in itself to keep the > resolvers in the suggested order. To me, it seems more logical than > placing 'apply_or_error' which only applies to the 'update_missing' > conflict_type at the top, while 'error,' which applies to all > conflict_types, placed in the middle. But I understand that > preferences may vary, so I'll leave this to the discretion of others. > In v15, I maintained the original order of conflict_resolver, which to me seems reasonable from a user perspective: error skip apply_remote keep_local apply_or_error apply_or_skip I will hold this order until we receive feedback from others, and we can finalize the new order if necessary. Thanks, Nisha
pgsql-hackers by date: