Check whether the `op` condition is null rejected, if yes, derive
`col is not null` for both sides of inner join, and for inner side
of outer join.
Also, remove duplicate conditions before pushing them down. Check
if the condition is mutable before removing duplicates.
For AntiSemiJoin, AntiLeftOuterSemiJoin and LeftOuterSemiJoin, do
not generate new `is not null` conditions.
Before this commit. Union use the schema of its `Children[0]`.
The `Columns` information is correct.
But the `unique key information` is not, obviously.