BUG #16767: Silent dropping of CONSTRAINT... UNIQUE
The Post Office <noreply@postgresql.org>
From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: boekewurm+postgres@gmail.com
Date: 2020-12-08T14:17:36Z
Lists: pgsql-bugs
The following bug has been logged on the website: Bug reference: 16767 Logged by: Matthias vd Meent Email address: boekewurm+postgres@gmail.com PostgreSQL version: 12.5 Operating system: Debian Stretch (9.13) Description: Hi, I've just noticed that equivalent unique constraints that are specified in the same statement only generate one constraint; but if they are specified in different statements they generate the correct constraints. E.g.: CREATE TABLE test ( id bigint, val test, CONSTRAINT u_id UNIQUE (id), CONSTRAINT u_id2 UNIQUE (id), CONSTRAINT pk_id PRIMARY KEY (id), CONSTRAINT u_val UNIQUE (val) ); vs CREATE TABLE test ( id bigint, val test ); ALTER TABLE test ADD CONSTRAINT u_id UNIQUE (id); ALTER TABLE test ADD CONSTRAINT u_id2 UNIQUE (id); ALTER TABLE test ADD CONSTRAINT pk_id PRIMARY KEY (id); ALTER TABLE test ADD CONSTRAINT u_val UNIQUE (val); The first only results in a primary key on (id), and unique(val), the second (correctly?) generates 4 constraints on the test table. This unexpected and undocumented behaviour also exists at least in pg10.15 and pg11.10 -Matthias
Commits
-
Doc: clarify that CREATE TABLE discards redundant unique constraints.
- e824ddc37f3c 12.6 landed
- 567d6d1ff617 10.16 landed
- 5303706b3208 11.11 landed
- 2bf5d1a74a33 9.6.21 landed
- 14db95792221 9.5.25 landed
- f2a69b352de1 14.0 landed
- c6f8d17d04d1 13.2 landed