I wrote:
> Andres Freund <andres@anarazel.de> writes:
>> I don't think there's a danger similar to f0c7b789a here, because the
>> "caller" (i.e. the node that needs the expression's result) expects
>> resvalue/null to be overwritten.
> Yeah, that's what I thought when I wrote the broken code in ExecEvalCase,
> too. It was wrong.
Along the same line, I notice that you've got some expr step types
overwriting their own input, the various flavors of EEOP_BOOLTEST for
example. Maybe that's all right but it doesn't really give me a warm
feeling, especially when other single-argument operations like
EEOP_BOOL_NOT_STEP are done differently. Again, I think a clear
explanation of the design is essential to allow people to reason about
whether this sort of trickery is safe.
regards, tom lane