Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 1075dfd

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 2ece7c0 commit 1075dfd

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
@@ -4054,7 +4054,7 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel,
40544054
case AT_AddColumnToView: /* add column via CREATE OR REPLACE VIEW */
40554055
address = ATExecAddColumn(wqueue, tab, rel, (ColumnDef *) cmd->def,
40564056
false, false,
4057-
false, lockmode);
4057+
cmd->missing_ok, lockmode);
40584058
break;
40594059
case AT_AddColumnRecurse:
40604060
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
@@ -3173,6 +3173,9 @@ ALTER TABLE test_add_column
31733173
ALTER TABLE test_add_column
31743174
ADD COLUMN c2 integer; -- fail because c2 already exists
31753175
ERROR: column "c2" of relation "test_add_column" already exists
3176+
ALTER TABLE ONLY test_add_column
3177+
ADD COLUMN c2 integer; -- fail because c2 already exists
3178+
ERROR: column "c2" of relation "test_add_column" already exists
31763179
\d test_add_column
31773180
Table "public.test_add_column"
31783181
Column | Type | Collation | Nullable | Default
@@ -3183,6 +3186,9 @@ ERROR: column "c2" of relation "test_add_column" already exists
31833186
ALTER TABLE test_add_column
31843187
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
31853188
NOTICE: column "c2" of relation "test_add_column" already exists, skipping
3189+
ALTER TABLE ONLY test_add_column
3190+
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
3191+
NOTICE: column "c2" of relation "test_add_column" already exists, skipping
31863192
\d test_add_column
31873193
Table "public.test_add_column"
31883194
Column | Type | Collation | Nullable | Default

src/test/regress/sql/alter_table.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1971,9 +1971,13 @@ ALTER TABLE test_add_column
19711971
\d test_add_column
19721972
ALTER TABLE test_add_column
19731973
ADD COLUMN c2 integer; -- fail because c2 already exists
1974+
ALTER TABLE ONLY test_add_column
1975+
ADD COLUMN c2 integer; -- fail because c2 already exists
19741976
\d test_add_column
19751977
ALTER TABLE test_add_column
19761978
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
1979+
ALTER TABLE ONLY test_add_column
1980+
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
19771981
\d test_add_column
19781982
ALTER TABLE test_add_column
19791983
ADD COLUMN c2 integer, -- fail because c2 already exists

0 commit comments

Comments
 (0)