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

Commit 128ce8e

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 c9a1c55 commit 128ce8e

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
@@ -4042,7 +4042,7 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel,
40424042
case AT_AddColumnToView: /* add column via CREATE OR REPLACE VIEW */
40434043
address = ATExecAddColumn(wqueue, tab, rel, (ColumnDef *) cmd->def,
40444044
false, false, false,
4045-
false, lockmode);
4045+
cmd->missing_ok, lockmode);
40464046
break;
40474047
case AT_AddColumnRecurse:
40484048
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
@@ -3306,6 +3306,9 @@ ALTER TABLE test_add_column
33063306
ALTER TABLE test_add_column
33073307
ADD COLUMN c2 integer; -- fail because c2 already exists
33083308
ERROR: column "c2" of relation "test_add_column" already exists
3309+
ALTER TABLE ONLY test_add_column
3310+
ADD COLUMN c2 integer; -- fail because c2 already exists
3311+
ERROR: column "c2" of relation "test_add_column" already exists
33093312
\d test_add_column
33103313
Table "public.test_add_column"
33113314
Column | Type | Collation | Nullable | Default
@@ -3316,6 +3319,9 @@ ERROR: column "c2" of relation "test_add_column" already exists
33163319
ALTER TABLE test_add_column
33173320
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
33183321
NOTICE: column "c2" of relation "test_add_column" already exists, skipping
3322+
ALTER TABLE ONLY test_add_column
3323+
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
3324+
NOTICE: column "c2" of relation "test_add_column" already exists, skipping
33193325
\d test_add_column
33203326
Table "public.test_add_column"
33213327
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
@@ -2054,9 +2054,13 @@ ALTER TABLE test_add_column
20542054
\d test_add_column
20552055
ALTER TABLE test_add_column
20562056
ADD COLUMN c2 integer; -- fail because c2 already exists
2057+
ALTER TABLE ONLY test_add_column
2058+
ADD COLUMN c2 integer; -- fail because c2 already exists
20572059
\d test_add_column
20582060
ALTER TABLE test_add_column
20592061
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
2062+
ALTER TABLE ONLY test_add_column
2063+
ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists
20602064
\d test_add_column
20612065
ALTER TABLE test_add_column
20622066
ADD COLUMN c2 integer, -- fail because c2 already exists

0 commit comments

Comments
 (0)