| getCostBasedDistributionType(SemiJoinNode, Rule.Context) |  | 0% |  | 0% | 7 | 7 | 15 | 15 | 1 | 1 |
| apply(SemiJoinNode, Captures, Rule.Context) |  | 0% |  | 0% | 4 | 4 | 8 | 8 | 1 | 1 |
| canReplicate(SemiJoinNode, Rule.Context) |  | 0% |  | 0% | 4 | 4 | 7 | 7 | 1 | 1 |
| getSemiJoinNodeWithCost(SemiJoinNode, Rule.Context) |  | 0% | | n/a | 1 | 1 | 7 | 7 | 1 | 1 |
| getSizeBaseDistributionType(SemiJoinNode, Rule.Context) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| DetermineSemiJoinDistributionType(CostComparator, TaskCountEstimator) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| lambda$getCostBasedDistributionType$3(PlanNodeWithCost) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCostBasedDistributionType$2(PlanNodeWithCost) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isCostBased(Session) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| lambda$static$0(SemiJoinNode) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| static {...} |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCostBasedDistributionType$1(PlanNodeWithCost) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getStatsSource() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCostBasedDistributionType$4(PlanNodeWithCost) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getPattern() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |