| reestimatePhysicalOnlyGroup(Group) |  | 0% |  | 0% | 6 | 6 | 22 | 22 | 1 | 1 |
| choosePhysicalOnlyGroupStatistics(Group, Map, Statistics) |  | 0% |  | 0% | 8 | 8 | 17 | 17 | 1 | 1 |
| getEstimablePhysicalExpressions(Group) |  | 0% |  | 0% | 11 | 11 | 16 | 16 | 1 | 1 |
| resolveChosenProjectStatistics(Group, Map, double) |   | 15% |   | 12% | 4 | 5 | 9 | 11 | 0 | 1 |
| syncLogicalExpressionRowCount(Group, double) |  | 0% |  | 0% | 4 | 4 | 6 | 6 | 1 | 1 |
| recordProducerStats(Group, Statistics) |   | 64% |   | 66% | 4 | 7 | 3 | 13 | 0 | 1 |
| dependsOnOwnerGroupStatistics(Group, GroupExpression) |  | 0% |  | 0% | 3 | 3 | 5 | 5 | 1 | 1 |
| reestimateCurrentGroup(Group) |   | 85% |   | 50% | 6 | 8 | 7 | 33 | 0 | 1 |
| chooseRepresentativeStatistics(List, double, Statistics) |   | 68% |   | 62% | 2 | 5 | 3 | 13 | 0 | 1 |
| restoreMissingLowestCostPlans(Group, Map) |   | 57% |   | 75% | 1 | 3 | 1 | 5 | 0 | 1 |
| shouldPreserveChosenProjectStatistics(Group, Map, double) |   | 87% |   | 75% | 5 | 13 | 3 | 26 | 0 | 1 |
| hasAvailableCteStatistics(GroupExpression) |   | 44% |   | 50% | 2 | 3 | 2 | 6 | 0 | 1 |
| restoreChildStatistics(GroupExpression, List) |   | 56% |   | 75% | 1 | 3 | 1 | 5 | 0 | 1 |
| recomputeGroupExpressionCost(Group, GroupExpression) |   | 95% |   | 70% | 7 | 13 | 5 | 40 | 0 | 1 |
| recompute(Group, PhysicalProperties, CascadesContext) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| getLogicalRowCountAggregationPolicy() |   | 80% |   | 50% | 3 | 4 | 1 | 5 | 0 | 1 |
| countTrustJoins(GroupExpression, Set) |   | 95% |   | 75% | 2 | 5 | 1 | 9 | 0 | 1 |
| getEstimableLogicalExpressions(Group) |   | 95% |   | 60% | 4 | 6 | 1 | 11 | 0 | 1 |
| isTrustJoin(GroupExpression) |   | 93% |   | 62% | 3 | 5 | 1 | 8 | 0 | 1 |
| hasAvailableChildBestPlan(GroupExpression, List) |   | 93% |   | 83% | 1 | 4 | 1 | 7 | 0 | 1 |
| resolveUpdatedGroupStatistics(Group, Map, List, double, Statistics) |   | 90% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| hasCompleteChildStatistics(GroupExpression) |   | 89% |   | 75% | 1 | 3 | 1 | 5 | 0 | 1 |
| shouldSyncLogicalExpressionRowCount() |   | 75% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| refreshEnforcerRowCount(Group) |  | 95% |   | 75% | 1 | 3 | 1 | 7 | 0 | 1 |
| hasEstimableLogicalExpressionRowCount(Group, GroupExpression) |  | 93% |   | 66% | 2 | 4 | 0 | 2 | 0 | 1 |
| isValidCandidateStatistics(Statistics) |  | 92% |   | 50% | 2 | 3 | 0 | 1 | 0 | 1 |
| recomputePhysicalCostsBottomUp(Group, Set) |  | 100% |   | 85% | 2 | 8 | 0 | 21 | 0 | 1 |
| restoreMissingExpressionCostState(GroupExpression, Map, Map) |  | 100% |   | 87% | 1 | 5 | 0 | 9 | 0 | 1 |
| filterCandidateStatisticsByPolicy(MemoStatsAndCostRecomputer.LogicalRowCountAggregationPolicy, Map) |  | 100% |   | 90% | 1 | 6 | 0 | 14 | 0 | 1 |
| seedProducerStats(Group, Set) |  | 100% |   | 83% | 1 | 4 | 0 | 9 | 0 | 1 |
| recompute(Group, PhysicalProperties, CascadesContext, MemoStatsAndCostRecomputer.LogicalExpressionRowCountSyncPolicy) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| addChildren(List, Iterable, Group) |  | 100% |  | 100% | 0 | 4 | 0 | 7 | 0 | 1 |
| reestimateLogicalStatsBottomUp(Group, Set) |  | 100% |  | 100% | 0 | 3 | 0 | 8 | 0 | 1 |
| getPhysicalExpressionRowCount(GroupExpression, double) |  | 100% |   | 60% | 4 | 6 | 0 | 6 | 0 | 1 |
| repairInvalidLogicalExpressionRowCounts(Group, double) |  | 100% |   | 83% | 1 | 4 | 0 | 6 | 0 | 1 |
| snapshotLowestCostPlans(Group) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| estimateStats(GroupExpression) |  | 100% | | n/a | 0 | 1 | 0 | 7 | 0 | 1 |
| getTraversalChildren(Group) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| refreshPhysicalExpressionRowCount(Group, double) |  | 100% |  | 100% | 0 | 2 | 0 | 4 | 0 | 1 |
| MemoStatsAndCostRecomputer(CascadesContext, MemoStatsAndCostRecomputer.LogicalExpressionRowCountSyncPolicy) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| lambda$snapshotLowestCostPlans$0(Map, PhysicalProperties, Pair) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| replaceChildStatisticsForLogicalEstimation(GroupExpression) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |