Description
Project logical operator generates valid constraints using two opposite operations. It substracts child constraints from all constraints, than union child constraints again. I think it may be not necessary.
Aggregate operator has the same problem with Project.
for example:
in LogicalPlan.getAliasedConstraints(), return:
allConstraints -- child.constraints
in Project.validConstraints():
child.constraints.union(getAliasedConstraints(projectList))