From 83ece38d010caae4045622caaff8d1afbbe5d550 Mon Sep 17 00:00:00 2001 From: Normen Seemann Date: Wed, 16 Apr 2025 09:28:49 +0200 Subject: [PATCH 1/4] some initial renamings --- .../query/combinatorics/TopologicalSort.java | 4 ++++ .../plan/RecordQueryPlannerConfiguration.java | 6 +++--- .../query/plan/cascades/CascadesPlanner.java | 14 +++++++------- .../record/query/plan/cascades/CascadesRule.java | 2 +- .../record/query/plan/cascades/PlannerRule.java | 2 +- .../{PlannerRuleSet.java => PlanningRuleSet.java} | 8 ++++---- .../values/simplification/AbstractRule.java | 4 ++-- .../query/FDBCoveringIndexQueryTest.java | 4 ++-- 8 files changed, 24 insertions(+), 20 deletions(-) rename fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/plan/cascades/{PlannerRuleSet.java => PlanningRuleSet.java} (98%) diff --git a/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/combinatorics/TopologicalSort.java b/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/combinatorics/TopologicalSort.java index a61714e859..02c1ce76e3 100644 --- a/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/combinatorics/TopologicalSort.java +++ b/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/combinatorics/TopologicalSort.java @@ -730,6 +730,10 @@ public static Optional> anyTopologicalOrderPermutation(@Nonnull fina * @return a permutation of the set that is topologically correctly ordered with respect to {@code dependsOnFn} */ public static Optional> anyTopologicalOrderPermutation(@Nonnull final PartiallyOrderedSet partiallyOrderedSet) { + if (partiallyOrderedSet.getDependencyMap().isEmpty()) { + // if there are no dependencies, just return a list copy of the set + return Optional.of(ImmutableList.copyOf(partiallyOrderedSet.getSet())); + } return anyTopologicalOrderPermutation(partiallyOrderedSet.getSet(), () -> new KahnIterable<>(PartiallyOrderedSet.of(partiallyOrderedSet.getSet(), partiallyOrderedSet.getDependencyMap().inverse()))); } diff --git a/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/plan/RecordQueryPlannerConfiguration.java b/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/plan/RecordQueryPlannerConfiguration.java index 9d1ed9d53c..c5775ae64a 100644 --- a/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/plan/RecordQueryPlannerConfiguration.java +++ b/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/plan/RecordQueryPlannerConfiguration.java @@ -25,7 +25,7 @@ import com.apple.foundationdb.record.RecordPlannerConfigurationProto; import com.apple.foundationdb.record.query.RecordQuery; import com.apple.foundationdb.record.query.plan.cascades.CascadesRule; -import com.apple.foundationdb.record.query.plan.cascades.PlannerRuleSet; +import com.apple.foundationdb.record.query.plan.cascades.PlanningRuleSet; import com.apple.foundationdb.record.query.plan.cascades.rules.PredicateToLogicalUnionRule; import com.apple.foundationdb.record.query.plan.plans.QueryPlan; import com.apple.foundationdb.record.query.plan.serialization.PlanSerialization; @@ -605,11 +605,11 @@ public Builder setDisabledTransformationRules(@Nonnull final Set disabledTransformationRuleNames, @Nonnull PlannerRuleSet plannerRuleSet) { + public Builder setDisabledTransformationRuleNames(@Nonnull final Set disabledTransformationRuleNames, @Nonnull PlanningRuleSet planningRuleSet) { protoBuilder.clearDisabledTransformationRules() .addAllDisabledTransformationRules(disabledTransformationRuleNames); return this; diff --git a/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/plan/cascades/CascadesPlanner.java b/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/plan/cascades/CascadesPlanner.java index 3afd814791..7d5a467c55 100644 --- a/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/plan/cascades/CascadesPlanner.java +++ b/fdb-record-layer-core/src/main/java/com/apple/foundationdb/record/query/plan/cascades/CascadesPlanner.java @@ -83,7 +83,7 @@ * Like many optimization frameworks, Cascades is driven by sets of {@link CascadesRule}s that can be defined for * {@link RelationalExpression}s, {@link PartialMatch}es and {@link MatchPartition}s, each of which describes a * particular transformation and encapsulates the logic for determining its applicability and applying it. The planner - * searches through its {@link PlannerRuleSet} to find a matching rule and then executes that rule, creating zero or + * searches through its {@link PlanningRuleSet} to find a matching rule and then executes that rule, creating zero or * more additional {@code PlannerExpression}s and/or zero or more additional {@link PartialMatch}es. A rule is defined by: *

*