From 3abf496b8eb7619a576b135b447a78fb8cfb1fc1 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 6 Oct 1998 03:12:59 +0000 Subject: [PATCH] > > There is a bug in check_foreign_key of refint.c which is bundled with > > the standard distribution. It occurs when a trigger calling this > > function recursively fires another trigger which calls the same > > function. The calling check_foreign_key loses its plan informantion and > > when it tries to use it the backend closes its channel. You can check it > > with the sql script I am attaching below. > > The solution to this is to do a find_plan again before executing it at > > line 483 of refint.c. > > Therefore two more lines should be added before line 483: Anand Surelia --- contrib/spi/refint.c | 2 ++ doc/src/sgml/ref/pg_dump.sgml | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/contrib/spi/refint.c b/contrib/spi/refint.c index 954e12c590..ca9ffa7288 100644 --- a/contrib/spi/refint.c +++ b/contrib/spi/refint.c @@ -480,6 +480,8 @@ check_foreign_key() relname = args[0]; + sprintf(ident, "%s$%u", trigger->tgname, rel->rd_id); + plan = find_plan(ident, &FPlans, &nFPlans); ret = SPI_execp(plan->splan[r], kvals, NULL, tcount); /* we have no NULLs - so we pass ^^^^ here */ diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml index 89974eaa8d..7e3d44292d 100644 --- a/doc/src/sgml/ref/pg_dump.sgml +++ b/doc/src/sgml/ref/pg_dump.sgml @@ -281,13 +281,13 @@ catalogs. -rules and views +rules pg_dump -does not understand user-defined rules and views and +does not understand user-defined rules and will fail to dump them properly. (This is due to the fact that -rules are stored as plans in the catalogs and not textually). +rules are stored as plans in the catalogs and not textually.)