Обсуждение: BUG #1533: "*OLD*" relation not recognized in CREATE RULE

Поиск
Список
Период
Сортировка

BUG #1533: "*OLD*" relation not recognized in CREATE RULE

От
"Henk van den Toorn"
Дата:
The following bug has been logged online:

Bug reference:      1533
Logged by:          Henk van den Toorn
Email address:      vdtoorn@hotmail.com
PostgreSQL version: 7.4.3-7
Operating system:   Freebsd 5.3
Description:        "*OLD*" relation not recognized in CREATE RULE
Details:

When creating a rule:

CREATE RULE rulename AS ON UPDATE
table WHERE OLD.index = NEW.index
DO INSTEAD NOTHING;

Postgresql responds with

ERROR: relation "*OLD*" does not exist

All kind of variations on "*OLD*"
like:

old.index; OLD.index; "*OLD*".index

do not work, nor does changing the order of the elements in the WHERE
clause.

Re: BUG #1533: "*OLD*" relation not recognized in CREATE RULE

От
Tom Lane
Дата:
"Henk van den Toorn" <vdtoorn@hotmail.com> writes:
> CREATE RULE rulename AS ON UPDATE
> table WHERE OLD.index = NEW.index
> DO INSTEAD NOTHING;

> Postgresql responds with

> ERROR: relation "*OLD*" does not exist

Hm, works for me:

regression=# create table tab1 (index serial primary key, data text);
NOTICE:  CREATE TABLE will create implicit sequence "tab1_index_seq" for "serial" column "tab1.index"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "tab1_pkey" for table "tab1"
CREATE TABLE
regression=# create rule r as on update to tab1 where old.index = new.index do instead nothing;
CREATE RULE
regression=# select version();
                            version
---------------------------------------------------------------
 PostgreSQL 7.4.7 on hppa-hp-hpux10.20, compiled by GCC 2.95.3
(1 row)

            regards, tom lane