Re: Rules puzzle with "current" keyword.

Поиск
Список
Период
Сортировка
От wieck@debis.com (Jan Wieck)
Тема Re: Rules puzzle with "current" keyword.
Дата
Msg-id m10p7zb-0003kGC@orion.SAPserv.Hamburg.dsh.de
обсуждение исходный текст
Ответ на Rules puzzle with "current" keyword.  (Keith Parks <emkxp01@mtcc.demon.co.uk>)
Ответы Re: Rules puzzle with "current" keyword.  (wieck@debis.com (Jan Wieck))
Список 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?

    Sure  - I'm the one who added OLD to v6.4 and removed CURRENT
    from v6.5.  I think it was announced in the release notes for
    v6.4 that CURRENT will disappear in v6.5.

    Seems  I missed that change myself in the utilities that make
    up pg_views and pg_rules.

    Anyway - OLD is the correct keyword in your case.  I'll  take
    a look at it - thanks.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#======================================== jwieck@debis.com (Jan Wieck) #

В списке pgsql-hackers по дате отправления:

Предыдущее
От: wieck@debis.com (Jan Wieck)
Дата:
Сообщение: Re: [HACKERS] Re: [SQL] Column name's length
Следующее
От: wieck@debis.com (Jan Wieck)
Дата:
Сообщение: Re: Rules puzzle with "current" keyword.