Re: [BUGS] documentation bug - behave of NEW a OLD in plpgsql's triggers - Mailing list pgsql-docs

From Pavel Stehule
Subject Re: [BUGS] documentation bug - behave of NEW a OLD in plpgsql's triggers
Date
Msg-id CAFj8pRCfe6doaipkG7h_Pvr5vR0+4qArwxda7ZQTKruG5s0DfQ@mail.gmail.com
Whole thread Raw
In response to Re: [BUGS] documentation bug - behave of NEW a OLD in plpgsql's triggers  (Josh Kupershmidt <schmiddy@gmail.com>)
Responses Re: [BUGS] documentation bug - behave of NEW a OLD in plpgsql's triggers
List pgsql-docs
2011/9/7 Josh Kupershmidt <schmiddy@gmail.com>:
> On Tue, Sep 6, 2011 at 10:54 PM, Bruce Momjian <bruce@momjian.us> wrote:
>> Josh Kupershmidt wrote:
>>> How about a doc tweak like the attached?
>>
>> Perfect.  Applied to 9.0, 9.1, and head.  Thanks.  Sorry for the delay.
>
> Err, as Tom's first comment in this thread explains, Pavel and I were
> both wrong: the variables in question are indeed NULL, not undefined.
> I think the docs were fine the way they were.

There is maybe bug - these variables are defined, but they has not
assigned tupledesc, so there is not possible do any test

postgres=# create table omega (a int, b int);
CREATE TABLE
postgres=# create or replace function foo_trig()
postgres-# returns trigger as $$
postgres$# begin
postgres$#   raise notice '%', new;
postgres$#   return null;
postgres$# end;
postgres$# $$ language plpgsql;
CREATE FUNCTION
postgres=# create trigger xxx after delete on omega for each row
execute procedure foo_trig();
CREATE TRIGGER
postgres=# insert into omega values(20);
INSERT 0 1
postgres=# delete from omega;
ERROR:  record "new" is not assigned yet
DETAIL:  The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT:  PL/pgSQL function "foo_trig" line 3 at RAISE

so current text in documentation is not correct too.

Regards

Pavel Stehule

>
> Josh
>

pgsql-docs by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [BUGS] documentation bug - behave of NEW a OLD in plpgsql's triggers
Next
From: Bruce Momjian
Date:
Subject: Re: createuser/dropuser username