Description
We should have a new optimization rule that replaces Literal(null, _) with FalseLiteral in conditions in Join and Filter, predicates in If, conditions in CaseWhen.
The underlying idea is that those expressions evaluate to false if the underlying expression is null (as an example see GeneratePredicate$create or doGenCode and eval methods in If and CaseWhen). Therefore, we can replace Literal(null, _) with FalseLiteral, which can lead to more optimizations later on.