newexpr->location = expr->location;
                return (Node *) newexpr;
            }
+       case T_NullIfExpr:
+           {
+               NullIfExpr     *expr;
+               ListCell       *arg;
+               bool            has_nonconst_input = false;
+
+               /* Copy the node and const-simplify its arguments */
+               expr = (NullIfExpr *) ece_generic_processing(node);
+
+               /* If either argument is NULL they can't be equal */
+               foreach(arg, expr->args)
+               {
+                   if (!IsA(lfirst(arg), Const))
+                       has_nonconst_input = true;
+                   else if (((Const *) lfirst(arg))->constisnull)
+                       return (Node *) linitial(expr->args);
+               }
+
+               /*
+                * Need to get OID of underlying function before checking if
+                * the function is OK to evaluate.
+                */
+               set_opfuncid((OpExpr *) expr);
+
+               if (!has_nonconst_input &&
+                   ece_function_is_safe(expr->opfuncid, context))
+                   return ece_evaluate_expr(expr);
+
+               return (Node *) expr;
+           }
        case T_ScalarArrayOpExpr:
            {
                ScalarArrayOpExpr *saop;
 
  4 |   | 2 | -4
 (2 rows)
 
+-- Tests for constant subexpression simplification
+explain (costs off)
+SELECT * FROM CASE_TBL WHERE NULLIF(1, 2) = 2;
+        QUERY PLAN        
+--------------------------
+ Result
+   One-Time Filter: false
+(2 rows)
+
+explain (costs off)
+SELECT * FROM CASE_TBL WHERE NULLIF(1, 1) IS NOT NULL;
+        QUERY PLAN        
+--------------------------
+ Result
+   One-Time Filter: false
+(2 rows)
+
+explain (costs off)
+SELECT * FROM CASE_TBL WHERE NULLIF(1, null) = 2;
+        QUERY PLAN        
+--------------------------
+ Result
+   One-Time Filter: false
+(2 rows)
+
 --
 -- Examples of updates involving tables
 --
 
   FROM CASE_TBL a, CASE2_TBL b
   WHERE COALESCE(f,b.i) = 2;
 
+-- Tests for constant subexpression simplification
+
+explain (costs off)
+SELECT * FROM CASE_TBL WHERE NULLIF(1, 2) = 2;
+
+explain (costs off)
+SELECT * FROM CASE_TBL WHERE NULLIF(1, 1) IS NOT NULL;
+
+explain (costs off)
+SELECT * FROM CASE_TBL WHERE NULLIF(1, null) = 2;
+
 --
 -- Examples of updates involving tables
 --