Assert that partition inherits from only one parent in MergeAttributes()
authorPeter Eisentraut <[email protected]>
Tue, 16 Jan 2024 07:57:35 +0000 (08:57 +0100)
committerPeter Eisentraut <[email protected]>
Tue, 16 Jan 2024 07:57:35 +0000 (08:57 +0100)
A partition inherits only from one partitioned table and thus inherits
a column definition only once.  Assert the same in MergeAttributes()
and simplify a condition accordingly.

Similar definition exists about line 3068 in the same function.

Author: Ashutosh Bapat <[email protected]>
Discussion: https://www.postgresql.org/message-id/flat/CAExHW5uOykuTC+C6R1yDSp=o8Q83jr8xJdZxgPkxfZ1Ue5RRGg@mail.gmail.com

src/backend/commands/tablecmds.c

index fdcd09bc5eb387b6a0e319bbc189c51c5ca26315..1f6073fb9724d3f6f8bd6b5026173a6120c6f343 100644 (file)
@@ -2721,6 +2721,12 @@ MergeAttributes(List *columns, const List *supers, char relpersistence,
                int32       deftypmod;
                Oid         defCollId;
 
+               /*
+                * Partitions have only one parent and have no column
+                * definitions of their own, so conflict should never occur.
+                */
+               Assert(!is_partition);
+
                /*
                 * Yes, try to merge the two column definitions.
                 */
@@ -2792,12 +2798,9 @@ MergeAttributes(List *columns, const List *supers, char relpersistence,
 
                /*
                 * In regular inheritance, columns in the parent's primary key
-                * get an extra not-null constraint.  Partitioning doesn't
-                * need this, because the PK itself is going to be cloned to
-                * the partition.
+                * get an extra not-null constraint.
                 */
-               if (!is_partition &&
-                   bms_is_member(parent_attno - FirstLowInvalidHeapAttributeNumber,
+               if (bms_is_member(parent_attno - FirstLowInvalidHeapAttributeNumber,
                                  pkattrs))
                {
                    CookedConstraint *nn;