Skip to content

Commit 5668afe

Browse files
committed
Fix ADD IF NOT EXISTS used in conjunction with ALTER TABLE ONLY
The flag for IF NOT EXISTS was only being passed down in the normal recursing case. It's been this way since originally added in 9.6 in commit 2cd40ad so backpatch back to 9.6.
1 parent 7c2bc40 commit 5668afe

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

src/backend/commands/tablecmds.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3477,7 +3477,7 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel,
34773477
* VIEW */
34783478
address = ATExecAddColumn(wqueue, tab, rel, (ColumnDef *) cmd->def,
34793479
false, false, false,
3480-
false, lockmode);
3480+
cmd->missing_ok, lockmode);
34813481
break;
34823482
case AT_AddColumnRecurse:
34833483
address = ATExecAddColumn(wqueue, tab, rel, (ColumnDef *) cmd->def,

src/test/regress/expected/alter_table.out

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3153,6 +3153,9 @@ Table "public.test_add_column"
31533153
ALTER TABLE test_add_column
31543154
ADD COLUMN c2 integer; -- fail because c2 already exists
31553155
ERROR: column "c2" of relation "test_add_column" already exists
3156+
ALTER TABLE ONLY test_add_column
3157+
ADD COLUMN c2 integer; -- fail because c2 already exists
3158+
ERROR: column "c2" of relation "test_add_column" already exists
31563159
\d test_add_column
31573160
Table "public.test_add_column"
31583161
Column | Type | Modifiers
@@ -3163,6 +3166,9 @@ Table "public.test_add_column"
31633166
ALTER TABLE test_add_column
31643167
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
31653168
NOTICE: column "c2" of relation "test_add_column" already exists, skipping
3169+
ALTER TABLE ONLY test_add_column
3170+
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
3171+
NOTICE: column "c2" of relation "test_add_column" already exists, skipping
31663172
\d test_add_column
31673173
Table "public.test_add_column"
31683174
Column | Type | Modifiers

src/test/regress/sql/alter_table.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1970,9 +1970,13 @@ ALTER TABLE test_add_column
19701970
\d test_add_column
19711971
ALTER TABLE test_add_column
19721972
ADD COLUMN c2 integer; -- fail because c2 already exists
1973+
ALTER TABLE ONLY test_add_column
1974+
ADD COLUMN c2 integer; -- fail because c2 already exists
19731975
\d test_add_column
19741976
ALTER TABLE test_add_column
19751977
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
1978+
ALTER TABLE ONLY test_add_column
1979+
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
19761980
\d test_add_column
19771981
ALTER TABLE test_add_column
19781982
ADD COLUMN c2 integer, -- fail because c2 already exists

0 commit comments

Comments
 (0)