diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2019-04-06 15:09:10 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2019-04-06 15:09:10 -0400 |
commit | c2a5fb33d104afbe2c4877ddce2689bccd4eb1f1 (patch) | |
tree | 301bff6ef418f947e996fd1b38aad81d5bb5acb4 /src/backend/utils/adt/ruleutils.c | |
parent | 7338ed28e2ecaf9c8cb73e7721838cd8f07ad149 (diff) | |
download | postgresql-c2a5fb33d104afbe2c4877ddce2689bccd4eb1f1.tar.gz postgresql-c2a5fb33d104afbe2c4877ddce2689bccd4eb1f1.zip |
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
Diffstat (limited to 'src/backend/utils/adt/ruleutils.c')
0 files changed, 0 insertions, 0 deletions