Hi Zhijie Hou, Thank you for the patches, I built and tested the patches locally, and they work as expected.
> I think that instead of building a bitmap and passing it to tuples_equal(), we > can write a new helper function that directly traverses the index columns in > the slot and compares each of them, similar to what identity_key_equal() does > in pg_repack. I think that's a more standard approach, because we can use the > index's opclass equality function and collation for the comparison rather than > reusing the table attributes'. It is also more efficient, since it avoids > building a new bitmap and avoids the typecache lookup. It may not show a > performance difference, but I feel it's worth doing better in a common code > path (update/delete replay) like this one. +1 > The same issue exists on HEAD as well for the update_deleted detection code > path. I tried writing a patch to replace the update_deleted code path first in > 0001 (since it's an existing issue, I've kept it in a separate patch for now > to > make it easier to review; we can merge the two patches and commit them > together > later if we agree). 0001 includes a test for the collation inconsistency > issue. > > And I rebased the WITHOUT OVERLAPS fix on top of it, modifying it to use the > new approach for tuple comparison and slightly adjusting some commit messages > and comments. > > I'm sharing both patches here since both touch the same code path > and overlap. Hope it helps move the thread forward. v30001 +v30002 LGTM.
