]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
doc: Clarify that COLUMN is optional in ALTER TABLE ... ADD/DROP COLUMN.
authorFujii Masao <fujii@postgresql.org>
Thu, 5 Mar 2026 03:55:52 +0000 (12:55 +0900)
committerFujii Masao <fujii@postgresql.org>
Thu, 5 Mar 2026 03:55:52 +0000 (12:55 +0900)
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

doc/src/sgml/ref/alter_table.sgml
src/test/regress/expected/alter_table.out
src/test/regress/sql/alter_table.sql

index aab2c6eb19ff168e0448200aa7ceed1bd0cd2565..00817e90360d21dbb7f292342c422dec6d8247e6 100644 (file)
@@ -163,7 +163,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
 
   <variablelist>
    <varlistentry id="sql-altertable-desc-add-column">
-    <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
@@ -175,7 +175,7 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
    </varlistentry>
 
    <varlistentry id="sql-altertable-desc-drop-column">
-    <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
index ac1a7345d0faada39765f16a0be0c2c82f1fd27f..5998c670aa3ae6e698b5ad5cfefc74e3e92e7dcd 100644 (file)
@@ -3849,6 +3849,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                   
index 417202430a5ccd799f2c30b7511dbdac7f8cbab3..d6b6381ae5c707a32c2911df658e84ff946c6b9f 100644 (file)
@@ -2331,6 +2331,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*