doc: Clarify that COLUMN is optional in ALTER TABLE ... ADD/DROP COLUMN.

In ALTER TABLE ... ADD/DROP COLUMN, the COLUMN keyword is optional. However,
part of the documentation could be read as if COLUMN were required, which may
mislead users about the command syntax.

This commit updates the ALTER TABLE documentation to clearly state that
COLUMN is optional for ADD and DROP.

Also this commit adds regression tests covering ALTER TABLE ... ADD/DROP
without the COLUMN keyword.

Backpatch to all supported versions.

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/CAEoWx2n6ShLMOnjOtf63TjjgGbgiTVT5OMsSOFmbjGb6Xue1Bw@mail.gmail.com
Backpatch-through: 14
This commit is contained in:
Fujii Masao 2026-03-05 12:57:52 +09:00
parent 270e7b4ff5
commit 87da83bde9
3 changed files with 20 additions and 2 deletions

View file

@ -154,7 +154,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
<variablelist>
<varlistentry>
<term><literal>ADD COLUMN [ IF NOT EXISTS ]</literal></term>
<term><literal>ADD [ COLUMN ] [ IF NOT EXISTS ]</literal></term>
<listitem>
<para>
This form adds a new column to the table, using the same syntax as
@ -166,7 +166,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
</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 table. Indexes and

View file

@ -3735,6 +3735,16 @@ Referenced by:
ALTER TABLE test_add_column
ADD COLUMN IF NOT EXISTS c5 SERIAL CHECK (c5 > 10);
NOTICE: column "c5" of relation "test_add_column" already exists, skipping
ALTER TABLE test_add_column
ADD c6 integer; -- omit COLUMN
ALTER TABLE test_add_column
ADD IF NOT EXISTS c6 integer;
NOTICE: column "c6" of relation "test_add_column" already exists, skipping
ALTER TABLE test_add_column
DROP c6; -- omit COLUMN
ALTER TABLE test_add_column
DROP IF EXISTS c6;
NOTICE: column "c6" of relation "test_add_column" does not exist, skipping
\d test_add_column*
Table "public.test_add_column"
Column | Type | Collation | Nullable | Default

View file

@ -2305,6 +2305,14 @@ ALTER TABLE test_add_column
\d test_add_column
ALTER TABLE test_add_column
ADD COLUMN IF NOT EXISTS c5 SERIAL CHECK (c5 > 10);
ALTER TABLE test_add_column
ADD c6 integer; -- omit COLUMN
ALTER TABLE test_add_column
ADD IF NOT EXISTS c6 integer;
ALTER TABLE test_add_column
DROP c6; -- omit COLUMN
ALTER TABLE test_add_column
DROP IF EXISTS c6;
\d test_add_column*
DROP TABLE test_add_column;
\d test_add_column*