| visitExchange(ExchangeNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 7 | 7 | 56 | 56 | 1 | 1 |
| visitJoin(JoinNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 14 | 14 | 24 | 24 | 1 | 1 |
| visitProject(ProjectNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 5 | 5 | 25 | 25 | 1 | 1 |
| visitUnion(UnionNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 5 | 5 | 28 | 28 | 1 | 1 |
| enforce(HashGenerationOptimizer.PlanWithProperties, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 7 | 7 | 19 | 19 | 1 | 1 |
| visitIndexJoin(IndexJoinNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 2 | 2 | 24 | 24 | 1 | 1 |
| visitSemiJoin(SemiJoinNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 21 | 21 | 1 | 1 |
| visitAggregation(AggregationNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 5 | 5 | 18 | 18 | 1 | 1 |
| visitDistinctLimit(DistinctLimitNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 2 | 2 | 10 | 10 | 1 | 1 |
| visitWindow(WindowNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 2 | 2 | 17 | 17 | 1 | 1 |
| visitRowNumber(RowNumberNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 2 | 2 | 17 | 17 | 1 | 1 |
| visitTopNRowNumber(TopNRowNumberNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 2 | 2 | 17 | 17 | 1 | 1 |
| buildJoinNodeWithPreferredHashes(JoinNode, HashGenerationOptimizer.PlanWithProperties, HashGenerationOptimizer.PlanWithProperties, Map, HashGenerationOptimizer.HashComputationSet, Optional, Optional) |  | 0% | | n/a | 1 | 1 | 18 | 18 | 1 | 1 |
| visitMarkDistinct(MarkDistinctNode, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 2 | 2 | 10 | 10 | 1 | 1 |
| visitSpatialJoin(SpatialJoinNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 7 | 7 | 1 | 1 |
| visitMergeJoin(MergeJoinNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 7 | 7 | 1 | 1 |
| planAndEnforce(PlanNode, HashGenerationOptimizer.HashComputationSet, boolean, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 5 | 5 | 14 | 14 | 1 | 1 |
| visitUnnest(UnnestNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 13 | 13 | 1 | 1 |
| planSimpleNodeWithProperties(PlanNode, HashGenerationOptimizer.HashComputationSet, boolean) |  | 0% |  | 0% | 2 | 2 | 7 | 7 | 1 | 1 |
| visitSequence(SequenceNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 10 | 10 | 1 | 1 |
| plan(PlanNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 5 | 5 | 1 | 1 |
| HashGenerationOptimizer.Rewriter(PlanNodeIdAllocator, VariableAllocator, FunctionAndTypeManager, Session) |  | 0% | | n/a | 1 | 1 | 6 | 6 | 1 | 1 |
| skipHashComputeForJoinInput(PlanNode, Optional, HashGenerationOptimizer.HashComputationSet) |  | 0% |  | 0% | 5 | 5 | 1 | 1 | 1 | 1 |
| canSkipHashGeneration(List) |  | 0% |  | 0% | 4 | 4 | 1 | 1 | 1 | 1 |
| accept(PlanNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| lambda$buildJoinNodeWithPreferredHashes$2(JoinNode, Map, VariableReferenceExpression) |  | 0% |  | 0% | 3 | 3 | 2 | 2 | 1 | 1 |
| lambda$visitSequence$0(PlanNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitGroupId(GroupIdNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitEnforceSingleRow(EnforceSingleRowNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitApply(ApplyNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitLateralJoin(LateralJoinNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| planSimpleNodeWithProperties(PlanNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitProject$7(Assignments.Builder, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitProject$6(Assignments.Builder, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$buildJoinNodeWithPreferredHashes$1(HashGenerationOptimizer.HashComputationSet, Map.Entry) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitPlan(PlanNode, HashGenerationOptimizer.HashComputationSet) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitProject$5(Map, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitUnion$4(Map, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitExchange$3(Map, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |