mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Add IF NOT EXISTS processing to ALTER TABLE ADD COLUMN
Fabrízio de Royes Mello, reviewed by Payal Singh, Alvaro Herrera and Michael Paquier.
This commit is contained in:
@ -2605,3 +2605,92 @@ ALTER TABLE logged1 SET UNLOGGED; -- silently do nothing
|
||||
DROP TABLE logged3;
|
||||
DROP TABLE logged2;
|
||||
DROP TABLE logged1;
|
||||
-- test ADD COLUMN IF NOT EXISTS
|
||||
CREATE TABLE test_add_column(c1 integer);
|
||||
\d test_add_column
|
||||
Table "public.test_add_column"
|
||||
Column | Type | Modifiers
|
||||
--------+---------+-----------
|
||||
c1 | integer |
|
||||
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN c2 integer;
|
||||
\d test_add_column
|
||||
Table "public.test_add_column"
|
||||
Column | Type | Modifiers
|
||||
--------+---------+-----------
|
||||
c1 | integer |
|
||||
c2 | integer |
|
||||
|
||||
ALTER TABLE 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 | Modifiers
|
||||
--------+---------+-----------
|
||||
c1 | integer |
|
||||
c2 | integer |
|
||||
|
||||
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
|
||||
\d test_add_column
|
||||
Table "public.test_add_column"
|
||||
Column | Type | Modifiers
|
||||
--------+---------+-----------
|
||||
c1 | integer |
|
||||
c2 | integer |
|
||||
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN c2 integer, -- fail because c2 already exists
|
||||
ADD COLUMN c3 integer;
|
||||
ERROR: column "c2" of relation "test_add_column" already exists
|
||||
\d test_add_column
|
||||
Table "public.test_add_column"
|
||||
Column | Type | Modifiers
|
||||
--------+---------+-----------
|
||||
c1 | integer |
|
||||
c2 | integer |
|
||||
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN IF NOT EXISTS c2 integer, -- skipping because c2 already exists
|
||||
ADD COLUMN c3 integer; -- fail because c3 already exists
|
||||
NOTICE: column "c2" of relation "test_add_column" already exists, skipping
|
||||
\d test_add_column
|
||||
Table "public.test_add_column"
|
||||
Column | Type | Modifiers
|
||||
--------+---------+-----------
|
||||
c1 | integer |
|
||||
c2 | integer |
|
||||
c3 | integer |
|
||||
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN IF NOT EXISTS c2 integer, -- skipping because c2 already exists
|
||||
ADD COLUMN IF NOT EXISTS c3 integer; -- skipping because c3 already exists
|
||||
NOTICE: column "c2" of relation "test_add_column" already exists, skipping
|
||||
NOTICE: column "c3" of relation "test_add_column" already exists, skipping
|
||||
\d test_add_column
|
||||
Table "public.test_add_column"
|
||||
Column | Type | Modifiers
|
||||
--------+---------+-----------
|
||||
c1 | integer |
|
||||
c2 | integer |
|
||||
c3 | integer |
|
||||
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN IF NOT EXISTS c2 integer, -- skipping because c2 already exists
|
||||
ADD COLUMN IF NOT EXISTS c3 integer, -- skipping because c3 already exists
|
||||
ADD COLUMN c4 integer;
|
||||
NOTICE: column "c2" of relation "test_add_column" already exists, skipping
|
||||
NOTICE: column "c3" of relation "test_add_column" already exists, skipping
|
||||
\d test_add_column
|
||||
Table "public.test_add_column"
|
||||
Column | Type | Modifiers
|
||||
--------+---------+-----------
|
||||
c1 | integer |
|
||||
c2 | integer |
|
||||
c3 | integer |
|
||||
c4 | integer |
|
||||
|
||||
DROP TABLE test_add_column;
|
||||
|
@ -1724,3 +1724,34 @@ ALTER TABLE logged1 SET UNLOGGED; -- silently do nothing
|
||||
DROP TABLE logged3;
|
||||
DROP TABLE logged2;
|
||||
DROP TABLE logged1;
|
||||
|
||||
-- test ADD COLUMN IF NOT EXISTS
|
||||
CREATE TABLE test_add_column(c1 integer);
|
||||
\d test_add_column
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN c2 integer;
|
||||
\d test_add_column
|
||||
ALTER TABLE 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
|
||||
\d test_add_column
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN c2 integer, -- fail because c2 already exists
|
||||
ADD COLUMN c3 integer;
|
||||
\d test_add_column
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN IF NOT EXISTS c2 integer, -- skipping because c2 already exists
|
||||
ADD COLUMN c3 integer; -- fail because c3 already exists
|
||||
\d test_add_column
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN IF NOT EXISTS c2 integer, -- skipping because c2 already exists
|
||||
ADD COLUMN IF NOT EXISTS c3 integer; -- skipping because c3 already exists
|
||||
\d test_add_column
|
||||
ALTER TABLE test_add_column
|
||||
ADD COLUMN IF NOT EXISTS c2 integer, -- skipping because c2 already exists
|
||||
ADD COLUMN IF NOT EXISTS c3 integer, -- skipping because c3 already exists
|
||||
ADD COLUMN c4 integer;
|
||||
\d test_add_column
|
||||
DROP TABLE test_add_column;
|
||||
|
Reference in New Issue
Block a user