Re: Documentation correction suggestion for primary key hashing on partitioned tables
От | Laurenz Albe |
---|---|
Тема | Re: Documentation correction suggestion for primary key hashing on partitioned tables |
Дата | |
Msg-id | b326de4ee8fb39593287c7f88c9fa9034e5b2feb.camel@cybertec.at обсуждение исходный текст |
Ответ на | Documentation correction suggestion for primary key hashing on partitioned tables (PG Doc comments form <noreply@postgresql.org>) |
Список | 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
В списке pgsql-docs по дате отправления: