mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	Remove transformAlterTableStmt's kluge to replace ColumnDef.is_not_null
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.
This commit is contained in:
		
							parent
							
								
									bb908d9879
								
							
						
					
					
						commit
						46e9709f48
					
				@ -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);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user