I found the following change to be confusing.

/doc/src/sgml/ref/alter_table.sgml
+       <para>
+        Additional restrictions apply when unique indexes are applied to
+        partitioned tables; see <xref linkend="sql-createtable" />.
+       </para>

That paragraph appears in the section covering "ALTER TABLE name ADD
table_constraint_using_index"

However, the code says:

/src/backend/commands/tablecmds.c
+   /*
+    * Doing this on partitioned tables is not a simple feature to
implement,
+    * so let's punt for now.
+    */
+   if (rel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE)
+       ereport(ERROR,
+               (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+                errmsg("ALTER TABLE / ADD CONSTRAINT USING INDEX is not
supported on partitioned tables")));

I was expecting the doc for ADD CONSTRAINT USING INDEX to note the
limitation explicitly - in lieu of the above paragraph.

Also, I cannot reason out what the following limitation means:

/doc/src/sgml/ref/create_table.sgml
+      If any partitions are in turn partitioned, all columns of each
partition
+      key are considered at each level below the <literal>UNIQUE</literal>
+      constraint.


As an aside, adding a link to "Data Definiton/Table Partitioning" from at
least CREATE TABLE ... PARTITION BY; and swapping "PARTITION BY" and
"PARTITION OF" in the Parameters section of that page - one must partition
by a table before one can partition it (and also the synopsis lists them in
the BY before OF order), would be helpful.

David J.


On Mon, Feb 19, 2018 at 1:40 PM, Alvaro Herrera <alvhe...@alvh.no-ip.org>
wrote:

> Allow UNIQUE indexes on partitioned tables
>
> If we restrict unique constraints on partitioned tables so that they
> must always include the partition key, then our standard approach to
> unique indexes already works --- each unique key is forced to exist
> within a single partition, so enforcing the unique restriction in each
> index individually is enough to have it enforced globally.  Therefore we
> can implement unique indexes on partitions by simply removing a few
> restrictions (and adding others.)
>
> Discussion: https://postgr.es/m/20171222212921.hi6hg6pem2w2t36z@alvherre.
> pgsql
> Discussion: https://postgr.es/m/20171229230607.3iib6b62fn3uaf47@alvherre.
> pgsql
> Reviewed-by: Simon Riggs, Jesper Pedersen, Peter Eisentraut, Jaime
>         Casanova, Amit Langote
>
> Branch
> ------
> master
>
> Details
> -------
> https://git.postgresql.org/pg/commitdiff/eb7ed3f3063401496e4aa4bd68fa33
> f0be31a72f
>
> Modified Files
> --------------
> doc/src/sgml/ddl.sgml                         |   9 +-
> doc/src/sgml/ref/alter_table.sgml             |  15 +-
> doc/src/sgml/ref/create_index.sgml            |   5 +
> doc/src/sgml/ref/create_table.sgml            |  18 +-
> src/backend/bootstrap/bootparse.y             |   2 +
> src/backend/catalog/index.c                   |  50 ++++-
> src/backend/catalog/pg_constraint.c           |  76 +++++++
> src/backend/catalog/toasting.c                |   4 +-
> src/backend/commands/indexcmds.c              | 125 +++++++++--
> src/backend/commands/tablecmds.c              |  71 ++++++-
> src/backend/parser/analyze.c                  |   7 +
> src/backend/parser/parse_utilcmd.c            |  31 +--
> src/backend/tcop/utility.c                    |   1 +
> src/bin/pg_dump/t/002_pg_dump.pl              |  65 ++++++
> src/include/catalog/index.h                   |   5 +-
> src/include/catalog/pg_constraint_fn.h        |   4 +-
> src/include/commands/defrem.h                 |   1 +
> src/include/parser/parse_utilcmd.h            |   3 +-
> src/test/regress/expected/alter_table.out     |   8 -
> src/test/regress/expected/create_index.out    |   6 +
> src/test/regress/expected/create_table.out    |  12 --
> src/test/regress/expected/indexing.out        | 294
> +++++++++++++++++++++++++-
> src/test/regress/expected/insert_conflict.out |   2 +-
> src/test/regress/sql/alter_table.sql          |   2 -
> src/test/regress/sql/create_index.sql         |   6 +
> src/test/regress/sql/create_table.sql         |   8 -
> src/test/regress/sql/indexing.sql             | 172 ++++++++++++++-
> 27 files changed, 907 insertions(+), 95 deletions(-)
>
>

Reply via email to