| getNodeExplainString(String, TExplainLevel) |    | 64% |    | 56% | 13 | 17 | 15 | 48 | 0 | 1 | 
| HashJoinNode(PlanNodeId, PlanNode, PlanNode, TableRefInfo, List, List) |    | 72% |    | 42% | 12 | 14 | 5 | 27 | 0 | 1 | 
| eqJoinConjunctsDebugString() |   | 0% |   | 0% | 2 | 2 | 5 | 5 | 1 | 1 | 
| HashJoinNode(PlanNodeId, PlanNode, PlanNode, JoinOperator, List, List, List, List, TupleDescriptor, TupleDescriptor, boolean) |    | 86% |    | 67% | 9 | 15 | 4 | 41 | 0 | 1 | 
| toThrift(TPlanNode) |    | 87% |    | 67% | 8 | 15 | 4 | 37 | 0 | 1 | 
| debugString() |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| setColocate(boolean, String) |   | 0% |  | n/a | 1 | 1 | 3 | 3 | 1 | 1 | 
| setMarkJoinConjuncts(List) |   | 0% |  | n/a | 1 | 1 | 2 | 2 | 1 | 1 | 
| addSlotIdToHashOutputSlotIds(SlotId) |   | 100% |  | n/a | 0 | 1 | 0 | 2 | 0 | 1 | 
| isBucketShuffle() |   | 100% |  | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 
| setDistributionMode(HashJoinNode.DistributionMode) |   | 100% |  | n/a | 0 | 1 | 0 | 2 | 0 | 1 | 
| setOtherJoinConjuncts(List) |   | 100% |  | n/a | 0 | 1 | 0 | 2 | 0 | 1 | 
| getEqJoinConjuncts() |   | 100% |  | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 
| getDistributionMode() |   | 100% |  | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 
| getHashOutputExprSlotIdMap() |   | 100% |  | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 
| getHashOutputSlotIds() |   | 100% |  | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 
| getOtherJoinConjuncts() |   | 100% |  | n/a | 0 | 1 | 0 | 1 | 0 | 1 | 
| getMarkJoinConjuncts() |   | 100% |  | n/a | 0 | 1 | 0 | 1 | 0 | 1 |