| maybePruneShuffleJoin(PhysicalHashJoin, CascadesContext) |   | 5% |   | 11% | 9 | 10 | 33 | 36 | 0 | 1 |
| tryPruneGlobalAgg(PhysicalHashAggregate, CascadesContext) |   | 30% |   | 38% | 10 | 14 | 27 | 42 | 0 | 1 |
| replaceDistributeUnderJoinChild(Plan, Plan) |  | 0% |  | 0% | 6 | 6 | 22 | 22 | 1 | 1 |
| findHashDistributeUnderJoinChild(Plan) |  | 0% |  | 0% | 7 | 7 | 9 | 9 | 1 | 1 |
| deriveHashJoinChildAllowShuffleKeyPrune(PhysicalHashJoin, boolean) |   | 36% |   | 25% | 2 | 3 | 3 | 5 | 0 | 1 |
| rebuildDistribute(PhysicalDistribute, DistributionSpecHash, Plan) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| sliceHashSpec(DistributionSpecHash, List) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| lambda$rebuildDistribute$0(DistributionSpecHash, PhysicalDistribute, PhysicalProperties, Plan) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| processRoot(Plan, CascadesContext) |   | 73% |   | 50% | 2 | 3 | 2 | 6 | 0 | 1 |
| statisticsForShuffleKeyPruneBelowDistribute(PhysicalDistribute) |   | 88% |   | 75% | 1 | 3 | 1 | 6 | 0 | 1 |
| asHashJoin(Plan) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| asAgg(Plan) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| ShuffleKeyPruner() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |