| pushAgg(LogicalAggregate, LogicalJoin) |   | 74% |   | 75% | 4 | 11 | 5 | 28 | 0 | 1 |
| eliminatePrimaryOutput(LogicalAggregate, Plan, PushDownAggThroughJoinOnPkFk.PrimaryForeignInfo) |   | 93% |   | 72% | 5 | 12 | 4 | 40 | 0 | 1 |
| constructNewGroupBy(List, Set, Map, Set) |   | 91% |   | 75% | 2 | 5 | 2 | 11 | 0 | 1 |
| constructNewOutput(LogicalAggregate, Set, Map, List) |   | 97% |   | 68% | 5 | 9 | 1 | 16 | 0 | 1 |
| groupByDeterminesForeignKey(Set, Set, DataTrait) |   | 96% |   | 87% | 1 | 5 | 1 | 13 | 0 | 1 |
| tryExtractPrimaryForeign(LogicalJoin) |  | 100% |  | 100% | 0 | 3 | 0 | 7 | 0 | 1 |
| buildRules() |  | 100% | | n/a | 0 | 1 | 0 | 15 | 0 | 1 |
| lambda$buildRules$3(LogicalJoin) |  | 100% |   | 66% | 2 | 4 | 0 | 3 | 0 | 1 |
| lambda$constructNewOutput$6(Map, Expression) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| lambda$buildRules$5(MatchingContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$buildRules$2(MatchingContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$buildRules$0(LogicalJoin) |  | 100% |   | 75% | 1 | 3 | 0 | 2 | 0 | 1 |
| lambda$buildRules$4(LogicalAggregate) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$buildRules$1(LogicalAggregate) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| PushDownAggThroughJoinOnPkFk() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |