This is an automated email from the ASF dual-hosted git repository.

xxyu pushed a commit to branch kylin5_beta
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit f7f8affee6785a894a223a26785f83872e24a4e3
Author: Pengfei Zhan <dethr...@gmail.com>
AuthorDate: Fri Mar 31 18:05:02 2023 +0800

    KYLIN-5632 Rename, move package or drop some useless class
---
 .../kylin/metadata/cube/model/NDataflow.java       |  4 +-
 .../org/apache/kylin/metadata/model/Segments.java  | 15 ++---
 .../kylin/metadata/project/NProjectLoader.java     | 25 +++----
 .../metadata/realization/CapabilityResult.java     | 53 +++++----------
 .../{cube => }/realization/HybridRealization.java  | 10 +--
 .../kylin/metadata/realization/IRealization.java   |  2 +-
 .../metadata/realization/IRealizationFilter.java   | 24 -------
 .../apache/kylin/query/relnode/OLAPContext.java    |  2 +-
 .../routing/{rules => }/PartitionPruningRule.java  |  4 +-
 .../apache/kylin/query/routing/QueryRouter.java    |  6 +-
 .../kylin/query/routing/RealizationChooser.java    | 13 +---
 ...e.java => RemoveIncapableRealizationsRule.java} |  6 +-
 .../routing/{rules => }/SegmentPruningRule.java    |  4 +-
 .../query/routing/rules/RealizationSortRule.java   | 46 -------------
 .../rules/RemoveBlackoutRealizationsRule.java      | 78 ----------------------
 .../kylin/query/util/ICutContextStrategy.java      |  2 +-
 ...trategy.java => ContextInitialCutStrategy.java} |  2 +-
 ...textStrategy.java => ContextReCutStrategy.java} |  2 +-
 .../kylin/query/util/QueryContextCutter.java       |  6 +-
 .../kylin/engine/spark/job/SegmentBuildJob.java    | 10 +--
 .../kylin/query/runtime/plan/TableScanPlan.scala   | 12 ++--
 21 files changed, 64 insertions(+), 262 deletions(-)

diff --git 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/model/NDataflow.java
 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/model/NDataflow.java
index 96ab966b08..39c5048f1e 100644
--- 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/model/NDataflow.java
+++ 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/model/NDataflow.java
@@ -301,7 +301,7 @@ public class NDataflow extends RootPersistentEntity 
implements Serializable, IRe
     }
 
     @Override
