| computeOutputTuple(Analyzer) |   | 66% |   | 56% | 25 | 38 | 37 | 104 | 0 | 1 |
| setOutputSmap(ExprSubstitutionMap, Analyzer) |  | 0% |  | 0% | 5 | 5 | 23 | 23 | 1 | 1 |
| isMaterializedByChild(SlotDescriptor, ExprSubstitutionMap) |   | 11% |   | 10% | 5 | 6 | 10 | 12 | 0 | 1 |
| getOutputTblRefIds() |  | 0% |  | 0% | 4 | 4 | 6 | 6 | 1 | 1 |
| computeIntermediateTuple(Analyzer) |   | 89% |   | 60% | 11 | 17 | 12 | 63 | 0 | 1 |
| initOutputSlotIds(Set, Analyzer) |   | 72% |   | 60% | 6 | 11 | 4 | 20 | 0 | 1 |
| JoinNodeBase(PlanNodeId, String, StatisticalType, PlanNode, PlanNode, TableRef) |   | 85% |   | 70% | 3 | 6 | 2 | 19 | 0 | 1 |
| getOutputTupleIds() |   | 64% |   | 60% | 2 | 4 | 2 | 6 | 0 | 1 |
| computeStats(Analyzer) |   | 41% |   | 50% | 1 | 2 | 3 | 6 | 0 | 1 |
| init(Analyzer) |   | 60% |   | 25% | 2 | 3 | 1 | 6 | 0 | 1 |
| computeInputSlotIds(Analyzer) |   | 92% |   | 62% | 3 | 5 | 1 | 17 | 0 | 1 |
| getTupleIds() |  | 82% |   | 50% | 2 | 3 | 1 | 4 | 0 | 1 |
| projectOutputTuple() |  | 96% |   | 83% | 2 | 7 | 2 | 20 | 0 | 1 |
| JoinNodeBase(PlanNodeId, String, StatisticalType, JoinOperator, boolean) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| getNumInstances() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| finalize(Analyzer) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| setvIntermediateTupleDescList(List) | | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| setUseSpecificProjections(boolean) | | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| static {...} | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| isMarkJoin() | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getJoinOp() | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getInnerRef() | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| isUseSpecificProjections() | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$computeInputSlotIds$0(SlotRef) | | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |