Re: pl/pgsql breakage in 8.1b4?

From: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
To: Philip Yarra <philip(at)utiba(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: pl/pgsql breakage in 8.1b4?
Date: 2005-10-28 03:37:49
Message-ID: 20051027203237.N31249@megazone.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, 28 Oct 2005, Philip Yarra wrote:

> Just testing pl/pgsql functions in 8.1beta4, I see failures for syntax that
> works in 8.0.3. The simplest test case for this is:

The function below fails for me similarly in 8.0.3 on execution. 8.1
merely tells you at creation time.

Using bar and foo as both parameter names and the field names doesn't
really work.

> create table ptest(foo int, bar varchar(10));
> create or replace function modify_ptest(
> foo int,
> bar varchar)
> returns numeric as $$
> declare
> res numeric;
> begin
> update ptest
> set bar = modify_ptest.bar
> where foo = modify_ptest.foo;
> res := 0;
> return res;
> end;
> $$ LANGUAGE plpgsql;
>
> The error message from psql is:
>
> ERROR: syntax error at or near "$1" at character 19
> QUERY: update ptest set $1 = modify_ptest.bar where $2 = modify_ptest.foo
> CONTEXT: SQL statement in PL/PgSQL function "modify_ptest" near line 7
> LINE 1: update ptest set $1 = modify_ptest.bar where $2 = modify...
> ^
>
> I assume what I'm trying should still work, though I couldn't find comparable
> examples in the doco. Looks to me like a problem with parameter aliasing.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2005-10-28 03:53:01 Re: TRAP: FailedAssertion("!((itemid)->lp_flags & 0x01)", File: "nbtsearch.c", Line: 89)
Previous Message Rod Taylor 2005-10-28 03:07:19 Re: enums