"Pavel Stehule" <pavel.stehule@gmail.com> writes:
> I am sending little bit smarter version - without redundant parsing.
Applied with corrections --- you had some memory management problems
in particular.
One thing that I think might annoy people is that you've handled
CASE x
WHEN a, b, c THEN ...
by producing the equivalent of "IF x IN (a, b, c)". This means that
all three of the a, b, c expressions will be evaluated even if "a"
matches. The SQL spec doesn't appear to promise short-circuit
evaluation in such a case, but I suspect somebody out there might
have a problem someday. It didn't seem tremendously easy to fix though.
I suppose anyone who does have a problem can rewrite as
CASE x
WHEN a THEN ...
WHEN b THEN ...
WHEN c THEN ...
at the cost of duplicating their THEN code.
regards, tom lane