In some plans, for example those created by odata expand see
TEIID-5680, the resulting query has the form of:
select tbl1-cols from tbl1 left outer join (select cols, aggregates ... from tbl2 group by cols) on (some non-aggregate predicate)
If the aggregates or other intervening constructs are not able to be pushed the result will be a federated join.
In most instances (where the tbl1 columns are sortable) it's possible to change this to:
select tbl1-cols aggregates from tbl1 left outer join tbl1 on (...) group by tbl1-cols, cols
which can allow the pushdown of the join to proceed.