public class ExtendedAggregateExtractProjectRule
Rule to extract a Project from a LogicalAggregate,
a LogicalWindowAggregate or a TableAggregate and push it down towards
Note: Most of the logic in this rule is same with AggregateExtractProjectRule. The
difference is this rule has also taken the LogicalWindowAggregate and
TableAggregate into consideration. Furthermore, this rule also creates trivial
Projects unless the input node is already a Project.