Teach predtest.c that "foo" implies "foo IS NOT NULL".

Tom Lane <tgl@sss.pgh.pa.us>

Commit: dea1491ffb448d20764a5f2cec8ae33b64dd39f8
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2015-08-01T18:31:46Z
Releases: 9.6.0
Teach predtest.c that "foo" implies "foo IS NOT NULL".

Per complaint from Peter Holzer.  It's useful to cover this special case,
since for a boolean variable "foo", earlier parts of the planner will have
reduced variants like "foo = true" to just "foo", and thus we may fail
to recognize the applicability of a partial index with predicate
"foo IS NOT NULL".

Back-patch to 9.5, but not further; given the lack of previous complaints
this doesn't seem like behavior to change in stable branches.

Files

PathChange+/−
src/backend/optimizer/util/predtest.c modified +4 −0