### 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
else if ((other instanceof GreaterThan || other instanceof GreaterThanOrEqual)
                            && (main instanceof LessThan || main instanceof LessThanOrEqual)) {
                                bcs.remove(j);
                                bcs.remove(i);
                                ranges.add(
                                    new Range(
                                        and.source(),
                                        main.left(),
                                        other.right(),
                                        other instanceof GreaterThanOrEqual,
                                        main.right(),
                                        main instanceof LessThanOrEqual,
                                        main.zoneId()
                                    )
                                );
                                changed = true;
                                step = 0;
                                break;
                            }
                    }
                }
            }
            return changed ? Predicates.combineAnd(CollectionUtils.combine(exps, bcs, ranges)) : and;
        }
        
        private static Expression combine(Or or) {
            List<BinaryComparison> bcs = new ArrayList<>();
            List<Range> ranges = new ArrayList<>();
            List<Expression> exps = new ArrayList<>();
            boolean changed = false;