On partitioning, PKs and FKs
Hi!
I have a big table bigTable which I partitioned by hash on field columnX,
by creating bigTable_0, bigTable_1 etc.
Since I need a PK on bigTable.id, and table is not partitioned by id, and
columnX is not unique, i added PK on bigTable_0.id, bigTable_1.id etc. So
far, so good.
Now I have anotherTable, which has column bigTable_id referencing
bigTable.id.
Creating FK anotherTable__bigTable_FK on anotherTable.bigTable_id -you
guess :D- fails with
[42830] ERROR: there is no unique constraint matching given keys for
referenced table "bigTable"
Also creating a FK pointing to one of the hash tables bigTable_0.id,
bigTable_1.id etc. also fails with
ERROR: 23503: insert or update on table "anotherTable" violates foreign
key constraint "anotherTable__bigTable_FK".
Do I have a way out? :)
On 7/8/21 3:42 AM, Wiwwo Staff wrote:
Hi!
I have a big table bigTable which I partitioned by hash on field columnX,
by creating bigTable_0, bigTable_1etc.
Since I need a PK on bigTable.id, and table is not partitioned by id, and
columnX is not unique, i added PK on bigTable_0.id, bigTable_1.id etc. So
far, so good.Now I have anotherTable, which has column bigTable_id referencing bigTable.id.
Creating FK anotherTable__bigTable_FK on anotherTable.bigTable_id-you
guess :D- fails with[42830] ERROR: there is no unique constraint matching given keys for
referenced table "bigTable"Also creating a FK pointing to one of the hash tables bigTable_0.id,
bigTable_1.id etc. also fails withERROR: 23503: insert or update on table "anotherTable" violates
foreign key constraint "anotherTable__bigTable_FK".Do I have a way out? :)
https://www.postgresql.org/docs/12/ddl-partitioning.html#DDL-PARTITIONING-DECLARATIVE
Section "5.11.2.3. Limitations" says, "Unique constraints (and hence primary
keys) on partitioned tables must include all the partition key columns."
Thus, the bigTable PK must be on id, columnX, (No, I don't like it either.)
--
Angular momentum makes the world go 'round.
Big big variability on partitioned column, which is filtered (where
condition) in (almost) all queries.
On Thu, 8 Jul 2021 at 14:23, Michael Lewis <mlewis@entrata.com> wrote:
Show quoted text
Why are you using hash partitioning?
<font size=2 face="sans-serif">On 2021-07-08 13:30, Ron wrote:<br>> Thus, the bigTable PK must be on id, columnX, (No, I don't like it <br>> either.)<br><br>That's not entirely true. You can keep the PK on id if you additionally <br>create a unique constraint on (id, columnX).<br><br>That way, you can at least be certain that the uniqueness of the PK <br>remains in-tact, even if that is a surrogate key that has nothing to do <br>with the uniqueness of the actual records.<br><br>Regards,<br><br>Alban Hertroys.<br><br><br></font><p><span style="font-size:11pt;"><span style="font-family:century gothic"><strong>Alban Hertroys</strong></span></span><span style="font-size:9pt;"><span style="font-family:centurygothic"><strong> </strong></span></span><br />
<span style="font-size:10pt;"><span style="font-family:century gothic"></span></span><br />
</p>
<table style="border-collapse:collapse;" width="100%">
<tbody>
<tr>
<td bgcolor="white" style="border-style:none none none none;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;" width="13%">
<p><img alt="" src="data:image/png;base64,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" /></p>
</td>
<td bgcolor="white" style="border-style:none none none none;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;" width="71%"> </td>
<td bgcolor="white" style="border-style:none none none none;border-color:#000000;border-width:0px 0px 0px 0px;padding:0px 0px;" width="14%"> </td>
</tr>
</tbody>
</table>
<p><span style="font-size:9pt;"><span style="font-family:century gothic">Apollo Tyres (NL) B.V.</span></span><br />
<span style="font-size:9pt;"><span style="font-family:century gothic">Ir. E.L.C. Schiffstraat 370, 7547 RD Enschede, The Netherlands<br />
+31 (0)53 4888 776<br />
<br />
alban.hertroys@apollotyres.com<br />
Chamber of Commerce number: 34223268</span></span></p>
<p><img alt="" src="data:image/png;base64,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" /></p>
<table width=100%><tr><td bgcolor=#ffffff><font color=#000000><pre>CIN: L25111KL1972PLC002449
Registered Office: Apollo Tyres Ltd, 3rd Floor, Areekal Mansion, Panampilly Nagar, Kochi 682036, India
Disclaimer:
The information contained in this e-mail is intended solely for the use of the individual or entity to whom it is addressed. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or action in relation to the contents of this information is strictly prohibited and may be unlawful and request you to delete this message and any attachments and advise the sender by return e-mail. The confidentiality of this message is not warranted. Apollo Tyres and its subsidiaries rule out any and every liability resulting from this or any other electronic transmiss</pre></font></td></tr></table>
The docs are pretty clear that all constraints must have the partition key
as part of the key, and PK is most certainly a constraint.
I welcome a counter-example.
On 7/8/21 10:23 AM, Alban Hertroys wrote:
On 2021-07-08 13:30, Ron wrote:
Thus, the bigTable PK must be on id, columnX, (No, I don't like it
either.)That's not entirely true. You can keep the PK on id if you additionally
create a unique constraint on (id, columnX).That way, you can at least be certain that the uniqueness of the PK
remains in-tact, even if that is a surrogate key that has nothing to do
with the uniqueness of the actual records.Regards,
Alban Hertroys.
*Alban Hertroys***
Apollo Tyres (NL) B.V.
Ir. E.L.C. Schiffstraat 370, 7547 RD Enschede, The Netherlands
+31 (0)53 4888 776alban.hertroys@apollotyres.com
Chamber of Commerce number: 34223268CIN: L25111KL1972PLC002449
Registered Office: Apollo Tyres Ltd, 3rd Floor, Areekal Mansion, Panampilly Nagar, Kochi 682036, India
Disclaimer:
The information contained in this e-mail is intended solely for the use of the individual or entity to whom it is addressed. If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or action in relation to the contents of this information is strictly prohibited and may be unlawful and request you to delete this message and any attachments and advise the sender by return e-mail. The confidentiality of this message is not warranted. Apollo Tyres and its subsidiaries rule out any and every liability resulting from this or any other electronic transmiss
--
Angular momentum makes the world go 'round.
On Thu, 8 Jul 2021 at 21:42, Alban Hertroys <alban.hertroys@apollotyres.com>
wrote:
On 2021-07-08 13:30, Ron wrote:
Thus, the bigTable PK must be on id, columnX, (No, I don't like it
either.)That's not entirely true. You can keep the PK on id if you additionally
create a unique constraint on (id, columnX).
Uhm, but that means that i have to partition by id *and* columnX, which is
not what I really want...
=> create table bigtable
(
id numeric primary key,
columnX varchar(5),
constraint test_unique unique (id, columnX)
) partition by hash (columnx);
ERROR: 0A000: unique constraint on partitioned table must include all
partitioning columns
DETAIL: PRIMARY KEY constraint on table "bigtable" lacks column "columnx"
which is part of the partition key.
LOCATION: DefineIndex, indexcmds.c:946
Time: 146.254 ms
Also
) partition by hash (id, columnx);
ERROR: 0A000: unique constraint on partitioned table must include all
partitioning columns
DETAIL: PRIMARY KEY constraint on table "bigtable" lacks column "columnx"
which is part of the partition key.
LOCATION: DefineIndex, indexcmds.c:946
Time: 150.646 ms
and
) partition by hash (id);
CREATE TABLE
Time: 152.780 ms
which is not what I want...
On Thursday, July 8, 2021, Wiwwo Staff <wiwwo@wiwwo.com> wrote:
On Thu, 8 Jul 2021 at 21:42, Alban Hertroys <alban.hertroys@apollotyres.
com> wrote:On 2021-07-08 13:30, Ron wrote:
Thus, the bigTable PK must be on id, columnX, (No, I don't like it
either.)That's not entirely true. You can keep the PK on id if you additionally
create a unique constraint on (id, columnX).Uhm, but that means that i have to partition by id *and* columnX, which
is not what I really want...
Those examples show that Alban’s comment that you can keep the PK on id is
incorrect.
All you can do is ensure that a given non-partition value is unique on any
given partition. You cannot setup a constraint that definitionally
requires the entire partition tree to coordinate and ensure none of the
partitions have duplicates among them.
David J.