]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Refactor subtype field of AlterDomainStmt master github/master
authorMichael Paquier <michael@paquier.xyz>
Thu, 3 Jul 2025 07:34:28 +0000 (16:34 +0900)
committerMichael Paquier <michael@paquier.xyz>
Thu, 3 Jul 2025 07:34:28 +0000 (16:34 +0900)
AlterDomainStmt.subtype used characters for its subtypes of commands,
SET|DROP DEFAULT|NOT NULL and ADD|DROP|VALIDATE CONSTRAINT, which were
hardcoded in a couple of places of the code.  The code is improved by
using an enum instead, with the same character values as the original
code.

Note that the field was documented in parsenodes.h and that it forgot to
mention 'V' (VALIDATE CONSTRAINT).

Author: Quan Zongliang <quanzongliang@yeah.net>
Reviewed-by: Peter Eisentraut <peter@eisentraut.org>
Reviewed-by: wenhui qiu <qiuwenhuifx@gmail.com>
Reviewed-by: Tender Wang <tndrwang@gmail.com>
Discussion: https://postgr.es/m/41ff310b-16bd-44b9-a3ef-97e20f14b709@yeah.net

src/backend/commands/tablecmds.c
src/backend/parser/gram.y
src/backend/tcop/utility.c
src/include/nodes/parsenodes.h
src/tools/pgindent/typedefs.list

