Subject: Re: Conflict Detection and Resolution

From: Robert Haas <[email-masked]>
Date: Thu, 13 Jun 2024 14:39:56 -0400

On Thu, May 23, 2024 at 2:37 AM shveta malik <[email-masked]> wrote:
> c) update_deleted: The row with the same value as that incoming
> update's key does not exist. The row is already deleted. This conflict
> type is generated only if the deleted row is still detectable i.e., it
> is not removed by VACUUM yet. If the row is removed by VACUUM already,
> it cannot detect this conflict. It will detect it as update_missing
> and will follow the default or configured resolver of update_missing
> itself.

I think this design is categorically unacceptable. It amounts to
designing a feature that works except when it doesn't. I'm not exactly
sure how the proposal should be changed to avoid depending on the
timing of VACUUM, but I think it's absolutely not OK to depend on the
timing of VACUUm -- or, really, this is going to depend on the timing
of HOT-pruning, which will often happen almost instantly.

-- 
Robert Haas
EDB: http://www.enterprisedb.com