Thread: Bug in 8.2B1 plpgsql ...

Bug in 8.2B1 plpgsql ...

From
James Robinson
Date:
Seems that plpgsql in 8.2B1 thinks that selects of the form ' ....
and foo not in (select  ... )' should be function calls, not
subselects. These worked fine in 8.1.

Here's a smallish script which reproduces the problem on 8.2RC1 / OSX:

If you comment out the 'and NEW.id not in (select t1_id from
skip_t1_ids) ' clause in the trigger, then the script completes.


social=# \i 8.2.bug.sql
BEGIN
psql:8.2.bug.sql:15: NOTICE:  CREATE TABLE / PRIMARY KEY will create
implicit index "t1_pkey" for table "t1"
CREATE TABLE
CREATE TABLE
CREATE SEQUENCE
CREATE TABLE
CREATE FUNCTION
CREATE TRIGGER
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
psql:8.2.bug.sql:52: ERROR:  cache lookup failed for function 0
CONTEXT:  SQL statement "SELECT   $1  <>  $2  and  $3  not in (select
t1_id from skip_t1_ids)"
PL/pgSQL function "track_t1_changes" line 2 at if
ROLLBACK




----
James Robinson
Socialserve.com


Attachment

Re: Bug in 8.2B1 plpgsql ...

From
Tom Lane
Date:
James Robinson <jlrobins@socialserve.com> writes:
> Seems that plpgsql in 8.2B1 thinks that selects of the form ' ....  
> and foo not in (select  ... )' should be function calls, not  
> subselects. These worked fine in 8.1.

Fixed, thanks.  It's not actually plpgsql's fault ...
        regards, tom lane