Martijn van Oosterhout <kleptog(at)svana(dot)org> writes:
> Actually, it's two changes:
> - In the btree index code, if SK_ISNULL is set, do the right thing
> - If the query has col IS NULL, expand that to col =3D NULL in the index
> quals
This is a bad idea, because it translates "x IS NULL" into "x = NULL"
which is under no circumstances the same thing. It might coincidentally
fail to malfunction for btree indexes, depending on the specifics of the
"=" operator in use; but that doesn't make it right. (AFAICS, the
proposed patch simply breaks for non-btree indexes.) Also, it cannot
handle IS NOT NULL.
A proper solution requires explicitly representing IS NULL/IS NOT NULL
as distinct kinds of scankey.
regards, tom lane