On Mon, Apr 6, 2015 at 4:22 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Because it's expensive (a syscache lookup per function or operator).
> And that test alone would be insufficient anyway: you'd also have to
> check that there was an appropriate Var in the expression, cf the
> comment for contain_nonstrict_functions.
>
Looks like not only contain_nonstrict_functions() is expensive, but
other contain_xxx family members.
In FuncExpr structure, for example, we already cached values like
retset, resulttype, but why not volatile and isstrict? In this way, we
avoid cache lookup every time. So as OpExpr etc.
Regards,
Qingqing