index f9f594b44cf915cec4d2229cd9fb96be1c35b649..6c5cb06801337d176580290e26fafd9678c3aadd 100644 (file)
@@ -15726,7 +15726,7 @@ ATPostAlterTypeParse(Oid oldId, Oid oldRelId, Oid refRelId, char *cmd,
                {
                        AlterDomainStmt *stmt = (AlterDomainStmt *) stm;
 
                {
                        AlterDomainStmt *stmt = (AlterDomainStmt *) stm;
 
-                       if (stmt->subtype == 'C')       /* ADD CONSTRAINT */
+                       if (stmt->subtype == AD_AddConstraint)
                        {
                                Constraint *con = castNode(Constraint, stmt->def);
                                AlterTableCmd *cmd = makeNode(AlterTableCmd);
                        {
                                Constraint *con = castNode(Constraint, stmt->def);
                                AlterTableCmd *cmd = makeNode(AlterTableCmd);
index a2e084b8f64310e7e145f5acae191efd30f874d4..a751bf0d531ba971e1c3477b0c392fb7125dfccf 100644 (file)
@@ -11665,7 +11665,7 @@ AlterDomainStmt:
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
-                                       n->subtype = 'T';
+                                       n->subtype = AD_AlterDefault;
                                        n->typeName = $3;
                                        n->def = $4;
                                        $$ = (Node *) n;
                                        n->typeName = $3;
                                        n->def = $4;
                                        $$ = (Node *) n;
@@ -11675,7 +11675,7 @@ AlterDomainStmt:
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
-                                       n->subtype = 'N';
+                                       n->subtype = AD_DropNotNull;
                                        n->typeName = $3;
                                        $$ = (Node *) n;
                                }
                                        n->typeName = $3;
                                        $$ = (Node *) n;
                                }
@@ -11684,7 +11684,7 @@ AlterDomainStmt:
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
-                                       n->subtype = 'O';
+                                       n->subtype = AD_SetNotNull;
                                        n->typeName = $3;
                                        $$ = (Node *) n;
                                }
                                        n->typeName = $3;
                                        $$ = (Node *) n;
                                }
@@ -11693,7 +11693,7 @@ AlterDomainStmt:
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
-                                       n->subtype = 'C';
+                                       n->subtype = AD_AddConstraint;
                                        n->typeName = $3;
                                        n->def = $5;
                                        $$ = (Node *) n;
                                        n->typeName = $3;
                                        n->def = $5;
                                        $$ = (Node *) n;
@@ -11703,7 +11703,7 @@ AlterDomainStmt:
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
-                                       n->subtype = 'X';
+                                       n->subtype = AD_DropConstraint;
                                        n->typeName = $3;
                                        n->name = $6;
                                        n->behavior = $7;
                                        n->typeName = $3;
                                        n->name = $6;
                                        n->behavior = $7;
@@ -11715,7 +11715,7 @@ AlterDomainStmt:
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
-                                       n->subtype = 'X';
+                                       n->subtype = AD_DropConstraint;
                                        n->typeName = $3;
                                        n->name = $8;
                                        n->behavior = $9;
                                        n->typeName = $3;
                                        n->name = $8;
                                        n->behavior = $9;
@@ -11727,7 +11727,7 @@ AlterDomainStmt:
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
                                {
                                        AlterDomainStmt *n = makeNode(AlterDomainStmt);
 
-                                       n->subtype = 'V';
+                                       n->subtype = AD_ValidateConstraint;
                                        n->typeName = $3;
                                        n->name = $6;
                                        $$ = (Node *) n;
                                        n->typeName = $3;
                                        n->name = $6;
                                        $$ = (Node *) n;
index 25fe3d5801665413169ff0d8d9a0485b5034dac2..aff8510755f34e732fb0cc6645fddfa1e665d31d 100644 (file)
@@ -1343,7 +1343,7 @@ ProcessUtilitySlow(ParseState *pstate,
                                         */
                                        switch (stmt->subtype)
                                        {
                                         */
                                        switch (stmt->subtype)
                                        {
-                                               case 'T':       /* ALTER DOMAIN DEFAULT */
+                                               case AD_AlterDefault:
 
                                                        /*
                                                         * Recursively alter column default for table and,
 
                                                        /*
                                                         * Recursively alter column default for table and,
@@ -1353,30 +1353,30 @@ ProcessUtilitySlow(ParseState *pstate,
                                                                AlterDomainDefault(stmt->typeName,
                                                                                                   stmt->def);
                                                        break;
                                                                AlterDomainDefault(stmt->typeName,
                                                                                                   stmt->def);
                                                        break;
-                                               case 'N':       /* ALTER DOMAIN DROP NOT NULL */
+                                               case AD_DropNotNull:
                                                        address =
                                                                AlterDomainNotNull(stmt->typeName,
                                                                                                   false);
                                                        break;
                                                        address =
                                                                AlterDomainNotNull(stmt->typeName,
                                                                                                   false);
                                                        break;
-                                               case 'O':       /* ALTER DOMAIN SET NOT NULL */
+                                               case AD_SetNotNull:
                                                        address =
                                                                AlterDomainNotNull(stmt->typeName,
                                                                                                   true);
                                                        break;
                                                        address =
                                                                AlterDomainNotNull(stmt->typeName,
                                                                                                   true);
                                                        break;
-                                               case 'C':       /* ADD CONSTRAINT */
+                                               case AD_AddConstraint:
                                                        address =
                                                                AlterDomainAddConstraint(stmt->typeName,
                                                                                                                 stmt->def,
                                                                                                                 &secondaryObject);
                                                        break;
                                                        address =
                                                                AlterDomainAddConstraint(stmt->typeName,
                                                                                                                 stmt->def,
                                                                                                                 &secondaryObject);
                                                        break;
-                                               case 'X':       /* DROP CONSTRAINT */
+                                               case AD_DropConstraint:
                                                        address =
                                                                AlterDomainDropConstraint(stmt->typeName,
                                                                                                                  stmt->name,
                                                                                                                  stmt->behavior,
                                                                                                                  stmt->missing_ok);
                                                        break;
                                                        address =
                                                                AlterDomainDropConstraint(stmt->typeName,
                                                                                                                  stmt->name,
                                                                                                                  stmt->behavior,
                                                                                                                  stmt->missing_ok);
                                                        break;
-                                               case 'V':       /* VALIDATE CONSTRAINT */
+                                               case AD_ValidateConstraint:
                                                        address =
                                                                AlterDomainValidateConstraint(stmt->typeName,
                                                                                                                          stmt->name);
                                                        address =
                                                                AlterDomainValidateConstraint(stmt->typeName,
                                                                                                                          stmt->name);
index daa285ca62f2a1084ec9e6d82d9704e527fa4359..28e2e8dc0fdaaaa0d54ad1a79a4bd6faa440de3a 100644 (file)
@@ -2536,17 +2536,20 @@ typedef struct AlterCollationStmt
  * this command.
  * ----------------------
  */
  * this command.
  * ----------------------
  */
+typedef enum AlterDomainType
+{
+       AD_AlterDefault = 'T',          /* SET|DROP DEFAULT */
+       AD_DropNotNull = 'N',           /* DROP NOT NULL */
+       AD_SetNotNull = 'O',            /* SET NOT NULL */
+       AD_AddConstraint = 'C',         /* ADD CONSTRAINT */
+       AD_DropConstraint = 'X',        /* DROP CONSTRAINT */
+       AD_ValidateConstraint = 'V',    /* VALIDATE CONSTRAINT */
+} AlterDomainType;
+
 typedef struct AlterDomainStmt
 {
        NodeTag         type;
 typedef struct AlterDomainStmt
 {
        NodeTag         type;
-       char            subtype;                /*------------
-                                                                *      T = alter column default
-                                                                *      N = alter column drop not null
-                                                                *      O = alter column set not null
-                                                                *      C = add constraint
-                                                                *      X = drop constraint
-                                                                *------------
-                                                                */
+       AlterDomainType subtype;        /* subtype of command */
        List       *typeName;           /* domain to work on */
        char       *name;                       /* column or constraint name to act on */
        Node       *def;                        /* definition of default or constraint */
        List       *typeName;           /* domain to work on */
        char       *name;                       /* column or constraint name to act on */
        Node       *def;                        /* definition of default or constraint */
index e7d1c48e1f20b660685f67f945183cf80d7e975c..7544e7c5073dbe216650bb538b667b7fc5a7e15e 100644 (file)
@@ -74,6 +74,7 @@ AlterDatabaseSetStmt
 AlterDatabaseStmt
 AlterDefaultPrivilegesStmt
 AlterDomainStmt
 AlterDatabaseStmt
 AlterDefaultPrivilegesStmt
 AlterDomainStmt
+AlterDomainType
 AlterEnumStmt
 AlterEventTrigStmt
 AlterExtensionContentsStmt
 AlterEnumStmt
 AlterEventTrigStmt
 AlterExtensionContentsStmt