From: | Keith Parks <emkxp01(at)mtcc(dot)demon(dot)co(dot)uk> |
---|---|
To: | hackers(at)postgresql(dot)org |
Cc: | jwieck(at)debis(dot)com, lockhart(at)alumni(dot)caltech(dot)edu |
Subject: | Rules puzzle with "current" keyword. |
Date: | 1999-06-02 09:33:00 |
Message-ID: | 199906020933.KAA27740@mtcc.demon.co.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
Looking at a previous bug report I noticed a strange behaviour
in rule creation and display.
postgres=> CREATE RULE rule1 AS ON UPDATE TO test1 DO INSERT INTO test2 SELECT * FROM
postgres-> test1 WHERE oid=current.oid;
ERROR: current: Table does not exist.
Above we do not recognise "current" as a special case.
If I substitute "old" for "current" the definition is accepted.
postgres=> CREATE RULE rule1 AS ON UPDATE TO test1 DO INSERT INTO test2 SELECT * FROM
postgres-> test1 WHERE oid=old.oid;
CREATE
Things get spooky when pg_rules shows the keyword "current" where I said "old".
postgres=> select * from pg_rules where rulename like '%rule1%';
tablename|rulename|definition
---------+--------+------------------------------------------------------------------------------------------------------------------
-----------------------------------------
test1 |rule1 |CREATE RULE "rule1" AS ON UPDATE TO "test1" DO INSERT INTO "test2" ("field1", "field2") SELECT "field1", "field2"
FROM "test1" WHERE "oid" = current."oid";
(1 row)
It could be that just the parser and rule decoder are out of step?
I'm not sure which is correct now "old" or "current", anyone care to comment?
Keith.
From | Date | Subject | |
---|---|---|---|
Next Message | Thierry Holtzer | 1999-06-02 09:49:58 | 6.4.2/AIX: syslog support seems alright ? |
Previous Message | Vadim Mikheev | 1999-06-02 09:24:07 | Re: [HACKERS] Re: [SQL] Column name's length |