Don't believe MinMaxExpr is leakproof without checking. MinMaxExpr invokes the btree comparison function for its input datatype, so it's only leakproof if that function is. Many such functions are indeed leakproof, but others are not, and we should not just assume that they are. Hence, adjust contain_leaked_vars to verify the leakproofness of the referenced function explicitly.
I didn't add a regression test because it would need to depend on some particular comparison function being leaky, and that's a moving target, per discussion. This has been wrong all along, so back-patch to supported branches. Discussion: https://postgr.es/m/[email protected] Branch ------ REL9_4_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/d6b37cdb6ec903545df78994806a8d9526e74fb0 Modified Files -------------- src/backend/optimizer/util/clauses.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-)
