Remove unnecessary code to handle CONSTR_NOTNULL
authorÁlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 7 Jan 2025 15:49:41 +0000 (16:49 +0100)
committerÁlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 7 Jan 2025 15:49:41 +0000 (16:49 +0100)
Commit 14e87ffa5c54 needlessly added support for CONSTR_NOTNULL entries
to StoreConstraints.  It's dead code, so remove it.

To make the situation regarding constraint creation clearer, change
comments in heap_create_with_catalog, StoreConstraints, MergeAttributes
to explain which types of constraint are used on each.

Author: 何建 (Jian He) <jian.universality@gmail.com>
Discussion: https://postgr.es/m/CACJufxFxzqrCiUNfjJ0tQU+=nKQkQCGtGzUBude=SMOwj5VNjQ@mail.gmail.com

src/backend/catalog/heap.c
src/backend/commands/tablecmds.c

index 4d760c98d1fc322d63e756580370330013d87715..024521c66c02e8197fbb4e97a32aa9f22aa7b85e 100644 (file)
@@ -427,7 +427,7 @@ heap_create(const char *relname,
  *     6) AddNewAttributeTuples() is called to register the
  *        new relation's schema in pg_attribute.
  *
- *     7) StoreConstraints is called ()        - vadim 08/22/97
+ *     7) StoreConstraints() is called         - vadim 08/22/97
  *
  *     8) the relations are closed and the new relation's oid
  *        is returned.
@@ -1481,7 +1481,7 @@ heap_create_with_catalog(const char *relname,
    InvokeObjectPostCreateHookArg(RelationRelationId, relid, 0, is_internal);
 
    /*
-    * Store any supplied constraints and defaults.
+    * Store any supplied CHECK constraints and defaults.
     *
     * NB: this may do a CommandCounterIncrement and rebuild the relcache
     * entry, so the relation must be valid and self-consistent at this point.
@@ -2216,7 +2216,7 @@ StoreRelNotNull(Relation rel, const char *nnname, AttrNumber attnum,
 }
 
 /*
- * Store defaults and constraints (passed as a list of CookedConstraint).
+ * Store defaults and CHECK constraints (passed as a list of CookedConstraint).
  *
  * Each CookedConstraint struct is modified to store the new catalog tuple OID.
  *
@@ -2260,13 +2260,6 @@ StoreConstraints(Relation rel, List *cooked_constraints, bool is_internal)
                numchecks++;
                break;
 
-           case CONSTR_NOTNULL:
-               con->conoid =
-                   StoreRelNotNull(rel, con->name, con->attnum,
-                                   !con->skip_validation, con->is_local,
-                                   con->inhcount, con->is_no_inherit);
-               break;
-
            default:
                elog(ERROR, "unrecognized constraint type: %d",
                     (int) con->contype);
index 33ea619224b0b22a43ad4284520f1bc45b1812fb..4181c110eb74d2919472e7fb43b03167d873a6f4 100644 (file)
@@ -1007,9 +1007,9 @@ DefineRelation(CreateStmt *stmt, char relkind, Oid ownerId,
    }
 
    /*
-    * Create the relation.  Inherited defaults and constraints are passed in
-    * for immediate handling --- since they don't need parsing, they can be
-    * stored immediately.
+    * Create the relation.  Inherited defaults and CHECK constraints are
+    * passed in for immediate handling --- since they don't need parsing,
+    * they can be stored immediately.
     */
    relationId = heap_create_with_catalog(relname,
                                          namespaceId,
@@ -2437,10 +2437,11 @@ storage_name(char c)
  * 'is_partition' tells if the table is a partition.
  *
  * Output arguments:
- * 'supconstr' receives a list of constraints belonging to the parents,
- *     updated as necessary to be valid for the child.
- * 'supnotnulls' receives a list of CookedConstraints that corresponds to
- *     constraints coming from inheritance parents.
+ * 'supconstr' receives a list of CookedConstraint representing
+ *     CHECK constraints belonging to parent relations, updated as
+ *     necessary to be valid for the child.
+ * 'supnotnulls' receives a list of CookedConstraint representing
+ *     not-null constraints based on those from parent relations.
  *
  * Return value:
  * Completed schema list.