| From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
|---|---|
| To: | mark(at)markandruth(dot)co(dot)uk, pgsql-docs(at)lists(dot)postgresql(dot)org |
| Subject: | Re: Documentation correction suggestion for primary key hashing on partitioned tables |
| Date: | 2025-04-24 20:04:57 |
| Message-ID: | b326de4ee8fb39593287c7f88c9fa9034e5b2feb.camel@cybertec.at |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-docs |
On Thu, 2025-04-24 at 09:48 +0000, PG Doc comments form wrote:
> https://www.postgresql.org/docs/current/ddl-partitioning.html / 5.12.2.3.
> Limitations says:
>
> > To create a unique or primary key constraint on a partitioned table, the
> partition keys must not include any expressions or function calls and the
> constraint's columns must include all of the partition key columns. This
> limitation exists because the individual indexes making up the constraint
> can only directly enforce uniqueness within their own partitions; therefore,
> the partition structure itself must guarantee that there are not duplicates
> in different partitions.
>
> This seems to imply that if I have a table of primary key (a, b, c) in
> b-tree index, then a partition-by-hash method would require this full set of
> columns to be used in order for the constraints to be enforcable. However
> logically this should not be the case - only a hash of a prefix of the
> primary key - eg (a) or (a, b) should be needed to target the same table
> each time and hence get the constraint enforced. Testing this in postgres 16
> seems to show that it does work like this.
From the above:
To create a unique or primary key constraint on a partitioned table,
[...] the constraint's columns must include all of the partition key columns.
You seem to read it the other way around. Your example confirms what the
documentation says.
Yours,
Laurenz Albe
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Fujii Masao | 2025-04-25 06:02:09 | Re: Remove unnecessary secondary index terms for replication settings |
| Previous Message | Robert Treat | 2025-04-24 15:13:24 | Re: generated constraint name |