On Wednesday, April 15, 2020 5:14:05 P.M. PDT Tom Lane wrote:
> In point of fact, there are many ways in which CASE and related
> constructs fail to guarantee evaluation order, as noted in
> https://www.postgresql.org/docs/current/sql-expressions.html#SYNTAX-EX
> PRESS-EVAL
>
> The particular case mentioned there seems to be about the same as
> here: constant-folding happens even in CASE arms that will never be
> reached at runtime.
Yes, but function arguments aren't constants are they? At least the
documentation makes no effort to mention that.
> would be quite unhappy with the performance impact of de-optimizing
> CASE that way.
I'm not arguing for the general de-optimization for CASE, just for not
treating arguments of inlined functions as constants in the CASE
statement. For arguments of a prepared statement this optimization
makes even less sense.
Elvis