pgsql: Fix failures in validateForeignKeyConstraint's slow path.
От | Tom Lane |
---|---|
Тема | pgsql: Fix failures in validateForeignKeyConstraint's slow path. |
Дата | |
Msg-id | E1hCqgt-0007Yt-9J@gemulon.postgresql.org обсуждение исходный текст |
Список | 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 ------ REL_11_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/c2a5fb33d104afbe2c4877ddce2689bccd4eb1f1 Modified Files -------------- src/backend/commands/tablecmds.c | 9 +++++++++ src/test/regress/expected/foreign_key.out | 28 +++++++++++++++++++++++++++- src/test/regress/sql/foreign_key.sql | 25 +++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-)
В списке pgsql-committers по дате отправления: