From a4fcccb59d596a9e94cb88fd445e824f60590f8c Mon Sep 17 00:00:00 2001 From: jian he Date: Thu, 12 Sep 2024 16:13:52 +0800 Subject: [PATCH v2 2/2] imporve error message in MergeConstraintsIntoExisting --- src/backend/commands/tablecmds.c | 9 +++++---- src/test/regress/expected/constraints.out | 4 ++-- src/test/regress/expected/foreign_data.out | 2 +- src/test/regress/expected/identity.out | 2 +- src/test/regress/expected/inherit.out | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index b49d623119..d55c8f53e9 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -16099,8 +16099,8 @@ MergeAttributesIntoExisting(Relation child_rel, Relation parent_rel, bool ispart !((Form_pg_constraint) GETSTRUCT(contup))->connoinherit) ereport(ERROR, errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("column \"%s\" in child table must be marked NOT NULL", - parent_attname)); + errmsg("column \"%s\" in child table \"%s\" must be marked NOT NULL", + parent_attname, RelationGetRelationName(child_rel))); } /* @@ -16340,10 +16340,11 @@ MergeConstraintsIntoExisting(Relation child_rel, Relation parent_rel) if (parent_con->contype == CONSTRAINT_NOTNULL) ereport(ERROR, errcode(ERRCODE_DATATYPE_MISMATCH), - errmsg("column \"%s\" in child table must be marked NOT NULL", + errmsg("column \"%s\" in child table \"%s\" must be marked NOT NULL", get_attname(parent_relid, extractNotNullColumn(parent_tuple), - false))); + false), + RelationGetRelationName(child_rel))); ereport(ERROR, (errcode(ERRCODE_DATATYPE_MISMATCH), diff --git a/src/test/regress/expected/constraints.out b/src/test/regress/expected/constraints.out index 289fe3afc6..9586178739 100644 --- a/src/test/regress/expected/constraints.out +++ b/src/test/regress/expected/constraints.out @@ -1214,7 +1214,7 @@ ERROR: constraint "cnn_parent_pkey" of relation "cnn_parent" does not exist create table cnn2_parted (a int primary key) partition by list (a); create table cnn2_part1 (a int unique); alter table cnn2_parted attach partition cnn2_part1 for values in (1); -ERROR: column "a" in child table must be marked NOT NULL +ERROR: column "a" in child table "cnn2_part1" must be marked NOT NULL \d+ cnn2_part1 Table "public.cnn2_part1" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description @@ -1229,7 +1229,7 @@ create table cnn2_parted(a int primary key) partition by list (a); create table cnn2_part1(a int); ERROR: relation "cnn2_part1" already exists alter table cnn2_parted attach partition cnn2_part1 for values in (1); -ERROR: column "a" in child table must be marked NOT NULL +ERROR: column "a" in child table "cnn2_part1" must be marked NOT NULL insert into cnn2_part1 values (null); drop table cnn2_parted, cnn2_part1; create table cnn2_parted(a int not null) partition by list (a); diff --git a/src/test/regress/expected/foreign_data.out b/src/test/regress/expected/foreign_data.out index 410b0c08b7..4e8a79624f 100644 --- a/src/test/regress/expected/foreign_data.out +++ b/src/test/regress/expected/foreign_data.out @@ -2103,7 +2103,7 @@ Server: s0 FDW options: (delimiter ',', quote '"', "be quoted" 'value') ALTER TABLE fd_pt2 ATTACH PARTITION fd_pt2_1 FOR VALUES IN (1); -- ERROR -ERROR: column "c2" in child table must be marked NOT NULL +ERROR: column "c2" in child table "fd_pt2_1" must be marked NOT NULL ALTER FOREIGN TABLE fd_pt2_1 ALTER c2 SET NOT NULL; ALTER TABLE fd_pt2 ATTACH PARTITION fd_pt2_1 FOR VALUES IN (1); ALTER TABLE fd_pt2 DETACH PARTITION fd_pt2_1; diff --git a/src/test/regress/expected/identity.out b/src/test/regress/expected/identity.out index 29539e7f63..80fde62d31 100644 --- a/src/test/regress/expected/identity.out +++ b/src/test/regress/expected/identity.out @@ -622,7 +622,7 @@ INSERT into pitest1_p1 (f1, f2) VALUES ('2016-07-3', 'from pitest1_p1'); CREATE TABLE pitest1_p2 (f3 bigint, f2 text, f1 date NOT NULL); INSERT INTO pitest1_p2 (f1, f2, f3) VALUES ('2016-08-2', 'before attaching', 100); ALTER TABLE pitest1 ATTACH PARTITION pitest1_p2 FOR VALUES FROM ('2016-08-01') TO ('2016-09-01'); -- requires NOT NULL constraint -ERROR: column "f3" in child table must be marked NOT NULL +ERROR: column "f3" in child table "pitest1_p2" must be marked NOT NULL ALTER TABLE pitest1_p2 ALTER COLUMN f3 SET NOT NULL; ALTER TABLE pitest1 ATTACH PARTITION pitest1_p2 FOR VALUES FROM ('2016-08-01') TO ('2016-09-01'); INSERT INTO pitest1_p2 (f1, f2) VALUES ('2016-08-3', 'from pitest1_p2'); diff --git a/src/test/regress/expected/inherit.out b/src/test/regress/expected/inherit.out index d903686c50..1b20a30d80 100644 --- a/src/test/regress/expected/inherit.out +++ b/src/test/regress/expected/inherit.out @@ -2321,7 +2321,7 @@ create table inh_child2(f1 int); alter table inh_child1 inherit inh_parent; -- should fail, missing NOT NULL constraint alter table inh_child2 inherit inh_child1; -ERROR: column "f1" in child table must be marked NOT NULL +ERROR: column "f1" in child table "inh_child2" must be marked NOT NULL alter table inh_child2 alter column f1 set not null; alter table inh_child2 inherit inh_child1; -- add NOT NULL constraint recursively -- 2.34.1