]> granicus.if.org Git - postgresql/commit
Don't believe MinMaxExpr is leakproof without checking.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 2 Jan 2019 21:33:48 +0000 (16:33 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 2 Jan 2019 21:33:48 +0000 (16:33 -0500)
commitc27c3993ef6dbdff1f196670877a47f374d884ad
tree4eadc52b3a4fb7a391244c80f5b4d527214cb101
parentb66a07430e9d17ad892c5e3241c19b1b33d73e46
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/31042.1546194242@sss.pgh.pa.us
src/backend/optimizer/util/clauses.c