]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Assert that partition inherits from only one parent in MergeAttributes()
authorPeter Eisentraut <peter@eisentraut.org>
Tue, 16 Jan 2024 07:57:35 +0000 (08:57 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
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 <ashutosh.bapat.oss@gmail.com>
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;