Re: a few small bugs in plpgsql - Mailing list pgsql-hackers

From Tom Lane
Subject Re: a few small bugs in plpgsql
Date
Msg-id 11150.1286505430@sss.pgh.pa.us
Whole thread Raw
In response to a few small bugs in plpgsql  (Pavel Stehule <pavel.stehule@gmail.com>)
Responses Re: a few small bugs in plpgsql
List pgsql-hackers
Pavel Stehule <pavel.stehule@gmail.com> writes:
> a) parser allow a labels on invalid positions with strange runtime bug:

> postgres=# CREATE OR REPLACE FUNCTION foo()
> RETURNS void AS $$
> BEGIN
>   FOR i IN 1..2
>   <<<invalidLabel>>
>   LOOP
>     RAISE NOTICE '%',i;
>   END LOOP;
> END;
> $$ LANGUAGE plpgsql;
> CREATE FUNCTION

> ERROR:  column "invalidlabel" does not exist
> LINE 2:   <<<invalidLabel>>
>              ^
> QUERY:  SELECT 2
>   <<<invalidLabel>>
> CONTEXT:  PL/pgSQL function "foo" line 3 at FOR with integer loop variable

That isn't a bug, because the construct isn't a label, and wouldn't be
even if you'd gotten the number of <'s right ;-).  What you have is an
expression "2 <<< invalidLabel >>", which given the right operator
definitions could be perfectly valid.  plpgsql labels can't appear in
the middle of an SQL expression.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Issues with Quorum Commit
Next
From: Tom Lane
Date:
Subject: Re: GIN vs. Partial Indexes