Search Postgresql Archives

Re: Reassign value of IN parameter in 9.1.1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 24 November 2011 14:12, Alban Hertroys <haramrae@xxxxxxxxx> wrote:
On 24 November 2011 14:52, Gavin Casey <gpjcasey@xxxxxxxxxxxxxx> 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.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux