> > 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
This commit is contained in:
Bruce Momjian 1998-10-06 03:12:59 +00:00
parent b7ed6f8512
commit 3abf496b8e
2 changed files with 5 additions and 3 deletions

View File

@ -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 */

View File

@ -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>