Re: Bug in pg_get_ruledef?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Sergio Pili <sergiop(at)sinectis(dot)com(dot)ar>
Cc: pgsql-hackers(at)postgresql(dot)org, Laura Celia Rivero <lrivero(at)exa(dot)unicen(dot)edu(dot)ar>, Jorge Doorn <jdoorn(at)exa(dot)unicen(dot)edu(dot)ar>
Subject: Re: Bug in pg_get_ruledef?
Date: 2001-11-26 00:30:59
Message-ID: 6963.1006734659@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Sergio Pili <sergiop(at)sinectis(dot)com(dot)ar> writes:
> pg_get_ruledef cannot read the following rule:

Fix committed --- many thanks for the report!

Attached is the patch against current sources, if you need it.

regards, tom lane

*** src/backend/utils/adt/ruleutils.c.orig Mon Nov 19 14:51:20 2001
--- src/backend/utils/adt/ruleutils.c Sun Nov 25 19:18:32 2001
***************
*** 769,775 ****
--- 769,788 ----
appendStringInfo(buf, " WHERE ");

qual = stringToNode(ev_qual);
+
+ /*
+ * We need to make a context for recognizing any Vars in the qual
+ * (which can only be references to OLD and NEW). Use the rtable
+ * of the first query in the action list for this purpose.
+ */
query = (Query *) lfirst(actions);
+
+ /*
+ * If the action is INSERT...SELECT, OLD/NEW have been pushed
+ * down into the SELECT, and that's what we need to look at.
+ * (Ugly kluge ... try to fix this when we redesign querytrees.)
+ */
+ query = getInsertSelectQuery(query, NULL);

context.buf = buf;
context.namespaces = makeList1(&dpns);

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2001-11-26 00:50:21 Re: Call for objections: deprecate postmaster -o switch?
Previous Message Hiroshi Inoue 2001-11-26 00:25:14 Re: pg_config.h.win32