| getCostBasedJoin(JoinNode, Rule.Context) |  | 0% |  | 0% | 16 | 16 | 23 | 23 | 1 | 1 |
| getSizeBasedJoin(JoinNode, Rule.Context) |  | 0% |  | 0% | 11 | 11 | 16 | 16 | 1 | 1 |
| isBelowMaxBroadcastSize(JoinNode, Rule.Context) |  | 0% |  | 0% | 6 | 6 | 9 | 9 | 1 | 1 |
| addJoinsWithDifferentDistributions(JoinNode, List, Rule.Context) |  | 0% |  | 0% | 5 | 5 | 5 | 5 | 1 | 1 |
| apply(JoinNode, Captures, Rule.Context) |  | 0% |  | 0% | 2 | 2 | 6 | 6 | 1 | 1 |
| getJoinNodeWithCost(Rule.Context, JoinNode) |  | 0% | | n/a | 1 | 1 | 7 | 7 | 1 | 1 |
| getSourceTablesSizeInBytes(PlanNode, Lookup, StatsProvider) |  | 0% |  | 0% | 2 | 2 | 11 | 11 | 1 | 1 |
| getSyntacticOrderJoin(JoinNode, Rule.Context, FeaturesConfig.JoinDistributionType) |  | 0% |  | 0% | 4 | 4 | 7 | 7 | 1 | 1 |
| isLowConfidenceZero(PlanNode, Rule.Context) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| DetermineJoinDistributionType(CostComparator, TaskCountEstimator) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| mustReplicate(JoinNode, Rule.Context) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| lambda$getCostBasedJoin$3(PlanNodeWithCost) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCostBasedJoin$2(PlanNodeWithCost) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isCostBased(Session) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| lambda$static$0(JoinNode) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| getSourceTablesSizeInBytes(PlanNode, Rule.Context) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getSourceTablesSizeInBytes$5(StatsProvider, PlanNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| static {...} |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| mustPartition(JoinNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCostBasedJoin$1(PlanNodeWithCost) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getStatsSource() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCostBasedJoin$4(PlanNodeWithCost) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getPattern() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |