From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Fix failures in validateForeignKeyConstraint's slow path. |
Date: | 2019-04-06 19:09:23 |
Message-ID: | E1hCqgt-0007Ys-9E@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Fix failures in validateForeignKeyConstraint's slow path.
The foreign-key-checking loop in ATRewriteTables failed to ignore
relations without storage (e.g., partitioned tables), unlike the
initial loop. This accidentally worked as long as RI_Initial_Check
succeeded, which it does in most practical cases (including all the
ones exercised in the existing regression tests :-(). However, if
that failed, as for instance when there are permissions issues,
then we entered the slow fire-the-trigger-on-each-tuple path.
And that would try to read from the referencing relation, and fail
if it lacks storage.
A second problem, recently introduced in HEAD, was that this loop
had been broken by sloppy refactoring for the tableam API changes.
Repair both issues, and add a regression test case so we have some
coverage on this code path. Back-patch as needed to v11.
(It looks like this code could do with additional bulletproofing,
but let's get a working test case in place first.)
Hadi Moshayedi, Tom Lane, Andres Freund
Discussion: https://postgr.es/m/CAK=1=WrnNmBbe5D9sm3t0a6dnAq3cdbF1vXY816j1wsMqzC8bw@mail.gmail.com
Discussion: https://postgr.es/m/19030.1554574075@sss.pgh.pa.us
Discussion: https://postgr.es/m/20190325180405.jytoehuzkeozggxx%40alap3.anarazel.de
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/46e3442c9ec858071d60a1c0fae2e9868aeaa0c8
Modified Files
--------------
src/backend/commands/tablecmds.c | 15 +++++++--------
src/test/regress/expected/foreign_key.out | 26 ++++++++++++++++++++++++++
src/test/regress/sql/foreign_key.sql | 25 +++++++++++++++++++++++++
3 files changed, 58 insertions(+), 8 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2019-04-06 21:54:34 | pgsql: Avoid Python memory leaks in hstore_plpython and jsonb_plpython. |
Previous Message | Michael Paquier | 2019-04-06 06:43:35 | pgsql: Add support TCP user timeout in libpq and the backend server |