BUG #16767: Silent dropping of CONSTRAINT... UNIQUE - Mailing list pgsql-bugs

From PG Bug reporting form
Subject BUG #16767: Silent dropping of CONSTRAINT... UNIQUE
Date
Msg-id 16767-1714a2056ca516d0@postgresql.org
Whole thread Raw
Responses Re: BUG #16767: Silent dropping of CONSTRAINT... UNIQUE
List 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


pgsql-bugs by date:

Previous
From: Andres Freund
Date:
Subject: Re: BUG #16754: When using LLVM and parallel queries aborted all session by pg_cancel_backend.
Next
From: Tom Lane
Date:
Subject: Re: BUG #16767: Silent dropping of CONSTRAINT... UNIQUE