### 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
@Override
        protected LogicalPlan rule(Filter filter) {
            LogicalPlan plan = filter;
            LogicalPlan child = filter.child();
            Expression condition = filter.condition();
            if (child instanceof Filter f) {
                plan = f.with(new And(f.source(), f.condition(), condition));
            }
            
            else if (child instanceof UnaryPlan unary) {
                
                if (unary instanceof Aggregate && condition.anyMatch(Functions::isAggregate)) {
                    List<Expression> conjunctions = new ArrayList<>(splitAnd(condition));
                    List<Expression> inPlace = new ArrayList<>();
                    
                    for (Iterator<Expression> iterator = conjunctions.iterator(); iterator.hasNext();) {
                        Expression conjunction = iterator.next();
                        if (conjunction.anyMatch(Functions::isAggregate)) {
                            inPlace.add(conjunction);