### Description

The IS NULL/IS NOT NULL only care about the nullability not the value of an expression.
Given the expression x + 1 / 2, the actual result does not matter only if it's null or not - that is, it only matters if x is null or not.
So x + 1 / 2 IS NULL becomes x IS NULL - which can be opportunistically pushed down or evaluated.
x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/optimizer/OptimizerRules.java
return bcRightExpression != null
                    ? postProcess((BinaryComparison) comparison.replaceChildren(List.of(opLeft, bcRightExpression)))
                    : comparison;
            }
            
            
            abstract boolean isOpUnsafe();
            
            Expression postProcess(BinaryComparison binaryComparison) {
                return binaryComparison;
            }
        }
        private static class AddSubSimplifier extends OperationSimplifier {
            AddSubSimplifier(BinaryComparison comparison) {
                super(comparison);
            }
            @Override
            boolean isOpUnsafe() {
                
                if (operation.dataType().isRational()) {
                    return true;
                }
                if (operation.symbol().equals(SUB.symbol()) && opRight instanceof Literal == false) { 
                    
                    return tryFolding(new Sub(EMPTY, opLeft, bcLiteral)) == null;
                }
                return false;
            }
        }
        private static class MulDivSimplifier extends OperationSimplifier {