From 1fb9814d708082edad108dbce779b689a554d43f Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Thu, 24 Apr 2008 20:18:15 +0000 Subject: Fix ALTER TABLE ADD COLUMN ... PRIMARY KEY so that the new column is correctly checked to see if it's been initialized to all non-nulls. The implicit NOT NULL constraint was not being checked during the ALTER (in fact, not even if there was an explicit NOT NULL too), because ATExecAddColumn neglected to set the flag needed to make the test happen. This has been broken since the capability was first added, in 8.0. Brendan Jurd, per a report from Kaloyan Iliev. --- src/backend/commands/tablecmds.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/backend/commands/tablecmds.c') diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 04a3dc632a5..cd36c7c0355 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.174.2.4 2007/02/02 00:07:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.174.2.5 2008/04/24 20:18:15 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -3138,6 +3138,11 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel, tab->newvals = lappend(tab->newvals, newval); } + /* + * If the new column is NOT NULL, tell Phase 3 it needs to test that. + */ + tab->new_notnull |= colDef->is_not_null; + /* * Add needed dependency entries for the new column. */ -- cgit v1.2.3