mirror of
https://github.com/postgres/postgres.git
synced 2025-11-25 12:03:53 +03:00
Prevent setting a column as identity if its not-null constraint is invalid
We don't allow null values to appear in identity-generated columns in
other ways, so we shouldn't let unvalidated not-null constraints do it
either. Oversight in commit a379061a22.
Author: jian he <jian.universality@gmail.com>
Backpatch-through: 18
Discussion: https://postgr.es/m/CACJufxGQM_+vZoYJMaRoZfNyV=L2jxosjv_0TLAScbuLJXWRfQ@mail.gmail.com
This commit is contained in:
@@ -1404,6 +1404,10 @@ ALTER TABLE notnull_tbl1 ADD PRIMARY KEY (a);
|
||||
ERROR: cannot create primary key on column "a"
|
||||
DETAIL: The constraint "nn" on column "a" of table "notnull_tbl1", marked NOT VALID, is incompatible with a primary key.
|
||||
HINT: You might need to validate it using ALTER TABLE ... VALIDATE CONSTRAINT.
|
||||
-- cannot set column as generated-as-identity if it has an invalid not-null
|
||||
ALTER TABLE notnull_tbl1 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY;
|
||||
ERROR: incompatible NOT VALID constraint "nn" on relation "notnull_tbl1"
|
||||
HINT: You might need to validate it using ALTER TABLE ... VALIDATE CONSTRAINT.
|
||||
-- ALTER column SET NOT NULL validates an invalid constraint (but this fails
|
||||
-- because of rows with null values)
|
||||
ALTER TABLE notnull_tbl1 ALTER a SET NOT NULL;
|
||||
|
||||
@@ -832,6 +832,9 @@ ALTER TABLE notnull_tbl1 ADD CONSTRAINT nn NOT NULL a;
|
||||
-- cannot add primary key on a column with an invalid not-null
|
||||
ALTER TABLE notnull_tbl1 ADD PRIMARY KEY (a);
|
||||
|
||||
-- cannot set column as generated-as-identity if it has an invalid not-null
|
||||
ALTER TABLE notnull_tbl1 ALTER COLUMN a ADD GENERATED ALWAYS AS IDENTITY;
|
||||
|
||||
-- ALTER column SET NOT NULL validates an invalid constraint (but this fails
|
||||
-- because of rows with null values)
|
||||
ALTER TABLE notnull_tbl1 ALTER a SET NOT NULL;
|
||||
|
||||
Reference in New Issue
Block a user