Re: Reassign value of IN parameter in 9.1.1

From: Gavin Casey <gpjcasey(at)googlemail(dot)com>
To: Alban Hertroys <haramrae(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Reassign value of IN parameter in 9.1.1
Date: 2011-11-24 14:19:34
Message-ID: CAMwtF+pKsLmBNU=BAF5DgY6YvhPE0db=5WrstA1tmszzvO5MHw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 24 November 2011 14:12, Alban Hertroys <haramrae(at)gmail(dot)com> wrote:

> On 24 November 2011 14:52, Gavin Casey <gpjcasey(at)googlemail(dot)com> wrote:
> > This works in 9.1.1 but seems like a bug to me:
> >
> > create function xout(_x INTEGER)
> > returns integer
> > as $$
> > begin
> > _x = _x * 2;
>
> I would expect an error here, as having an expression without a
> context (an if-statement, for example) should be illegal.
>
> An assignment should be fine though:
> _x := _x * 2;
>
> I'm guessing people make errors like this frequently enough that the
> parser was relaxed to accept this expression as an assignment, even
> though the syntax for those is slightly different. There is no other
> possible explanation for such a line, after all, the author of this
> code clearly meant to put an assignment there.
>
> > return _x;
> > end;
> > $$ LANGUAGE plpgsql;
> >
> > select xout(4);
>
> What is the output? I'm guessing it's 8, since there was no syntax
> error. That would be the right answer too, in that case.
> Function-local variables don't matter outside the function, after all.
> --
> If you can't see the forest for the trees,
> Cut the trees and you'll see there is no forest.
>

It was actually the reassignment of an IN parameter that I was questioning,
the '=' sign on it's own was my typo, apologies for confusion.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Gaëtan Allart 2011-11-24 14:27:48 Re: General performance/load issue
Previous Message Alban Hertroys 2011-11-24 14:12:13 Re: Reassign value of IN parameter in 9.1.1