• Tom Lane's avatar
    Teach parser to transform "x IS [NOT] DISTINCT FROM NULL" to a NullTest. · 8d19d0e1
    Tom Lane authored
    Now that we've nailed down the principle that NullTest with !argisrow
    is fully equivalent to SQL's IS [NOT] DISTINCT FROM NULL, let's teach
    the parser about it.  This produces a slightly more compact parse tree
    and is much more amenable to optimization than a DistinctExpr, since
    the planner knows a good deal about NullTest and next to nothing about
    DistinctExpr.
    
    I'm not sure that there are all that many queries in the wild that could
    be improved by this, but at least one source of such cases is the patch
    just made to postgres_fdw to emit IS [NOT] DISTINCT FROM NULL when
    IS [NOT] NULL isn't semantically correct.
    
    No back-patch, since to the extent that this does affect planning results,
    it might be considered undesirable plan destabilization.
    8d19d0e1
parsenodes.h 104 KB