Re: plpgsql CASE statement - last version - Mailing list pgsql-patches

From Tom Lane
Subject Re: plpgsql CASE statement - last version
Date
Msg-id 18316.1210891594@sss.pgh.pa.us
Whole thread Raw
In response to Re: plpgsql CASE statement - last version  ("Pavel Stehule" <pavel.stehule@gmail.com>)
List pgsql-patches
"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

pgsql-patches by date:

Previous
From: Gregory Stark
Date:
Subject: Re: Patch to change psql default banner v6
Next
From: Jan Urbański
Date:
Subject: Re: extend VacAttrStats to allow stavalues of different types