Peter Eisentraut wrote:

> Here is an updated patch.

On a table with pre-existing contents, the creation of a unique index
does not seem to detect the duplicates that are equal per the
collation and different binary-wise.

postgres=# \d test3ci
                Table "public.test3ci"
 Column | Type |    Collation     | Nullable | Default 
--------+------+------------------+----------+---------
 x      | text | case_insensitive |          | 

postgres=# select * from test3ci;
  x  
-----
 abc
 ABC
 def
 ghi
(4 rows)

postgres=# create unique index idx on test3ci(x);  -- EXPECTED TO FAIL
CREATE INDEX

postgres=# \d test3ci
                Table "public.test3ci"
 Column | Type |    Collation     | Nullable | Default 
--------+------+------------------+----------+---------
 x      | text | case_insensitive |          | 
Indexes:
    "idx" UNIQUE, btree (x)

postgres=# select count(*) from test3ci where x='abc';
 count 
-------
     2
(1 row)

OTOH with an already existing unique index, attempts to insert
such duplicates are rejected as expected.


Best regards,
-- 
Daniel Vérité
PostgreSQL-powered mailer: http://www.manitou-mail.org
Twitter: @DanielVerite

Reply via email to