Re: Reuse the dead item on unique index.

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

In response to

Responses

Browse pgsql-hackers by date

  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.