### 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 compared && (((lower && lowerEq == false) || (upper && upperEq == false)) == false);
                    }
                }
            }
            return false;
        }
        private static boolean findConjunctiveComparisonInRange(BinaryComparison main, List<Range> ranges) {
            Object value = main.right().fold();
            
            for (int i = 0; i < ranges.size(); i++) {
                Range other = ranges.get(i);
                if (main.left().semanticEquals(other.value())) {
                    if (main instanceof GreaterThan || main instanceof GreaterThanOrEqual) {
                        if (other.lower().foldable()) {
                            Integer comp = BinaryComparison.compare(value, other.lower().fold());
                            if (comp != null) {
                                
                                boolean lowerEq = comp == 0 && other.includeLower() && main instanceof GreaterThan;
                                
                                boolean lower = comp > 0 || lowerEq;
                                if (lower) {
                                    ranges.set(
                                        i,
                                        new Range(
                                            other.source(),
                                            other.value(),
                                            main.right(),
                                            lowerEq ? false : main instanceof GreaterThanOrEqual,