Commit a254545a authored by David Rowley's avatar David Rowley

Doc: clarify partitioned table limitations

Improve documentation regarding the limitations of unique and primary key
constraints on partitioned tables.  The existing documentation didn't make
it clear that the constraint columns had to be present in the partition
key as bare columns.  The reader could be led to believe that it was ok to
include the constraint columns as part of a function call's parameters or
as part of an expression.  Additionally, the documentation didn't mention
anything about the fact that we disallow unique and primary key
constraints if the partition keys contain *any* function calls or
expressions, regardless of if the constraint columns appear as columns
elsewhere in the partition key.

The confusion here was highlighted by a report on the general mailing list
by James Vanns.

Discussion: https://postgr.es/m/CAH7vdhNF0EdYZz3GLpgE3RSJLwWLhEk7A_fiKS9dPBT3Dz_3eA@mail.gmail.com
Discussion: https://postgr.es/m/CAApHDvoU-u9iTqKjteYRFfi+UNEk7dbSAcyxEQD==vZt9B1KnA@mail.gmail.com
Reviewed-by: Erik Rijkers
Backpatch-through: 11
parent bc73bd26
...@@ -4057,12 +4057,13 @@ ALTER INDEX measurement_city_id_logdate_key ...@@ -4057,12 +4057,13 @@ ALTER INDEX measurement_city_id_logdate_key
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para> <para>
Unique constraints (and hence primary keys) on partitioned tables must To create a unique or primary key constraint on a partitioned table,
include all the partition key columns. This limitation exists because the partition keys must not include any expressions or function calls
the individual indexes making up the constraint can only directly and the constraint's columns must include all of the partition key
enforce uniqueness within their own partitions; therefore, the columns. This limitation exists because the individual indexes making
partition structure itself must guarantee that there are not up the constraint can only directly enforce uniqueness within their own
duplicates in different partitions. partitions; therefore, the partition structure itself must guarantee
that there are not duplicates in different partitions.
</para> </para>
</listitem> </listitem>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment