Andres Freund <andres@anarazel.de> writes:
> Wouldn't the rule that I proposed earlier, namely that sub-expressions
> that involve only "proper" constants continue to get evaluated even
> within CASE, largely address that?
The more I think about that the less I like it. It'd make the behavior
even harder to reason about than it is now, and it doesn't fix the issue
for subquery pullup cases.
Basically this seems like a whole lot of thrashing to try to preserve
all the details of a behavior that is kind of accidental to begin with.
The argument that it's a performance issue seems hypothetical too,
rather than founded on any observed results.
BTW, to the extent that there is a performance issue, we could perhaps
fix it if we resurrected the "cache stable subexpressions" patch that
was kicking around a year or two ago. That'd give us both
at-most-one-evaluation and no-evaluation-until-necessary behaviors,
if we made sure to apply it to stable CASE arms.
regards, tom lane