mirror of
https://github.com/postgres/postgres.git
synced 2026-04-04 08:45:52 -04:00
doc: Document IF NOT EXISTS option for ALTER FOREIGN TABLE ADD COLUMN.
Commit 2cd40adb85 added the IF NOT EXISTS option to ALTER TABLE ADD COLUMN.
This also enabled IF NOT EXISTS for ALTER FOREIGN TABLE ADD COLUMN,
but the ALTER FOREIGN TABLE documentation was not updated to mention it.
This commit updates the documentation to describe the IF NOT EXISTS option for
ALTER FOREIGN TABLE ADD COLUMN.
While updating that section, also this commit clarifies that the COLUMN keyword
is optional in ALTER FOREIGN TABLE ADD/DROP COLUMN. Previously, part of
the documentation could be read as if COLUMN were required.
This commit adds regression tests covering these ALTER FOREIGN TABLE syntaxes.
Backpatch to all supported versions.
Suggested-by: Fujii Masao <masao.fujii@gmail.com>
Author: Chao Li <lic@highgo.com>
Reviewed-by: Robert Treat <rob@xzilla.net>
Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/CAHGQGwFk=rrhrwGwPtQxBesbT4DzSZ86Q3ftcwCu3AR5bOiXLw@mail.gmail.com
Backpatch-through: 14
This commit is contained in:
parent
46c93b7056
commit
d0f4b6350d
3 changed files with 25 additions and 3 deletions
|
|
@ -32,7 +32,7 @@ ALTER FOREIGN TABLE [ IF EXISTS ] <replaceable class="parameter">name</replaceab
|
|||
|
||||
<phrase>where <replaceable class="parameter">action</replaceable> is one of:</phrase>
|
||||
|
||||
ADD [ COLUMN ] <replaceable class="parameter">column_name</replaceable> <replaceable class="parameter">data_type</replaceable> [ COLLATE <replaceable class="parameter">collation</replaceable> ] [ <replaceable class="parameter">column_constraint</replaceable> [ ... ] ]
|
||||
ADD [ COLUMN ] [ IF NOT EXISTS ] <replaceable class="parameter">column_name</replaceable> <replaceable class="parameter">data_type</replaceable> [ COLLATE <replaceable class="parameter">collation</replaceable> ] [ <replaceable class="parameter">column_constraint</replaceable> [ ... ] ]
|
||||
DROP [ COLUMN ] [ IF EXISTS ] <replaceable class="parameter">column_name</replaceable> [ RESTRICT | CASCADE ]
|
||||
ALTER [ COLUMN ] <replaceable class="parameter">column_name</replaceable> [ SET DATA ] TYPE <replaceable class="parameter">data_type</replaceable> [ COLLATE <replaceable class="parameter">collation</replaceable> ]
|
||||
ALTER [ COLUMN ] <replaceable class="parameter">column_name</replaceable> SET DEFAULT <replaceable class="parameter">expression</replaceable>
|
||||
|
|
@ -67,11 +67,13 @@ ALTER FOREIGN TABLE [ IF EXISTS ] <replaceable class="parameter">name</replaceab
|
|||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><literal>ADD COLUMN</literal></term>
|
||||
<term><literal>ADD [ COLUMN ] [ IF NOT EXISTS ]</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This form adds a new column to the foreign table, using the same syntax as
|
||||
<link linkend="sql-createforeigntable"><command>CREATE FOREIGN TABLE</command></link>.
|
||||
If <literal>IF NOT EXISTS</literal> is specified and a column already
|
||||
exists with this name, no error is thrown.
|
||||
Unlike the case when adding a column to a regular table, nothing happens
|
||||
to the underlying storage: this action simply declares that
|
||||
some new column is now accessible through the foreign table.
|
||||
|
|
@ -80,7 +82,7 @@ ALTER FOREIGN TABLE [ IF EXISTS ] <replaceable class="parameter">name</replaceab
|
|||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>DROP COLUMN [ IF EXISTS ]</literal></term>
|
||||
<term><literal>DROP [ COLUMN ] [ IF EXISTS ]</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
This form drops a column from a foreign table.
|
||||
|
|
|
|||
|
|
@ -828,10 +828,13 @@ COMMENT ON COLUMN ft1.c1 IS NULL;
|
|||
ALTER FOREIGN TABLE ft1 ADD COLUMN c4 integer;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c5 integer DEFAULT 0;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c6 integer;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN IF NOT EXISTS c6 integer;
|
||||
NOTICE: column "c6" of relation "ft1" already exists, skipping
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c7 integer NOT NULL;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c8 integer;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c9 integer;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c10 integer OPTIONS (p1 'v1');
|
||||
ALTER FOREIGN TABLE ft1 ADD c11 integer;
|
||||
ALTER FOREIGN TABLE ft1 ALTER COLUMN c4 SET DEFAULT 0;
|
||||
ALTER FOREIGN TABLE ft1 ALTER COLUMN c5 DROP DEFAULT;
|
||||
ALTER FOREIGN TABLE ft1 ALTER COLUMN c6 SET NOT NULL;
|
||||
|
|
@ -863,6 +866,7 @@ ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 SET STORAGE PLAIN;
|
|||
c8 | text | | | | (p2 'V2') | plain | |
|
||||
c9 | integer | | | | | plain | |
|
||||
c10 | integer | | | | (p1 'v1') | plain | |
|
||||
c11 | integer | | | | | plain | |
|
||||
Check constraints:
|
||||
"ft1_c2_check" CHECK (c2 <> ''::text)
|
||||
"ft1_c3_check" CHECK (c3 >= '01-01-1994'::date AND c3 <= '01-31-1994'::date)
|
||||
|
|
@ -894,6 +898,7 @@ ERROR: column "no_column" of relation "ft1" does not exist
|
|||
ALTER FOREIGN TABLE ft1 DROP COLUMN IF EXISTS no_column;
|
||||
NOTICE: column "no_column" of relation "ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE ft1 DROP COLUMN c9;
|
||||
ALTER FOREIGN TABLE ft1 DROP c11;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c11 serial;
|
||||
ALTER FOREIGN TABLE ft1 SET SCHEMA foreign_schema;
|
||||
ALTER FOREIGN TABLE ft1 SET TABLESPACE ts; -- ERROR
|
||||
|
|
@ -928,6 +933,8 @@ ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c4 integer;
|
|||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c6 integer;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN IF NOT EXISTS c6 integer;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c7 integer NOT NULL;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c8 integer;
|
||||
|
|
@ -936,6 +943,8 @@ ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c9 integer;
|
|||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c10 integer OPTIONS (p1 'v1');
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD c11 integer;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c6 SET NOT NULL;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c7 DROP NOT NULL;
|
||||
|
|
@ -957,10 +966,14 @@ ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 OWNER TO regress_test_role;
|
|||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 OPTIONS (DROP delimiter, SET quote '~', ADD escape '@');
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP COLUMN no_column;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP COLUMN IF EXISTS no_column;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP COLUMN c9;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP c11;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 SET SCHEMA foreign_schema;
|
||||
NOTICE: relation "doesnt_exist_ft1" does not exist, skipping
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 RENAME c1 TO foreign_column_1;
|
||||
|
|
|
|||
|
|
@ -383,10 +383,12 @@ COMMENT ON COLUMN ft1.c1 IS NULL;
|
|||
ALTER FOREIGN TABLE ft1 ADD COLUMN c4 integer;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c5 integer DEFAULT 0;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c6 integer;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN IF NOT EXISTS c6 integer;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c7 integer NOT NULL;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c8 integer;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c9 integer;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c10 integer OPTIONS (p1 'v1');
|
||||
ALTER FOREIGN TABLE ft1 ADD c11 integer;
|
||||
|
||||
ALTER FOREIGN TABLE ft1 ALTER COLUMN c4 SET DEFAULT 0;
|
||||
ALTER FOREIGN TABLE ft1 ALTER COLUMN c5 DROP DEFAULT;
|
||||
|
|
@ -419,6 +421,7 @@ ALTER FOREIGN TABLE ft1 OPTIONS (DROP delimiter, SET quote '~', ADD escape '@');
|
|||
ALTER FOREIGN TABLE ft1 DROP COLUMN no_column; -- ERROR
|
||||
ALTER FOREIGN TABLE ft1 DROP COLUMN IF EXISTS no_column;
|
||||
ALTER FOREIGN TABLE ft1 DROP COLUMN c9;
|
||||
ALTER FOREIGN TABLE ft1 DROP c11;
|
||||
ALTER FOREIGN TABLE ft1 ADD COLUMN c11 serial;
|
||||
ALTER FOREIGN TABLE ft1 SET SCHEMA foreign_schema;
|
||||
ALTER FOREIGN TABLE ft1 SET TABLESPACE ts; -- ERROR
|
||||
|
|
@ -430,10 +433,12 @@ ALTER FOREIGN TABLE foreign_schema.ft1 RENAME TO foreign_table_1;
|
|||
-- alter noexisting table
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c4 integer;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c6 integer;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN IF NOT EXISTS c6 integer;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c7 integer NOT NULL;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c8 integer;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c9 integer;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD COLUMN c10 integer OPTIONS (p1 'v1');
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ADD c11 integer;
|
||||
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c6 SET NOT NULL;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 ALTER COLUMN c7 DROP NOT NULL;
|
||||
|
|
@ -447,8 +452,10 @@ ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP CONSTRAINT IF EXISTS no_cons
|
|||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP CONSTRAINT ft1_c1_check;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 OWNER TO regress_test_role;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 OPTIONS (DROP delimiter, SET quote '~', ADD escape '@');
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP COLUMN no_column;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP COLUMN IF EXISTS no_column;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP COLUMN c9;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 DROP c11;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 SET SCHEMA foreign_schema;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 RENAME c1 TO foreign_column_1;
|
||||
ALTER FOREIGN TABLE IF EXISTS doesnt_exist_ft1 RENAME TO foreign_table_1;
|
||||
|
|
|
|||
Loading…
Reference in a new issue