diff options
author | Greg Stark <stark@mit.edu> | 2018-12-19 18:28:35 -0500 |
---|---|---|
committer | Greg Stark <stark@mit.edu> | 2018-12-19 19:41:06 -0500 |
commit | 9e6cd794c282499aa0d2d31166c023cda0682e67 (patch) | |
tree | ebe9b7911cb2586878abacde5f9301917087bbc5 | |
parent | 4aad9813e8040ea8ad7a149ee5724ee3631c6d55 (diff) | |
download | postgresql-9e6cd794c282499aa0d2d31166c023cda0682e67.tar.gz postgresql-9e6cd794c282499aa0d2d31166c023cda0682e67.zip |
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 2cd40adb85 so backpatch back to 9.6.
-rw-r--r-- | src/backend/commands/tablecmds.c | 2 | ||||
-rw-r--r-- | src/test/regress/expected/alter_table.out | 6 | ||||
-rw-r--r-- | src/test/regress/sql/alter_table.sql | 4 |
3 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 04795a33a43..08e9bfcbf18 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -3832,7 +3832,7 @@ ATExecCmd(List **wqueue, AlteredTableInfo *tab, Relation rel, case AT_AddColumnToView: /* add column via CREATE OR REPLACE VIEW */ address = ATExecAddColumn(wqueue, tab, rel, (ColumnDef *) cmd->def, false, false, false, - false, lockmode); + cmd->missing_ok, lockmode); break; case AT_AddColumnRecurse: address = ATExecAddColumn(wqueue, tab, rel, (ColumnDef *) cmd->def, diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out index 20f7d926b29..f469bfed65d 100644 --- a/src/test/regress/expected/alter_table.out +++ b/src/test/regress/expected/alter_table.out @@ -3153,6 +3153,9 @@ ALTER TABLE test_add_column ALTER TABLE test_add_column ADD COLUMN c2 integer; -- fail because c2 already exists ERROR: column "c2" of relation "test_add_column" already exists +ALTER TABLE ONLY test_add_column + ADD COLUMN c2 integer; -- fail because c2 already exists +ERROR: column "c2" of relation "test_add_column" already exists \d test_add_column Table "public.test_add_column" Column | Type | Collation | Nullable | Default @@ -3163,6 +3166,9 @@ ERROR: column "c2" of relation "test_add_column" already exists ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists NOTICE: column "c2" of relation "test_add_column" already exists, skipping +ALTER TABLE ONLY test_add_column + ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists +NOTICE: column "c2" of relation "test_add_column" already exists, skipping \d test_add_column Table "public.test_add_column" Column | Type | Collation | Nullable | Default diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql index ea94eb8f162..447cd6fa014 100644 --- a/src/test/regress/sql/alter_table.sql +++ b/src/test/regress/sql/alter_table.sql @@ -1970,9 +1970,13 @@ ALTER TABLE test_add_column \d test_add_column ALTER TABLE test_add_column ADD COLUMN c2 integer; -- fail because c2 already exists +ALTER TABLE ONLY test_add_column + ADD COLUMN c2 integer; -- fail because c2 already exists \d test_add_column ALTER TABLE test_add_column ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists +ALTER TABLE ONLY test_add_column + ADD COLUMN IF NOT EXISTS c2 integer; -- skipping because c2 already exists \d test_add_column ALTER TABLE test_add_column ADD COLUMN c2 integer, -- fail because c2 already exists |