mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-18 18:44:06 +08:00
> > 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:
parent
b7ed6f8512
commit
3abf496b8e
@ -480,6 +480,8 @@ check_foreign_key()
|
|||||||
|
|
||||||
relname = args[0];
|
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);
|
ret = SPI_execp(plan->splan[r], kvals, NULL, tcount);
|
||||||
/* we have no NULLs - so we pass ^^^^ here */
|
/* we have no NULLs - so we pass ^^^^ here */
|
||||||
|
|
||||||
|
@ -281,13 +281,13 @@ catalogs.
|
|||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>
|
||||||
rules and views
|
rules
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<application>pg_dump</application>
|
<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
|
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>
|
<varlistentry>
|
||||||
<term>
|
<term>
|
||||||
|
Loading…
Reference in New Issue
Block a user