Improve error message when skipping scan of default partition.

It seems like a good idea to clearly distinguish between skipping the
scan of the new partition itself and skipping the scan of the default
partition.

Amit Langote

Discussion: http://postgr.es/m/1f08b844-0078-aa8d-452e-7af3bf77d05f@lab.ntt.co.jp
This commit is contained in:
Robert Haas 2017-10-05 12:19:40 -04:00
parent e9baa5e9fa
commit c31e9d4baf
2 changed files with 10 additions and 5 deletions

View File

@ -13635,9 +13635,14 @@ ValidatePartitionConstraints(List **wqueue, Relation scanrel,
*/ */
if (PartConstraintImpliedByRelConstraint(scanrel, partConstraint)) if (PartConstraintImpliedByRelConstraint(scanrel, partConstraint))
{ {
ereport(INFO, if (!validate_default)
(errmsg("partition constraint for table \"%s\" is implied by existing constraints", ereport(INFO,
RelationGetRelationName(scanrel)))); (errmsg("partition constraint for table \"%s\" is implied by existing constraints",
RelationGetRelationName(scanrel))));
else
ereport(INFO,
(errmsg("updated partition constraint for default partition \"%s\" is implied by existing constraints",
RelationGetRelationName(scanrel))));
return; return;
} }

View File

@ -3436,7 +3436,7 @@ ALTER TABLE part_7 ATTACH PARTITION part_7_a_null FOR VALUES IN ('a', null);
INFO: partition constraint for table "part_7_a_null" is implied by existing constraints INFO: partition constraint for table "part_7_a_null" is implied by existing constraints
ALTER TABLE list_parted2 ATTACH PARTITION part_7 FOR VALUES IN (7); ALTER TABLE list_parted2 ATTACH PARTITION part_7 FOR VALUES IN (7);
INFO: partition constraint for table "part_7" is implied by existing constraints INFO: partition constraint for table "part_7" is implied by existing constraints
INFO: partition constraint for table "list_parted2_def" is implied by existing constraints INFO: updated partition constraint for default partition "list_parted2_def" is implied by existing constraints
-- Same example, but check this time that the constraint correctly detects -- Same example, but check this time that the constraint correctly detects
-- violating rows -- violating rows
ALTER TABLE list_parted2 DETACH PARTITION part_7; ALTER TABLE list_parted2 DETACH PARTITION part_7;
@ -3450,7 +3450,7 @@ SELECT tableoid::regclass, a, b FROM part_7 order by a;
(2 rows) (2 rows)
ALTER TABLE list_parted2 ATTACH PARTITION part_7 FOR VALUES IN (7); ALTER TABLE list_parted2 ATTACH PARTITION part_7 FOR VALUES IN (7);
INFO: partition constraint for table "list_parted2_def" is implied by existing constraints INFO: updated partition constraint for default partition "list_parted2_def" is implied by existing constraints
ERROR: partition constraint is violated by some row ERROR: partition constraint is violated by some row
-- check that leaf partitions of default partition are scanned when -- check that leaf partitions of default partition are scanned when
-- attaching a partitioned table. -- attaching a partitioned table.