-    public boolean isReady() {
+    public boolean isOnline() {
         return getStatus() == RealizationStatusEnum.ONLINE;
     }
 
@@ -579,7 +579,7 @@ public class NDataflow extends RootPersistentEntity 
implements Serializable, IRe
     }
 
     public boolean hasReadySegments() {
-        return isReady() && CollectionUtils.isNotEmpty(getQueryableSegments());
+        return isOnline() && 
CollectionUtils.isNotEmpty(getQueryableSegments());
     }
 
     public void initAllSegLayoutInfo() {
diff --git 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/model/Segments.java 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/model/Segments.java
index 7de194cca8..13e1b1bac2 100644
--- 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/model/Segments.java
+++ 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/model/Segments.java
@@ -32,13 +32,12 @@ import java.util.stream.Collectors;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.util.ClassUtil;
 import org.apache.kylin.common.util.Pair;
-import org.apache.kylin.metadata.cube.model.NDataSegment;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 import org.apache.kylin.guava30.shaded.common.annotations.VisibleForTesting;
 import org.apache.kylin.guava30.shaded.common.base.Preconditions;
 import org.apache.kylin.guava30.shaded.common.collect.Lists;
+import org.apache.kylin.metadata.cube.model.NDataSegment;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import lombok.val;
 import lombok.var;
@@ -246,11 +245,9 @@ public class Segments<T extends ISegment> extends 
ArrayList<T> implements Serial
 
     public Segments<T> getBuildingSegments() {
         Segments<T> buildingSegments = new Segments();
-        if (null != this) {
-            for (T segment : this) {
-                if (SegmentStatusEnum.NEW == segment.getStatus()) {
-                    buildingSegments.add(segment);
-                }
+        for (T segment : this) {
+            if (SegmentStatusEnum.NEW == segment.getStatus()) {
+                buildingSegments.add(segment);
             }
         }
         return buildingSegments;
diff --git 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/project/NProjectLoader.java
 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/project/NProjectLoader.java
index 430fd12f64..4f5572e70a 100644
--- 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/project/NProjectLoader.java
+++ 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/project/NProjectLoader.java
@@ -29,27 +29,24 @@ import javax.annotation.Nullable;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.kylin.common.KylinConfig;
+import org.apache.kylin.guava30.shaded.common.base.Preconditions;
+import org.apache.kylin.guava30.shaded.common.collect.Lists;
+import org.apache.kylin.metadata.cube.model.NDataflow;
+import org.apache.kylin.metadata.cube.model.NDataflowManager;
 import org.apache.kylin.metadata.model.ColumnDesc;
 import org.apache.kylin.metadata.model.FunctionDesc;
+import org.apache.kylin.metadata.model.FusionModel;
+import org.apache.kylin.metadata.model.FusionModelManager;
 import org.apache.kylin.metadata.model.MeasureDesc;
+import org.apache.kylin.metadata.model.NDataModel;
+import org.apache.kylin.metadata.model.NDataModelManager;
+import org.apache.kylin.metadata.model.NTableMetadataManager;
 import org.apache.kylin.metadata.model.TableDesc;
 import org.apache.kylin.metadata.model.TableRef;
 import org.apache.kylin.metadata.model.TblColRef;
+import org.apache.kylin.metadata.realization.HybridRealization;
 import org.apache.kylin.metadata.realization.IRealization;
 import org.apache.kylin.metadata.realization.NRealizationRegistry;
-import org.apache.kylin.metadata.cube.model.NDataflow;
-import org.apache.kylin.metadata.cube.model.NDataflowManager;
-import org.apache.kylin.metadata.cube.realization.HybridRealization;
-import org.apache.kylin.metadata.model.FusionModel;
-import org.apache.kylin.metadata.model.FusionModelManager;
-import org.apache.kylin.metadata.model.NDataModel;
-import org.apache.kylin.metadata.model.NDataModelManager;
-import org.apache.kylin.metadata.model.NTableMetadataManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.kylin.guava30.shaded.common.base.Preconditions;
-import org.apache.kylin.guava30.shaded.common.collect.Lists;
 
 import lombok.val;
 import lombok.extern.slf4j.Slf4j;
@@ -106,7 +103,7 @@ public class NProjectLoader {
         List<IRealization> existingRealizations = 
realizations.stream().filter(r -> modelIds.contains(r.getUuid()))
                 .collect(Collectors.toList());
         for (IRealization r : existingRealizations) {
-            if (!r.isReady())
+            if (!r.isOnline())
                 continue;
             NDataModel model = r.getModel();
             for (MeasureDesc m : r.getMeasures()) {
diff --git 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/CapabilityResult.java
 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/CapabilityResult.java
index 1ed974ef5e..95ba127c50 100644
--- 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/CapabilityResult.java
+++ 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/CapabilityResult.java
@@ -21,12 +21,11 @@ package org.apache.kylin.metadata.realization;
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.kylin.guava30.shaded.common.collect.Lists;
 import org.apache.kylin.metadata.model.FunctionDesc;
 import org.apache.kylin.metadata.model.MeasureDesc;
 import org.apache.kylin.metadata.model.TblColRef;
 
-import org.apache.kylin.guava30.shaded.common.collect.Lists;
-
 import lombok.Getter;
 import lombok.Setter;
 
@@ -35,7 +34,9 @@ public class CapabilityResult {
     /**
      * Is capable or not
      */
-    public boolean capable = false;
+    @Getter
+    @Setter
+    private boolean capable = false;
 
     /**
      * selected capable candidate, like Lookup or layout
@@ -68,7 +69,7 @@ public class CapabilityResult {
      */
     public List<CapabilityInfluence> influences = 
Lists.newArrayListWithCapacity(1);
 
-    public static interface CapabilityInfluence {
+    public interface CapabilityInfluence {
         /**
          * Suggest a multiplier to influence query cost
          */
@@ -100,11 +101,20 @@ public class CapabilityResult {
         }
     }
 
-    public static enum IncapableType {
-        UNMATCHED_DIMENSION, UNMATCHED_AGGREGATION, UNSUPPORT_MASSIN, 
UNSUPPORT_RAWQUERY, LIMIT_PRECEDE_AGGR, II_UNMATCHED_FACT_TABLE, 
TABLE_INDEX_MISSING_COLS, NOT_EXIST_SNAPSHOT
+    public enum IncapableType {
+        UNMATCHED_DIMENSION,
+
+        LIMIT_PRECEDE_AGGR,
+
+        TABLE_INDEX_MISSING_COLS,
+
+        NOT_EXIST_SNAPSHOT
     }
 
+    @Getter
+    @Setter
     public static class IncapableCause {
+
         private IncapableType incapableType;
         private Collection<TblColRef> unmatchedDimensions;
         private Collection<FunctionDesc> unmatchedAggregations;
@@ -116,41 +126,10 @@ public class CapabilityResult {
             return incapableCause;
         }
 
-        public static IncapableCause 
unmatchedAggregations(Collection<FunctionDesc> unmatchedAggregations) {
-            IncapableCause incapableCause = new IncapableCause();
-            
incapableCause.setIncapableType(IncapableType.UNMATCHED_AGGREGATION);
-            incapableCause.setUnmatchedAggregations(unmatchedAggregations);
-            return incapableCause;
-        }
-
         public static IncapableCause create(IncapableType incapableType) {
             IncapableCause incapableCause = new IncapableCause();
             incapableCause.setIncapableType(incapableType);
             return incapableCause;
         }
-
-        public IncapableType getIncapableType() {
-            return incapableType;
-        }
-
-        public void setIncapableType(IncapableType incapableType) {
-            this.incapableType = incapableType;
-        }
-
-        public Collection<TblColRef> getUnmatchedDimensions() {
-            return unmatchedDimensions;
-        }
-
-        public void setUnmatchedDimensions(Collection<TblColRef> 
unmatchedDimensions) {
-            this.unmatchedDimensions = unmatchedDimensions;
-        }
-
-        public Collection<FunctionDesc> getUnmatchedAggregations() {
-            return unmatchedAggregations;
-        }
-
-        public void setUnmatchedAggregations(Collection<FunctionDesc> 
unmatchedAggregations) {
-            this.unmatchedAggregations = unmatchedAggregations;
-        }
     }
 }
diff --git 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/realization/HybridRealization.java
 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/HybridRealization.java
similarity index 96%
rename from 
src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/realization/HybridRealization.java
rename to 
src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/HybridRealization.java
index 8e2c73dd74..fbd01d6c78 100644
--- 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/cube/realization/HybridRealization.java
+++ 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/HybridRealization.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.kylin.metadata.cube.realization;
+package org.apache.kylin.metadata.realization;
 
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
@@ -37,10 +37,6 @@ import org.apache.kylin.metadata.model.NDataModel;
 import org.apache.kylin.metadata.model.NDataModelManager;
 import org.apache.kylin.metadata.model.SegmentRange;
 import org.apache.kylin.metadata.model.TblColRef;
-import org.apache.kylin.metadata.realization.CapabilityResult;
-import org.apache.kylin.metadata.realization.IRealization;
-import org.apache.kylin.metadata.realization.QueryableSeg;
-import org.apache.kylin.metadata.realization.SQLDigest;
 
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
@@ -86,7 +82,7 @@ public class HybridRealization implements IRealization {
             columns.addAll(realization.getAllColumns());
             dimensions.addAll(realization.getAllDimensions());
             allMeasures.addAll(realization.getMeasures());
-            if (realization.isReady())
+            if (realization.isOnline())
                 isReady = true;
 
             if (dateRangeStart == 0 || realization.getDateRangeStart() < 
dateRangeStart)
@@ -253,7 +249,7 @@ public class HybridRealization implements IRealization {
     }
 
     @Override
-    public boolean isReady() {
+    public boolean isOnline() {
         return isReady;
     }
 
diff --git 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/IRealization.java
 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/IRealization.java
index ea8229e6fb..772dfc0b68 100644
--- 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/IRealization.java
+++ 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/IRealization.java
@@ -61,7 +61,7 @@ public interface IRealization extends IStorageAware {
 
     String getProject();
 
-    boolean isReady();
+    boolean isOnline();
 
     String getUuid();
 
diff --git 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationFilter.java
 
b/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationFilter.java
deleted file mode 100644
index 3f3007488d..0000000000
--- 
a/src/core-metadata/src/main/java/org/apache/kylin/metadata/realization/IRealizationFilter.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.kylin.metadata.realization;
-
-public interface IRealizationFilter {
-
-    boolean accept(IRealization real);
-}
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java
index dbf66783c6..e2d00d77b3 100644
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java
+++ 
b/src/query-common/src/main/java/org/apache/kylin/query/relnode/OLAPContext.java
@@ -47,7 +47,6 @@ import org.apache.kylin.metadata.cube.cuboid.NLayoutCandidate;
 import org.apache.kylin.metadata.cube.model.DimensionRangeInfo;
 import org.apache.kylin.metadata.cube.model.NDataSegment;
 import org.apache.kylin.metadata.cube.model.NDataflow;
-import org.apache.kylin.metadata.cube.realization.HybridRealization;
 import org.apache.kylin.metadata.model.FunctionDesc;
 import org.apache.kylin.metadata.model.JoinDesc;
 import org.apache.kylin.metadata.model.MeasureDesc;
@@ -58,6 +57,7 @@ import org.apache.kylin.metadata.model.TblColRef;
 import org.apache.kylin.metadata.model.graph.JoinsGraph;
 import org.apache.kylin.metadata.query.NativeQueryRealization;
 import org.apache.kylin.metadata.query.QueryMetrics;
+import org.apache.kylin.metadata.realization.HybridRealization;
 import org.apache.kylin.metadata.realization.IRealization;
 import org.apache.kylin.metadata.realization.SQLDigest;
 import org.apache.kylin.metadata.tuple.Tuple;
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/PartitionPruningRule.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/PartitionPruningRule.java
similarity index 98%
rename from 
src/query-common/src/main/java/org/apache/kylin/query/routing/rules/PartitionPruningRule.java
rename to 
src/query-common/src/main/java/org/apache/kylin/query/routing/PartitionPruningRule.java
index 7e300d0f43..c028906e47 100644
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/PartitionPruningRule.java
+++ 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/PartitionPruningRule.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.kylin.query.routing.rules;
+package org.apache.kylin.query.routing;
 
 import java.util.Collection;
 import java.util.Collections;
@@ -49,8 +49,6 @@ import org.apache.kylin.metadata.model.TblColRef;
 import org.apache.kylin.metadata.realization.CapabilityResult;
 import org.apache.kylin.query.relnode.OLAPContext;
 import org.apache.kylin.query.relnode.OLAPTableScan;
-import org.apache.kylin.query.routing.Candidate;
-import org.apache.kylin.query.routing.RoutingRule;
 import org.apache.kylin.query.util.RexUtils;
 
 import lombok.extern.slf4j.Slf4j;
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/QueryRouter.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/QueryRouter.java
index 4682dd522f..9b3d4c03f7 100644
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/QueryRouter.java
+++ 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/QueryRouter.java
@@ -21,9 +21,6 @@ package org.apache.kylin.query.routing;
 import java.util.List;
 
 import org.apache.kylin.guava30.shaded.common.collect.Lists;
-import org.apache.kylin.query.routing.rules.PartitionPruningRule;
-import org.apache.kylin.query.routing.rules.RemoveUncapableRealizationsRule;
-import org.apache.kylin.query.routing.rules.SegmentPruningRule;
 
 /**
  * @author xjiang
@@ -38,7 +35,7 @@ public class QueryRouter {
     static {
         LAYOUT_CHOOSING_RULES.add(new SegmentPruningRule());
         LAYOUT_CHOOSING_RULES.add(new PartitionPruningRule());
-        LAYOUT_CHOOSING_RULES.add(new RemoveUncapableRealizationsRule());
+        LAYOUT_CHOOSING_RULES.add(new RemoveIncapableRealizationsRule());
     }
 
     public static void applyRules(Candidate candidate) {
@@ -46,4 +43,5 @@ public class QueryRouter {
             rule.apply(candidate);
         }
     }
+
 }
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/RealizationChooser.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/RealizationChooser.java
index b66014072b..e6fe2878bd 100644
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/RealizationChooser.java
+++ 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/RealizationChooser.java
@@ -78,7 +78,6 @@ import org.apache.kylin.metadata.cube.model.LayoutEntity;
 import org.apache.kylin.metadata.cube.model.NDataSegment;
 import org.apache.kylin.metadata.cube.model.NDataflowManager;
 import org.apache.kylin.metadata.cube.model.NIndexPlanManager;
-import org.apache.kylin.metadata.cube.realization.HybridRealization;
 import org.apache.kylin.metadata.model.FunctionDesc;
 import org.apache.kylin.metadata.model.FusionModelManager;
 import org.apache.kylin.metadata.model.ISourceAware;
@@ -96,6 +95,7 @@ import org.apache.kylin.metadata.model.graph.JoinsGraph;
 import org.apache.kylin.metadata.project.NProjectLoader;
 import org.apache.kylin.metadata.project.NProjectManager;
 import org.apache.kylin.metadata.realization.CapabilityResult;
+import org.apache.kylin.metadata.realization.HybridRealization;
 import org.apache.kylin.metadata.realization.IRealization;
 import org.apache.kylin.metadata.realization.NoRealizationFoundException;
 import 
org.apache.kylin.metadata.realization.NoStreamingRealizationFoundException;
@@ -335,7 +335,7 @@ public class RealizationChooser {
 
     public static Candidate selectRealization(OLAPContext olapContext, 
IRealization realization,
             Map<String, String> matchedJoinGraphAliasMap) {
-        if (!realization.isReady()) {
+        if (!realization.isOnline()) {
             logger.warn("Realization {} is not ready", realization);
             return null;
         }
@@ -732,7 +732,7 @@ public class RealizationChooser {
         boolean streamingEnabled = kylinConfig.streamingEnabled();
         for (IRealization real : realizations) {
             boolean skip = false;
-            if (!real.isReady()) {
+            if (!real.isOnline()) {
                 skip = true;
                 logger.warn("Offline model({}/{}) with fact table {} cannot be 
queried.", project, real, factTable);
             } else if (isModelViewBounded(context, real)) {
@@ -765,11 +765,4 @@ public class RealizationChooser {
     private static boolean omitFusionModel(boolean turnOnStreaming, 
IRealization real) {
         return !turnOnStreaming && real.getModel().isFusionModel();
     }
-
-    public static Map<String, String> matchJoins(NDataModel model, OLAPContext 
ctx) {
-        KylinConfig projectConfig = 
NProjectManager.getProjectConfig(ctx.olapSchema.getProjectName());
-        boolean isPartialInnerJoin = 
projectConfig.isQueryMatchPartialInnerJoinModel();
-        boolean isPartialNonEquiJoin = 
projectConfig.partialMatchNonEquiJoins();
-        return matchJoins(model, ctx, isPartialInnerJoin, 
isPartialNonEquiJoin);
-    }
 }
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/RemoveUncapableRealizationsRule.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/RemoveIncapableRealizationsRule.java
similarity index 92%
rename from 
src/query-common/src/main/java/org/apache/kylin/query/routing/rules/RemoveUncapableRealizationsRule.java
rename to 
src/query-common/src/main/java/org/apache/kylin/query/routing/RemoveIncapableRealizationsRule.java
index 96d75b9855..284f8e31b7 100644
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/RemoveUncapableRealizationsRule.java
+++ 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/RemoveIncapableRealizationsRule.java
@@ -16,13 +16,11 @@
  * limitations under the License.
  */
 
-package org.apache.kylin.query.routing.rules;
+package org.apache.kylin.query.routing;
 
 import org.apache.kylin.guava30.shaded.common.collect.BiMap;
 import org.apache.kylin.guava30.shaded.common.collect.HashBiMap;
 import org.apache.kylin.metadata.realization.CapabilityResult;
-import org.apache.kylin.query.routing.Candidate;
-import org.apache.kylin.query.routing.RoutingRule;
 import org.apache.kylin.query.util.ComputedColumnRewriter;
 import org.apache.kylin.query.util.QueryAliasMatchInfo;
 
@@ -31,7 +29,7 @@ import lombok.extern.slf4j.Slf4j;
 /**
  */
 @Slf4j
-public class RemoveUncapableRealizationsRule extends RoutingRule {
+public class RemoveIncapableRealizationsRule extends RoutingRule {
     @Override
     public void apply(Candidate candidate) {
         if (candidate.getCapability() != null) {
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/SegmentPruningRule.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/SegmentPruningRule.java
similarity index 99%
rename from 
src/query-common/src/main/java/org/apache/kylin/query/routing/rules/SegmentPruningRule.java
rename to 
src/query-common/src/main/java/org/apache/kylin/query/routing/SegmentPruningRule.java
index 4f7c7c33e4..6c104655b1 100644
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/SegmentPruningRule.java
+++ 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/SegmentPruningRule.java
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-package org.apache.kylin.query.routing.rules;
+package org.apache.kylin.query.routing;
 
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -67,8 +67,6 @@ import org.apache.kylin.metadata.project.NProjectManager;
 import org.apache.kylin.metadata.realization.CapabilityResult;
 import org.apache.kylin.metadata.realization.IRealization;
 import org.apache.kylin.query.relnode.OLAPContext;
-import org.apache.kylin.query.routing.Candidate;
-import org.apache.kylin.query.routing.RoutingRule;
 import org.apache.kylin.query.util.RexUtils;
 
 import lombok.val;
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/RealizationSortRule.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/RealizationSortRule.java
deleted file mode 100644
index 03af63e07a..0000000000
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/RealizationSortRule.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.kylin.query.routing.rules;
-
-import java.util.List;
-
-import org.apache.kylin.query.routing.Candidate;
-import org.apache.kylin.query.routing.RoutingRule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- */
-public class RealizationSortRule extends RoutingRule {
-    private static final Logger logger = 
LoggerFactory.getLogger(RealizationSortRule.class);
-
-    @Override
-    public void apply(List<Candidate> candidates) {
-        if (candidates.isEmpty())
-            return;
-        StringBuilder sb = new StringBuilder();
-        for (Candidate candidate : candidates) {
-            sb.append(candidate.getRealization().getCanonicalName()).append(" 
cost ")
-                    .append(candidate.getCapability().cost).append(". ");
-        }
-        logger.debug(sb.toString());
-
-        candidates.sort(Candidate.COMPARATOR);
-    }
-}
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/RemoveBlackoutRealizationsRule.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/RemoveBlackoutRealizationsRule.java
deleted file mode 100644
index 70b0b85cdb..0000000000
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/routing/rules/RemoveBlackoutRealizationsRule.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.kylin.query.routing.rules;
-
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.kylin.common.KylinConfig;
-import org.apache.kylin.common.util.ClassUtil;
-import org.apache.kylin.metadata.realization.IRealization;
-import org.apache.kylin.metadata.realization.IRealizationFilter;
-import org.apache.kylin.query.routing.Candidate;
-import org.apache.kylin.query.routing.RoutingRule;
-
-import org.apache.kylin.guava30.shaded.common.collect.Sets;
-
-/**
- */
-public class RemoveBlackoutRealizationsRule extends RoutingRule {
-    private static Set<String> blackList = Sets.newHashSet();
-    private static Set<String> whiteList = Sets.newHashSet();
-
-    private static ConcurrentHashMap<KylinConfig, IRealizationFilter> filters 
= new ConcurrentHashMap<>();
-
-    public static boolean accept(IRealization real) {
-        String canonicalName = real.getCanonicalName();
-        if (blackList.contains(canonicalName))
-            return false;
-        if (!whiteList.isEmpty() && !whiteList.contains(canonicalName))
-            return false;
-
-        String filterClz = real.getConfig().getQueryRealizationFilter();
-        if (filterClz != null) {
-            if (!getFilterImpl(real.getConfig()).accept(real))
-                return false;
-        }
-
-        return true;
-    }
-
-    private static IRealizationFilter getFilterImpl(KylinConfig conf) {
-        IRealizationFilter filter = filters.get(conf);
-        if (filter == null) {
-            try {
-                Class<? extends IRealizationFilter> clz = 
ClassUtil.forName(conf.getQueryRealizationFilter(),
-                        IRealizationFilter.class);
-                filter = 
clz.getConstructor(KylinConfig.class).newInstance(conf);
-            } catch (Exception e) {
-                throw new RuntimeException(e);
-            }
-            filters.put(conf, filter);
-        }
-        return filter;
-    }
-
-    @Override
-    public void apply(List<Candidate> candidates) {
-        candidates.removeIf(candidate -> !accept(candidate.getRealization()));
-    }
-
-}
diff --git 
a/src/query-common/src/main/java/org/apache/kylin/query/util/ICutContextStrategy.java
 
b/src/query-common/src/main/java/org/apache/kylin/query/util/ICutContextStrategy.java
index 0b8b80dbe9..4968c44503 100644
--- 
a/src/query-common/src/main/java/org/apache/kylin/query/util/ICutContextStrategy.java
+++ 
b/src/query-common/src/main/java/org/apache/kylin/query/util/ICutContextStrategy.java
@@ -21,9 +21,9 @@ package org.apache.kylin.query.util;
 import java.util.List;
 
 import org.apache.calcite.rel.RelNode;
+import org.apache.kylin.query.relnode.KapRel;
 import org.apache.kylin.query.relnode.OLAPContext;
 import org.apache.kylin.query.relnode.OLAPRel;
-import org.apache.kylin.query.relnode.KapRel;
 
 public interface ICutContextStrategy {
 
diff --git 
a/src/query/src/main/java/org/apache/kylin/query/util/FirstRoundContextCutStrategy.java
 
b/src/query/src/main/java/org/apache/kylin/query/util/ContextInitialCutStrategy.java
similarity index 97%
rename from 
src/query/src/main/java/org/apache/kylin/query/util/FirstRoundContextCutStrategy.java
rename to 
src/query/src/main/java/org/apache/kylin/query/util/ContextInitialCutStrategy.java
index 094f1fd834..3f4d146b95 100644
--- 
a/src/query/src/main/java/org/apache/kylin/query/util/FirstRoundContextCutStrategy.java
+++ 
b/src/query/src/main/java/org/apache/kylin/query/util/ContextInitialCutStrategy.java
@@ -30,7 +30,7 @@ import org.apache.kylin.query.relnode.OLAPRel;
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-public class FirstRoundContextCutStrategy implements ICutContextStrategy {
+public class ContextInitialCutStrategy implements ICutContextStrategy {
 
     @Override
     public List<OLAPRel> cutOffContext(OLAPRel rootRel, RelNode parentOfRoot) {
diff --git 
a/src/query/src/main/java/org/apache/kylin/query/util/QueryReCutContextStrategy.java
 b/src/query/src/main/java/org/apache/kylin/query/util/ContextReCutStrategy.java
similarity index 97%
rename from 
src/query/src/main/java/org/apache/kylin/query/util/QueryReCutContextStrategy.java
rename to 
src/query/src/main/java/org/apache/kylin/query/util/ContextReCutStrategy.java
index 98ea861af6..5eb1a4f798 100644
--- 
a/src/query/src/main/java/org/apache/kylin/query/util/QueryReCutContextStrategy.java
+++ 
b/src/query/src/main/java/org/apache/kylin/query/util/ContextReCutStrategy.java
@@ -33,7 +33,7 @@ import lombok.Setter;
 
 @Getter
 @Setter
-public class QueryReCutContextStrategy implements ICutContextStrategy {
+public class ContextReCutStrategy implements ICutContextStrategy {
 
     private CutContextImplementor reCutter;
 
diff --git 
a/src/query/src/main/java/org/apache/kylin/query/util/QueryContextCutter.java 
b/src/query/src/main/java/org/apache/kylin/query/util/QueryContextCutter.java
index 68d6338abc..0355fb60bd 100644
--- 
a/src/query/src/main/java/org/apache/kylin/query/util/QueryContextCutter.java
+++ 
b/src/query/src/main/java/org/apache/kylin/query/util/QueryContextCutter.java
@@ -55,8 +55,8 @@ public class QueryContextCutter {
      * @return The cut OLAPContext with selected realizations, which is a 
subset of OLAPContext.getThreadLocalContexts().
      */
     public static List<OLAPContext> selectRealization(RelNode root, boolean 
isReCutBanned) {
-        FirstRoundContextCutStrategy firstRoundStrategy = new 
FirstRoundContextCutStrategy();
-        QueryReCutContextStrategy reCutStrategy = new 
QueryReCutContextStrategy();
+        ContextInitialCutStrategy firstRoundStrategy = new 
ContextInitialCutStrategy();
+        ContextReCutStrategy reCutStrategy = new ContextReCutStrategy();
 
         QueryContextCutter.cutContext(firstRoundStrategy, (KapRel) 
root.getInput(0), root);
         int retryCutTimes = 0;
@@ -120,7 +120,7 @@ public class QueryContextCutter {
         if (strategy.needCutOff(rootOfSubCtxTree)) {
             strategy.cutOffContext(rootOfSubCtxTree, queryRoot);
         }
-        if (strategy instanceof FirstRoundContextCutStrategy) {
+        if (strategy instanceof ContextInitialCutStrategy) {
             ContextUtil.dumpCalcitePlan("EXECUTION PLAN AFTER OLAPCONTEXT IS 
SET IN FIRST ROUND", queryRoot, log);
         } else {
             ContextUtil.dumpCalcitePlan("EXECUTION PLAN AFTER OLAPCONTEXT IS 
RE-CUT OFF ", queryRoot, log);
diff --git 
a/src/spark-project/engine-spark/src/main/scala/org/apache/kylin/engine/spark/job/SegmentBuildJob.java
 
b/src/spark-project/engine-spark/src/main/scala/org/apache/kylin/engine/spark/job/SegmentBuildJob.java
index a9a1a6f52f..05e0f55327 100644
--- 
a/src/spark-project/engine-spark/src/main/scala/org/apache/kylin/engine/spark/job/SegmentBuildJob.java
+++ 
b/src/spark-project/engine-spark/src/main/scala/org/apache/kylin/engine/spark/job/SegmentBuildJob.java
@@ -18,8 +18,6 @@
 
 package org.apache.kylin.engine.spark.job;
 
-import org.apache.kylin.guava30.shaded.common.base.Throwables;
-import org.apache.kylin.guava30.shaded.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import lombok.val;
 import org.apache.commons.lang3.StringUtils;
@@ -29,14 +27,13 @@ import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.persistence.transaction.UnitOfWork;
 import org.apache.kylin.common.util.HadoopUtil;
 import org.apache.kylin.engine.spark.builder.SnapshotBuilder;
-import org.apache.kylin.engine.spark.job.LogJobInfoUtils;
-import org.apache.kylin.engine.spark.job.SegmentJob;
-import org.apache.kylin.engine.spark.job.SparkJobConstants;
 import org.apache.kylin.engine.spark.job.exec.BuildExec;
 import org.apache.kylin.engine.spark.job.stage.BuildParam;
 import org.apache.kylin.engine.spark.job.stage.StageExec;
-import org.apache.kylin.metadata.cube.model.NBatchConstants;
+import org.apache.kylin.guava30.shaded.common.base.Throwables;
+import org.apache.kylin.guava30.shaded.common.collect.Lists;
 import org.apache.kylin.job.execution.ExecutableState;
+import org.apache.kylin.metadata.cube.model.NBatchConstants;
 import org.apache.kylin.metadata.cube.model.NDataSegment;
 import org.apache.kylin.metadata.cube.model.NDataflow;
 import org.apache.kylin.metadata.cube.model.NDataflowManager;
@@ -49,7 +46,6 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.concurrent.atomic.AtomicLong;
 import java.util.stream.Stream;
 
 import static org.apache.kylin.engine.spark.job.StageType.BUILD_DICT;
diff --git 
a/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/plan/TableScanPlan.scala
 
b/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/plan/TableScanPlan.scala
index 544f20c2c2..ae2ab230ff 100644
--- 
a/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/plan/TableScanPlan.scala
+++ 
b/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/plan/TableScanPlan.scala
@@ -17,6 +17,9 @@
  */
 package org.apache.kylin.query.runtime.plan
 
+import java.util.concurrent.ConcurrentHashMap
+import java.{lang, util}
+
 import org.apache.kylin.common.{KapConfig, KylinConfig, QueryContext}
 import org.apache.kylin.engine.spark.utils.{LogEx, LogUtils}
 import org.apache.kylin.guava30.shaded.common.base.Joiner
@@ -24,22 +27,19 @@ import 
org.apache.kylin.guava30.shaded.common.collect.{Lists, Sets}
 import org.apache.kylin.metadata.cube.cuboid.NLayoutCandidate
 import org.apache.kylin.metadata.cube.gridtable.NLayoutToGridTableMapping
 import org.apache.kylin.metadata.cube.model.{LayoutEntity, NDataSegment, 
NDataflow}
-import org.apache.kylin.metadata.cube.realization.HybridRealization
 import org.apache.kylin.metadata.model._
-import org.apache.kylin.metadata.realization.IRealization
+import org.apache.kylin.metadata.realization.{HybridRealization, IRealization}
 import org.apache.kylin.metadata.tuple.TupleInfo
 import org.apache.kylin.query.implicits.sessionToQueryContext
 import org.apache.kylin.query.relnode.{KapRel, OLAPContext}
 import org.apache.kylin.query.util.{RuntimeHelper, SparderDerivedUtil}
-import org.apache.spark.sql.{Column, DataFrame, Row, SparderEnv, 
SparkOperation, SparkSession}
+import org.apache.spark.sql._
 import org.apache.spark.sql.execution.utils.SchemaProcessor
 import org.apache.spark.sql.functions.col
 import org.apache.spark.sql.manager.SparderLookupManager
-import org.apache.spark.sql.types.{ArrayType, DataTypes, DoubleType, 
StringType, StructField, StructType}
+import org.apache.spark.sql.types._
 import org.apache.spark.sql.util.SparderTypeUtil
 
-import java.util.concurrent.ConcurrentHashMap
-import java.{lang, util}
 import scala.collection.JavaConverters._
 
 


Reply via email to