|  | @@ -29,7 +29,7 @@ public final class PruneFilters extends OptimizerRules.OptimizerRule<Filter> {
 | 
	
		
			
				|  |  |              if (TRUE.equals(condition)) {
 | 
	
		
			
				|  |  |                  return filter.child();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if (FALSE.equals(condition) || Expressions.isNull(condition)) {
 | 
	
		
			
				|  |  | +            if (FALSE.equals(condition) || Expressions.isGuaranteedNull(condition)) {
 | 
	
		
			
				|  |  |                  return PruneEmptyPlans.skipPlan(filter);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -42,8 +42,8 @@ public final class PruneFilters extends OptimizerRules.OptimizerRule<Filter> {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private static Expression foldBinaryLogic(BinaryLogic binaryLogic) {
 | 
	
		
			
				|  |  |          if (binaryLogic instanceof Or or) {
 | 
	
		
			
				|  |  | -            boolean nullLeft = Expressions.isNull(or.left());
 | 
	
		
			
				|  |  | -            boolean nullRight = Expressions.isNull(or.right());
 | 
	
		
			
				|  |  | +            boolean nullLeft = Expressions.isGuaranteedNull(or.left());
 | 
	
		
			
				|  |  | +            boolean nullRight = Expressions.isGuaranteedNull(or.right());
 | 
	
		
			
				|  |  |              if (nullLeft && nullRight) {
 | 
	
		
			
				|  |  |                  return new Literal(binaryLogic.source(), null, DataType.NULL);
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -55,7 +55,7 @@ public final class PruneFilters extends OptimizerRules.OptimizerRule<Filter> {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (binaryLogic instanceof And and) {
 | 
	
		
			
				|  |  | -            if (Expressions.isNull(and.left()) || Expressions.isNull(and.right())) {
 | 
	
		
			
				|  |  | +            if (Expressions.isGuaranteedNull(and.left()) || Expressions.isGuaranteedNull(and.right())) {
 | 
	
		
			
				|  |  |                  return new Literal(binaryLogic.source(), null, DataType.NULL);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 |