Avoid a join between relations having the FK to detect FK violation.
The planner might optimize this considering the PK must exist on the
referenced side at some point, effectively masking a bug this test
tries to detect.
Tom Lane and Jehan-Guillaume de Rorthais
Discussion: https://postgr.es/m/467.
1581270529@sss.pgh.pa.us
index 9e1d7496014e7eb27dda6b78619dd4b582fc5910..07bd5b6434f9718221e2e6f3629c27047096fc5e 100644 (file)
INSERT INTO fkpart9.pk VALUES (35);
INSERT INTO fkpart9.fk VALUES (35);
DELETE FROM fkpart9.pk WHERE a=35;
-SELECT fk.fk_a, pk.a
-FROM fkpart9.fk
-LEFT JOIN fkpart9.pk ON fk.fk_a = pk.a
-WHERE fk.fk_a=35;
- fk_a | a
-------+---
+SELECT * FROM fkpart9.pk;
+ a
+---
+(0 rows)
+
+SELECT * FROM fkpart9.fk;
+ fk_a
+------
(0 rows)
DROP SCHEMA fkpart9 CASCADE;
index b03a6670a21027fb3ca735ee65089842fcc34357..c5c9011afcb861ca3afe8cf056062807b6ab18ee 100644 (file)
INSERT INTO fkpart9.pk VALUES (35);
INSERT INTO fkpart9.fk VALUES (35);
DELETE FROM fkpart9.pk WHERE a=35;
-SELECT fk.fk_a, pk.a
-FROM fkpart9.fk
-LEFT JOIN fkpart9.pk ON fk.fk_a = pk.a
-WHERE fk.fk_a=35;
+SELECT * FROM fkpart9.pk;
+SELECT * FROM fkpart9.fk;
DROP SCHEMA fkpart9 CASCADE;