Manuel Rigger <rigger.manuel@gmail.com> writes:
> Consider the following statement sequence:
> CREATE TABLE t0(c0 INTEGER , c1 BOOLEAN);
> INSERT INTO t0(c0, c1) VALUES(1369652450, FALSE), (414515746, TRUE),
> (897778963, FALSE);
> CREATE UNIQUE INDEX i0 ON t0((1 / t0.c0)) WHERE ('-H') >=
> (t0.c1::TEXT) COLLATE "C";
> REINDEX TABLE CONCURRENTLY t0;
> ALTER TABLE t0 ALTER c1 TYPE TEXT; -- could not create unique index
> "i0" DETAIL: Key ((1 / c0))=(0) is duplicated.
> The REINDEX TABLE CONCURRENTLY causes the ALTER TABLE to fail, which
> is unexpected.
BTW, a note for anybody trying to follow along at home --- this example
does not reproduce if the database's default collation is "C".
regards, tom lane