| computeShuffleJoinOutputProperties(PhysicalHashJoin, DistributionSpecHash, DistributionSpecHash) |   | 58% |   | 61% | 11 | 18 | 8 | 29 | 0 | 1 |
| visitPhysicalPartitionTopN(PhysicalPartitionTopN, PlanContext) |  | 0% |  | 0% | 4 | 4 | 7 | 7 | 1 | 1 |
| visit(Plan, PlanContext) |   | 22% |   | 25% | 2 | 3 | 4 | 6 | 0 | 1 |
| computeShuffleSide(DistributionSpecHash, DistributionSpecHash) |   | 56% |   | 71% | 2 | 5 | 1 | 6 | 0 | 1 |
| visitPhysicalSetOperation(PhysicalSetOperation, PlanContext) |   | 91% |   | 81% | 4 | 12 | 3 | 33 | 0 | 1 |
| visitPhysicalHashAggregate(PhysicalHashAggregate, PlanContext) |   | 65% |   | 50% | 2 | 3 | 1 | 5 | 0 | 1 |
| visitPhysicalHashJoin(PhysicalHashJoin, PlanContext) |   | 90% |   | 73% | 7 | 14 | 1 | 26 | 0 | 1 |
| legacyComputeShuffleJoinOutputProperties(PhysicalHashJoin, DistributionSpecHash, DistributionSpecHash) |   | 78% |   | 85% | 1 | 6 | 1 | 10 | 0 | 1 |
| visitPhysicalDeferMaterializeOlapScan(PhysicalDeferMaterializeOlapScan, PlanContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitPhysicalTVFRelation(PhysicalTVFRelation, PlanContext) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| visitPhysicalDistribute(PhysicalDistribute, PlanContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitPhysicalRepeat(PhysicalRepeat, PlanContext) |   | 98% |   | 75% | 4 | 9 | 1 | 22 | 0 | 1 |
| mockAnotherSideSpecFromConjuncts(PhysicalHashJoin, DistributionSpecHash) |   | 97% |   | 68% | 5 | 9 | 0 | 18 | 0 | 1 |
| visitPhysicalOlapScan(PhysicalOlapScan, PlanContext) |   | 88% |   | 75% | 1 | 3 | 1 | 3 | 0 | 1 |
| visitPhysicalEsScan(PhysicalEsScan, PlanContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitPhysicalFileScan(PhysicalFileScan, PlanContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitPhysicalJdbcScan(PhysicalJdbcScan, PlanContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitPhysicalOdbcScan(PhysicalOdbcScan, PlanContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitPhysicalProject(PhysicalProject, PlanContext) |  | 99% |   | 95% | 1 | 11 | 0 | 29 | 0 | 1 |
| visitAbstractPhysicalSort(AbstractPhysicalSort, PlanContext) |  | 97% |   | 75% | 1 | 3 | 0 | 6 | 0 | 1 |
| visitPhysicalAssertNumRows(PhysicalAssertNumRows, PlanContext) |  | 95% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| visitPhysicalNestedLoopJoin(PhysicalNestedLoopJoin, PlanContext) |  | 95% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| visitPhysicalCTEAnchor(PhysicalCTEAnchor, PlanContext) |  | 93% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| visitPhysicalCTEProducer(PhysicalCTEProducer, PlanContext) |  | 93% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| visitPhysicalFilter(PhysicalFilter, PlanContext) |  | 93% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| visitPhysicalGenerate(PhysicalGenerate, PlanContext) |  | 93% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| visitPhysicalLimit(PhysicalLimit, PlanContext) |  | 93% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| visitPhysicalWindow(PhysicalWindow, PlanContext) |  | 93% |   | 50% | 1 | 2 | 0 | 2 | 0 | 1 |
| isSameHashValue(DataType, DataType) |  | 100% |   | 80% | 2 | 6 | 0 | 4 | 0 | 1 |
| visitPhysicalUnion(PhysicalUnion, PlanContext) |  | 100% |  | 100% | 0 | 2 | 0 | 3 | 0 | 1 |
| getOutputProperties(ConnectContext, GroupExpression) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| ChildOutputPropertyDeriver(List) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| visitPhysicalCTEConsumer(PhysicalCTEConsumer, PlanContext) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$visitPhysicalProject$0(Map.Entry) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| visitPhysicalSink(PhysicalSink, PlanContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| visitPhysicalEmptyRelation(PhysicalEmptyRelation, PlanContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| visitPhysicalOneRowRelation(PhysicalOneRowRelation, PlanContext) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |