summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian1998-10-06 03:12:59 +0000
committerBruce Momjian1998-10-06 03:12:59 +0000
commit3abf496b8eb7619a576b135b447a78fb8cfb1fc1 (patch)
tree1d3335c6103ae6bdf2b2aea32ea278149eadf0d2
parentb7ed6f8512b40ce7b82de0cb084452ca11277b84 (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.c2
-rw-r--r--doc/src/sgml/ref/pg_dump.sgml6
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>