From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Atsushi Ogawa <atsushi(dot)ogawa(at)gmail(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Reuse the dead item on unique index. |
Date: | 2005-10-08 03:59:01 |
Message-ID: | 11730.1128743941@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Atsushi Ogawa <atsushi(dot)ogawa(at)gmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Luke Lonergan | 2005-10-08 04:20:59 | Re: [HACKERS] A Better External Sort? |
Previous Message | Atsushi Ogawa | 2005-10-08 03:32:28 | Reuse the dead item on unique index. |