pá 24. 7. 2020 v 19:46 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:
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.