|  | @@ -35,13 +35,14 @@ import org.elasticsearch.xpack.sql.expression.function.scalar.math.Floor;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.function.scalar.string.Ascii;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.function.scalar.string.Repeat;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.BinaryOperator;
 | 
	
		
			
				|  |  | -import org.elasticsearch.xpack.sql.expression.predicate.nulls.IsNull;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.Range;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.conditional.Coalesce;
 | 
	
		
			
				|  |  | +import org.elasticsearch.xpack.sql.expression.predicate.conditional.IFNull;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.logical.And;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.logical.Not;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.logical.Or;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.nulls.IsNotNull;
 | 
	
		
			
				|  |  | +import org.elasticsearch.xpack.sql.expression.predicate.nulls.IsNull;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.operator.arithmetic.Add;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.operator.arithmetic.Div;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.sql.expression.predicate.operator.arithmetic.Mod;
 | 
	
	
		
			
				|  | @@ -448,6 +449,22 @@ public class OptimizerTests extends ESTestCase {
 | 
	
		
			
				|  |  |          assertEquals(Literal.TRUE, e.children().get(0));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    public void testSimplifyIfNullNulls() {
 | 
	
		
			
				|  |  | +        Expression e = new SimplifyCoalesce().rule(new IFNull(EMPTY, Literal.NULL, Literal.NULL));
 | 
	
		
			
				|  |  | +        assertEquals(Coalesce.class, e.getClass());
 | 
	
		
			
				|  |  | +        assertEquals(0, e.children().size());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void testSimplifyIfNullWithNullAndValue() {
 | 
	
		
			
				|  |  | +        Expression e = new SimplifyCoalesce().rule(new IFNull(EMPTY, Literal.NULL, ONE));
 | 
	
		
			
				|  |  | +        assertEquals(1, e.children().size());
 | 
	
		
			
				|  |  | +        assertEquals(ONE, e.children().get(0));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        e = new SimplifyCoalesce().rule(new IFNull(EMPTY, ONE, Literal.NULL));
 | 
	
		
			
				|  |  | +        assertEquals(1, e.children().size());
 | 
	
		
			
				|  |  | +        assertEquals(ONE, e.children().get(0));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      //
 | 
	
		
			
				|  |  |      // Logical simplifications
 | 
	
		
			
				|  |  |      //
 |