Commit 3abf496b authored by Bruce Momjian's avatar Bruce Momjian

> > 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
parent b7ed6f85
......@@ -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 */
......
......@@ -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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment