Thread: pgsql-server/src backend/rewrite/rewriteHandle ...

pgsql-server/src backend/rewrite/rewriteHandle ...

From
tgl@postgresql.org (Tom Lane)
Date:
CVSROOT:    /cvsroot
Module name:    pgsql-server
Changes by:    tgl@postgresql.org    02/10/19 20:58:55

Modified files:
    src/backend/rewrite: rewriteHandler.c rewriteManip.c
    src/include/rewrite: rewriteManip.h

Log message:
    Rule rewriter was doing the wrong thing with conditional INSTEAD rules
    whose conditions might yield NULL.  The negated qual to attach to the
    original query is properly 'x IS NOT TRUE', not 'NOT x'.  This fix
    produces correct behavior, but we may be taking a performance hit because
    the planner is much stupider about IS NOT TRUE than it is about NOT
    clauses.  Future TODO: teach prepqual, other parts of planner how to
    cope with BooleanTest clauses more effectively.