diff options
| author | Alvaro Herrera | 2023-09-01 17:49:20 +0000 |
|---|---|---|
| committer | Alvaro Herrera | 2023-09-01 17:49:20 +0000 |
| commit | d0ec2ddbe088f6da35444fad688a62eae4fbd840 (patch) | |
| tree | 188c43938b4bef294032086a6029ffa4841d52d6 /src/test/regress | |
| parent | e09d763e25dccc40695bc824ddda9abea791d66f (diff) | |
Fix not-null constraint test
When a partitioned table has a primary key, trying to find the
corresponding not-null constraint for that column would come up empty,
causing code that's trying to check said not-null constraint to crash.
Fix by only running the check when the not-null constraint exists.
Reported-by: Alexander Lakhin <exclusion@gmail.com>
Discussion: https://postgr.es/m/d57b4a69-7394-3146-5976-9a1ef27e7972@gmail.com
Diffstat (limited to 'src/test/regress')
| -rw-r--r-- | src/test/regress/expected/constraints.out | 11 | ||||
| -rw-r--r-- | src/test/regress/sql/constraints.sql | 11 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/test/regress/expected/constraints.out b/src/test/regress/expected/constraints.out index b7de50ad6a6..5b068477bf8 100644 --- a/src/test/regress/expected/constraints.out +++ b/src/test/regress/expected/constraints.out @@ -1006,6 +1006,17 @@ Inherits: cnn_grandchild, ALTER TABLE cnn_parent DROP CONSTRAINT cnn_parent_pkey; ERROR: constraint "cnn_parent_pkey" of relation "cnn_parent" does not exist -- keeps these tables around, for pg_upgrade testing +-- ensure columns in partitions are marked not-null +create table cnn2_parted(a int primary key) partition by list (a); +create table cnn2_part1(a int); +alter table cnn2_parted attach partition cnn2_part1 for values in (1); +ERROR: primary key column "a" is not marked NOT NULL +drop table cnn2_parted, cnn2_part1; +create table cnn2_parted(a int not null) partition by list (a); +create table cnn2_part1(a int primary key); +alter table cnn2_parted attach partition cnn2_part1 for values in (1); +ERROR: column "a" in child table must be marked NOT NULL +drop table cnn2_parted, cnn2_part1; -- Comments -- Setup a low-level role to enforce non-superuser checks. CREATE ROLE regress_constraint_comments; diff --git a/src/test/regress/sql/constraints.sql b/src/test/regress/sql/constraints.sql index 782699a4377..a7d96e98f58 100644 --- a/src/test/regress/sql/constraints.sql +++ b/src/test/regress/sql/constraints.sql @@ -657,6 +657,17 @@ ALTER TABLE cnn_parent ADD PRIMARY KEY USING INDEX b_uq; ALTER TABLE cnn_parent DROP CONSTRAINT cnn_parent_pkey; -- keeps these tables around, for pg_upgrade testing +-- ensure columns in partitions are marked not-null +create table cnn2_parted(a int primary key) partition by list (a); +create table cnn2_part1(a int); +alter table cnn2_parted attach partition cnn2_part1 for values in (1); +drop table cnn2_parted, cnn2_part1; + +create table cnn2_parted(a int not null) partition by list (a); +create table cnn2_part1(a int primary key); +alter table cnn2_parted attach partition cnn2_part1 for values in (1); +drop table cnn2_parted, cnn2_part1; + -- Comments -- Setup a low-level role to enforce non-superuser checks. |
