Rules puzzle with "current" keyword.

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.

Responses

Browse pgsql-hackers by date

  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