Remove transformAlterTableStmt's kluge to replace ColumnDef.is_not_null
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 24 Apr 2008 20:46:49 +0000 (20:46 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 24 Apr 2008 20:46:49 +0000 (20:46 +0000)
flags by separate AT_SetNotNull subcommands.  That was always ugly and
inefficient, and it's now clear that it was merely a partial workaround
for the bug just identified in ATExecAddColumn.  This is just code
beautification not a bug fix, so no back-patch.

Brendan Jurd, with some trivial additional cleanup by me.

src/backend/parser/parse_utilcmd.c

index 88fba239cdb710a6268b72caadc11529bf8270cf..a6ec85350f18ee84c011dedb2d9075037a6e53bd 100644 (file)
@@ -19,7 +19,7 @@
  * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/parser/parse_utilcmd.c,v 2.11 2008/03/25 22:42:43 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/parser/parse_utilcmd.c,v 2.12 2008/04/24 20:46:49 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1718,41 +1718,23 @@ transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString)
                {
                    ColumnDef  *def = (ColumnDef *) cmd->def;
 
-                   Assert(IsA(cmd->def, ColumnDef));
-                   transformColumnDefinition(pstate, &cxt,
-                                             (ColumnDef *) cmd->def);
+                   Assert(IsA(def, ColumnDef));
+                   transformColumnDefinition(pstate, &cxt, def);
 
                    /*
                     * If the column has a non-null default, we can't skip
                     * validation of foreign keys.
                     */
-                   if (((ColumnDef *) cmd->def)->raw_default != NULL)
+                   if (def->raw_default != NULL)
                        skipValidation = false;
 
-                   newcmds = lappend(newcmds, cmd);
-
-                   /*
-                    * Convert an ADD COLUMN ... NOT NULL constraint to a
-                    * separate command
-                    */
-                   if (def->is_not_null)
-                   {
-                       /* Remove NOT NULL from AddColumn */
-                       def->is_not_null = false;
-
-                       /* Add as a separate AlterTableCmd */
-                       newcmd = makeNode(AlterTableCmd);
-                       newcmd->subtype = AT_SetNotNull;
-                       newcmd->name = pstrdup(def->colname);
-                       newcmds = lappend(newcmds, newcmd);
-                   }
-
                    /*
                     * All constraints are processed in other ways. Remove the
                     * original list
                     */
                    def->constraints = NIL;
 
+                   newcmds = lappend(newcmds, cmd);
                    break;
                }
            case AT_AddConstraint:
@@ -1760,7 +1742,6 @@ transformAlterTableStmt(AlterTableStmt *stmt, const char *queryString)
                /*
                 * The original AddConstraint cmd node doesn't go to newcmds
                 */
-
                if (IsA(cmd->def, Constraint))
                    transformTableConstraint(pstate, &cxt,
                                             (Constraint *) cmd->def);