| visitJoin(JoinNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 15 | 15 | 53 | 53 | 1 | 1 |
| visitGroupId(GroupIdNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 4 | 4 | 29 | 29 | 1 | 1 |
| visitUnnest(UnnestNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 4 | 4 | 26 | 26 | 1 | 1 |
| visitAggregation(AggregationNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 28 | 28 | 1 | 1 |
| visitWindow(WindowNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 29 | 29 | 1 | 1 |
| visitUnion(UnionNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 5 | 5 | 23 | 23 | 1 | 1 |
| visitOutput(OutputNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 4 | 4 | 22 | 22 | 1 | 1 |
| lambda$visitWindow$21(CanonicalPlanGenerator.Context, Map.Entry) |  | 0% | | n/a | 1 | 1 | 26 | 26 | 1 | 1 |
| visitProject(ProjectNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 21 | 21 | 1 | 1 |
| visitSemiJoin(SemiJoinNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 4 | 4 | 22 | 22 | 1 | 1 |
| visitTableScan(TableScanNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 2 | 2 | 20 | 20 | 1 | 1 |
| visitTableWriter(TableWriterNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 25 | 25 | 1 | 1 |
| visitTopNRowNumber(TopNRowNumberNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 20 | 20 | 1 | 1 |
| visitRowNumber(RowNumberNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 19 | 19 | 1 | 1 |
| orderSourcesByTables(List) |  | 0% |  | 0% | 4 | 4 | 16 | 16 | 1 | 1 |
| orderSources(List) |  | 0% |  | 0% | 5 | 5 | 12 | 12 | 1 | 1 |
| visitMarkDistinct(MarkDistinctNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 17 | 17 | 1 | 1 |
| visitDistinctLimit(DistinctLimitNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 18 | 18 | 1 | 1 |
| visitStatsEquivalentPlanNodeWithLimit(StatsEquivalentPlanNodeWithLimit, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 4 | 4 | 11 | 11 | 1 | 1 |
| toEquiJoinClause(RowExpression) |  | 0% |  | 0% | 7 | 7 | 12 | 12 | 1 | 1 |
| visitTableFinish(TableFinishNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 16 | 16 | 1 | 1 |
| visitTopN(TopNNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 14 | 14 | 1 | 1 |
| visitValues(ValuesNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 2 | 2 | 14 | 14 | 1 | 1 |
| visitSort(SortNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 14 | 14 | 1 | 1 |
| visitAssignUniqueId(AssignUniqueId, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 12 | 12 | 1 | 1 |
| visitLimit(LimitNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 8 | 8 | 1 | 1 |
| visitEnforceSingleRow(EnforceSingleRowNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 3 | 3 | 11 | 11 | 1 | 1 |
| visitFilter(FilterNode, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 2 | 2 | 10 | 10 | 1 | 1 |
| lambda$visitUnion$10(Optional, CanonicalPlanGenerator.Context, ImmutableList.Builder, ImmutableMap.Builder, VariableReferenceExpression, List) |  | 0% | | n/a | 1 | 1 | 8 | 8 | 1 | 1 |
| CanonicalPlanGenerator(PlanCanonicalizationStrategy, ObjectMapper, Session) |  | 0% | | n/a | 1 | 1 | 7 | 7 | 1 | 1 |
| generateCanonicalPlanFragment(PlanNode, PartitioningScheme, ObjectMapper, Session) |  | 0% |  | 0% | 2 | 2 | 5 | 5 | 1 | 1 |
| canonicalize(EquiJoinClause, CanonicalPlanGenerator.Context) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| getCanonicalAggregation(AggregationNode.Aggregation, Map) |  | 0% | | n/a | 1 | 1 | 6 | 6 | 1 | 1 |
| lambda$visitProject$49(CanonicalPlanGenerator.Context, Map.Entry) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| generateCanonicalPlan(PlanNode, PlanCanonicalizationStrategy, ObjectMapper, Session) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getCanonicalGroupingSetDescriptor(AggregationNode.GroupingSetDescriptor, Map) |  | 0% | | n/a | 1 | 1 | 6 | 6 | 1 | 1 |
| lambda$visitWindow$23(CanonicalPlanGenerator.Context, Map.Entry) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| lambda$visitOutput$32(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| lambda$visitJoin$5(ImmutableList.Builder, ImmutableList.Builder, RowExpression) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| rename(VariableReferenceExpression, String, CanonicalPlanGenerator.Context) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| lambda$visitUnnest$47(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| lambda$visitAggregation$34(CanonicalPlanGenerator.Context, Map.Entry) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| createPlanNodeIdAllocator(PlanCanonicalizationStrategy) |  | 0% |  | 0% | 2 | 2 | 3 | 3 | 1 | 1 |
| visitSequence(SequenceNode, CanonicalPlanGenerator.Context) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getCanonicalOrderingScheme(OrderingScheme, Map) |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| writeValueAsString(Object) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| lambda$generateCanonicalPlanFragment$0(PartitioningScheme, CanonicalPlanGenerator.Context, PlanNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$null$9(ImmutableList.Builder, CanonicalPlanGenerator.Context, List, Integer) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| lambda$getCanonicalOrderingScheme$43(Map, Ordering) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitTableScan$53(Map.Entry) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$orderSourcesByTables$52(List, PlanNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitValues$25(CanonicalPlanGenerator.Context, List) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitCteProducer(CteProducerNode, CanonicalPlanGenerator.Context) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitCteConsumer(CteConsumerNode, CanonicalPlanGenerator.Context) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitCteReference(CteReferenceNode, CanonicalPlanGenerator.Context) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| inlineAndCanonicalize(Map, RowExpression, boolean) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitSequence$39(CanonicalPlanGenerator.Context, PlanNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$inlineAndCanonicalize$55(Map, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitUnnest$48(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitGroupId$46(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitGroupId$45(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitAggregation$38(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitAggregation$36(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitAggregation$35(CanonicalPlanGenerator.AggregationReference) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitDistinctLimit$31(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitTopNRowNumber$29(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitRowNumber$28(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitMarkDistinct$27(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitValues$26(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$null$18(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$null$17(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$null$16(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$null$15(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitWindow$12(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitWindow$11(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitJoin$8(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitTableWriter$2(CanonicalPlanGenerator.Context, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$generateCanonicalPlan$1(PlanCanonicalizationStrategy, PlanNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| inlineAndCanonicalize(Map, RowExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitProject$50(CanonicalPlanGenerator.RowExpressionReference) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCanonicalGroupingSetDescriptor$44(Map, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCanonicalAggregation$42(Map, VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitOutput$33(CanonicalPlanGenerator.RowExpressionReference) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitTopNRowNumber$30(CanonicalPlanGenerator.Context, OrderingScheme) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$null$24(CanonicalPlanGenerator.Context, RowExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitWindow$22(Map.Entry) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$null$14(CanonicalPlanGenerator.Context, RowExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitWindow$13(CanonicalPlanGenerator.Context, OrderingScheme) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitJoin$7(CanonicalPlanGenerator.Context, RowExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| shouldMergeJoinNodes(JoinType) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitTableScan$54(CanonicalPlanGenerator.ColumnReference) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCanonicalAggregation$41(Map, OrderingScheme) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$getCanonicalAggregation$40(Map, RowExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitAggregation$37(VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitJoin$6(CanonicalPlanGenerator.Context, EquiJoinClause) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$orderSourcesByTables$51(PlanNode) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitTableFinish$4(TableWriterNode.WriterTarget) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$visitTableWriter$3(TableWriterNode.WriterTarget) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| visitPlan(PlanNode, CanonicalPlanGenerator.Context) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$null$20(VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$null$19(VariableReferenceExpression) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |