BUG #5032: unexpected syntax error for plpgsql function returns table

From: "Keith Cascio" <keith(at)cs(dot)ucla(dot)edu>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #5032: unexpected syntax error for plpgsql function returns table
Date: 2009-09-03 01:22:35
Message-ID: 200909030122.n831MZi9045894@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 5032
Logged by: Keith Cascio
Email address: keith(at)cs(dot)ucla(dot)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.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Pavel Stehule 2009-09-03 03:27:46 Re: BUG #5032: unexpected syntax error for plpgsql function returns table
Previous Message Robert Haas 2009-09-03 01:21:55 Re: BUG #5028: CASE returns ELSE value always when type is"char"