diff options
author | Bruce Momjian | 1998-10-06 03:12:59 +0000 |
---|---|---|
committer | Bruce Momjian | 1998-10-06 03:12:59 +0000 |
commit | 3abf496b8eb7619a576b135b447a78fb8cfb1fc1 (patch) | |
tree | 1d3335c6103ae6bdf2b2aea32ea278149eadf0d2 | |
parent | b7ed6f8512b40ce7b82de0cb084452ca11277b84 (diff) |
> > 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
-rw-r--r-- | contrib/spi/refint.c | 2 | ||||
-rw-r--r-- | 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 954e12c5905..ca9ffa72881 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 89974eaa8da..7e3d44292d7 100644 --- a/doc/src/sgml/ref/pg_dump.sgml +++ b/doc/src/sgml/ref/pg_dump.sgml @@ -281,13 +281,13 @@ catalogs. <variablelist> <varlistentry> <term> -rules and views +rules <listitem> <para> <application>pg_dump</application> -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.) <varlistentry> <term> |