BUG #5032: unexpected syntax error for plpgsql function returns table - Mailing list pgsql-bugs

From Keith Cascio
Subject BUG #5032: unexpected syntax error for plpgsql function returns table
Date
Msg-id 200909030122.n831MZi9045894@wwwmaster.postgresql.org
Whole thread Raw
Responses Re: BUG #5032: unexpected syntax error for plpgsql function returns table  (Pavel Stehule <pavel.stehule@gmail.com>)
List pgsql-bugs
The following bug has been logged online:

Bug reference:      5032
Logged by:          Keith Cascio
Email address:      keith@cs.ucla.edu
PostgreSQL version: 8.4.0
Operating system:   CentOS 5.3 (Linux)
Description:        unexpected syntax error for plpgsql function returns
table
Details:

Do this:
create function reproduce() returns table(foo integer) language plpgsql as
'begin return query select 1 foo; end;';

Output I got:
ERROR:  syntax error at or near "$1"
LINE 1:  select 1  $1
                   ^
QUERY:   select 1  $1
CONTEXT:  SQL statement in PL/PgSQL function "reproduce" near line 1

Output I expected:
CREATE FUNCTION

The mechanism of this error involves the "foo" return column and the "foo"
alias being identical.  Identifier collision?  If I change one of the "foo"s
to "bar", the definition succeeds.  There are fancier ways to cause similar
unexpected syntax errors, but this is close to a minimal example.

pgsql-bugs by date:

Previous
From: "Mark Douglas"
Date:
Subject: BUG #5031: DATE_TRUNC returns the wrong value when specifying MONTH
Next
From: Pavel Stehule
Date:
Subject: Re: BUG #5032: unexpected syntax error for plpgsql function returns table