Re: unique index with several columns - Mailing list pgsql-sql

From Alexey M Boltenkov
Subject Re: unique index with several columns
Date
Msg-id 8b4b7a41-5181-60db-2bd9-a6fabcd6226f@yandex.ru
Whole thread Raw
In response to Re: unique index with several columns  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses RE: unique index with several columns
List pgsql-sql
On 03/04/22 21:32, Tom Lane wrote:
> Alexey M Boltenkov <padrebolt@yandex.ru> writes:
>> You need the new v15 feature:
>> NULLS [NOT] DISTINCT
> That won't replicate the behavior shown by the OP though.
> In particular, not the weird inconsistency for all-null rows.
>
>             regards, tom lane
>

But why?

# create table t(c1 char, c2 char);
CREATE TABLE
# create unique index idx on t(c1,c2) nulls not distinct where c1 is not 
null or c2 is not null;
CREATE INDEX
# insert into t(c1,c2) values (null,null);
INSERT 0 1
# insert into t(c1,c2) values (null,null);
INSERT 0 1
# insert into t(c1,c2) values ('a',null);
INSERT 0 1
# insert into t(c1,c2) values ('a',null);
ERROR:  23505: duplicate key value violates unique constraint "idx"
DETAIL:  Key (c1, c2)=(a, null) already exists.
SCHEMA NAME:  public
TABLE NAME:  t
CONSTRAINT NAME:  idx
LOCATION:  _bt_check_unique, nbtinsert.c:664
# \d+ t
                                                Table "public.t"
  Column │     Type     │ Collation │ Nullable │ Default │ Storage │ 
Compression │ Stats target │ Description
════════╪══════════════╪═══════════╪══════════╪═════════╪══════════╪═════════════╪══════════════╪═════════════
  c1     │ character(1) │           │          │         │ extended 
│             │              │
  c2     │ character(1) │           │          │         │ extended 
│             │              │
Indexes:
     "idx" UNIQUE, btree (c1, c2) NULLS NOT DISTINCT WHERE c1 IS NOT 
NULL OR c2 IS NOT NULL
Access method: heap
# table t;
  c1 │ c2
════╪════
  ¤  │ ¤
  ¤  │ ¤
  a  │ ¤
(3 rows)




pgsql-sql by date:

Previous
From: Klaus Kaisersberger
Date:
Subject: RE: unique index with several columns
Next
From: Sarita Sharma
Date:
Subject: Re: Bug in tables column data in postgres database