Search Postgresql Archives

Re: plpgsql and logical expression evaluation

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

 



On 23 Kwi, 16:32, t...@xxxxxxxxxxxxx (Tom Lane) wrote:
> Alvaro Herrera <alvhe...@xxxxxxxxxxxxxxxxx> writes:
> > I think this business of non-shortcircuiting boolean operators is just
> > an artifact of the fact that PL/pgSQL hands off expression to the SQL
> > engine for evaluation.
>
> The complainant is not actually complaining about non-shortcircuiting
> boolean operators --- he thinks he is, but he's 100% mistaken.  The
> reason he's got a problem in the given example is that plpgsql has to
> provide parameter values for every parameter in the whole expression
> before it ships it off to the main engine.  ExecEvalAnd actually *does*
> know about short-circuiting, but it doesn't help because control never
> gets that far.
>
> Even if we rejiggered things so that supplying parameter values could be
> done lazily, there's the little problem that we can't even parse the
> expression without knowing the types of the parameters.  The correct
> analogy for what the OP tried to do is writing in C
>
>         if (x == 0 || no_such_var == 0)
>
> and expecting the "undefined variable no_such_var" failure not to be
> reported if x is zero.  Since it's happening at compile time, that's
> not going to happen.
>
>                         regards, tom lane
>
> --
> Sent via pgsql-general mailing list (pgsql-gene...@xxxxxxxxxxxxxx)
> To make changes to your subscription:http://www.postgresql.org/mailpref/pgsql-general

Yes. You are right. I didn't realized what my complain was about.
But the 'no_such_var' example is great and explains what I was trying
to do, and why it doesn't work.

So - does it mean that the whole IF-ELSE-ENDIF is not parsed at once -
but lazy-parsed when the control reaches it, while the IF condition is
parsed as a single expression and therefore I get error in this case?



Thanks a lot.

                         regards
                                 wojtek


[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