Re: Reuse the dead item on unique index. - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Reuse the dead item on unique index.
Date
Msg-id 11730.1128743941@sss.pgh.pa.us
Whole thread Raw
In response to Reuse the dead item on unique index.  (Atsushi Ogawa <atsushi.ogawa@gmail.com>)
Responses Re: Reuse the dead item on unique index.
List pgsql-hackers
Atsushi Ogawa <atsushi.ogawa@gmail.com> writes:
> When _bt_check_unique finds a dead item that has same data as new
> item, LP_DEAD is set to the item. Can we reuse this dead item instead
> of inserting new item?

This strikes me as a pretty bad idea for the same reason pointed out
recently in other threads: the notion of equality embodied in a btree
opclass' equals function may have little or nothing to do with true
identity.  So your assumption that it's the "same" data is faulty.

Also, I'm dubious about the assumption that "can be marked LP_DELETED"
is the same as "can be physically removed right now".  The side-effects
on indexscans happening concurrently with yours could be bad.  At the
very least you'd need to obtain super-exclusive lock (cf btbulkdelete)
before doing the replacement.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Atsushi Ogawa
Date:
Subject: Reuse the dead item on unique index.
Next
From: sandeep satpal
Date:
Subject: Re: Issue is changing _bt_compare function and