Re: UNIQUE null treatment option

Поиск
Список
Период
Сортировка
От Peter Geoghegan
Тема Re: UNIQUE null treatment option
Дата
Msg-id CAH2-Wz=K67yJSuF-VF+FHA7MhGdht2WohFyTmSJeFD0C9bOtSQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: UNIQUE null treatment option  (Peter Eisentraut <peter.eisentraut@enterprisedb.com>)
Ответы Re: UNIQUE null treatment option  (Peter Geoghegan <pg@bowt.ie>)
Re: UNIQUE null treatment option  (Pavel Borisov <pashkin.elfe@gmail.com>)
Re: UNIQUE null treatment option  (Peter Eisentraut <peter.eisentraut@enterprisedb.com>)
Список pgsql-hackers
On Wed, Dec 29, 2021 at 2:06 AM Peter Eisentraut
<peter.eisentraut@enterprisedb.com> wrote:
> Here is a rebased version of this patch.

BTScanInsertData.anynullkeys already effectively means "if the index
is a unique index, then we don't actually need to go through
_bt_check_unique(), or perform any other checkingunique steps". This
is really an instruction about what to do (or not do), based on the
specifics of the values for the insertion scan key plus the index
definition. In other words, the code in _bt_mkscankey() that sets up
BTScanInsertData (an insertion scankey) was written with the exact
requirements of btinsert() in mind -- nothing more.

I wonder if the logic for setting BTScanInsertData.anynullkeys inside
_bt_mkscankey() is the place to put your test for
rel->rd_index->indnullsnotdistinct -- not inside _bt_doinsert(). That
would probably necessitate renaming anynullkeys, but that's okay. This
feels more natural to me because a NULL key column in a NULLS NOT
DISTINCT unique constraint is very similar to a NULL non-key column in
an INCLUDE index, as far as our requirements go -- and so both cases
should probably be dealt with at the same point.

-- 
Peter Geoghegan



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: Refactoring of compression options in pg_basebackup
Следующее
От: Peter Geoghegan
Дата:
Сообщение: Re: UNIQUE null treatment option