From: | Amit Langote <amitlangote09(at)gmail(dot)com> |
---|---|
To: | Zhihong Yu <zyu(at)yugabyte(dot)com> |
Cc: | PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: simplifying foreign key/RI checks |
Date: | 2021-01-19 02:45:29 |
Message-ID: | CA+HiwqH_CSE_DXFjcqc5dLUkUPc+r=dQU3moi=VnrvmSid41MA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Tue, Jan 19, 2021 at 2:47 AM Zhihong Yu <zyu(at)yugabyte(dot)com> wrote:
>
> Hi,
> I was looking at this statement:
>
> insert into f select generate_series(1, 2000000, 2);
>
> Since certain generated values (the second half) are not in table p, wouldn't insertion for those values fail ?
> I tried a scaled down version (1000th) of your example:
>
> yugabyte=# insert into f select generate_series(1, 2000, 2);
> ERROR: insert or update on table "f" violates foreign key constraint "f_a_fkey"
> DETAIL: Key (a)=(1001) is not present in table "p".
Sorry, a wrong copy-paste by me. Try this:
create table p (a numeric primary key);
insert into p select generate_series(1, 2000000);
create table f (a bigint references p);
-- Unpatched
insert into f select generate_series(1, 2000000, 2);
INSERT 0 1000000
Time: 6527.652 ms (00:06.528)
update f set a = a + 1;
UPDATE 1000000
Time: 8108.310 ms (00:08.108)
-- Patched:
insert into f select generate_series(1, 2000000, 2);
INSERT 0 1000000
Time: 3312.193 ms (00:03.312)
update f set a = a + 1;
UPDATE 1000000
Time: 4292.807 ms (00:04.293)
> For v1-0002-Avoid-using-SPI-for-some-RI-checks.patch :
>
> + * Collect partition key values from the unique key.
>
> At the end of the nested loop, should there be an assertion that partkey->partnatts partition key values have been found ?
> This can be done by using a counter (initialized to 0) which is incremented when a match is found by the inner loop.
I've updated the patch to add the Assert. Thanks for taking a look.
--
Amit Langote
EDB: http://www.enterprisedb.com
Attachment | Content-Type | Size |
---|---|---|
v2-0001-Export-get_partition_for_tuple.patch | application/octet-stream | 2.8 KB |
v2-0002-Avoid-using-SPI-for-some-RI-checks.patch | application/octet-stream | 19.8 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Tomas Vondra | 2021-01-19 02:52:22 | Re: list of extended statistics on psql |
Previous Message | Masahiro Ikeda | 2021-01-19 02:44:44 | configurable the threshold for warning due to run out of transaction ID |