čt 23. 7. 2020 v 0:17 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:
Pavel Stehule <pavel.stehule@gmail.com> writes: > What is interesting - it fails only when the subquery is in CASE condition > expression. If is somewhere else, then it doesn't fail
If eval_const_expressions can simplify the CASE test condition itself to constant-true or constant-false, then it throws away the unreachable result expression(s) without const-simplifying them. So even if there would have been a run-time error there, you don't see it.
Of course the error can only happen because we're trying to generate a custom plan for the expression (with plpgsql variable values inserted as constants not params). That's a bit silly in this example, but it wouldn't happen if there weren't a sub-SELECT in the expression. That forces use of the full planner and plancache machinery.