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.
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 |