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

hui pushed a commit to branch lmh/refactorFilter
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit f0b48466c19213081369b835d016386c99d189b5
Author: Minghui Liu <[email protected]>
AuthorDate: Sun Nov 19 21:52:22 2023 +0800

    add more interface
---
 .../predicate/SchemaCompatibilityValidator.java    |  5 +-
 .../plan/planner/OperatorTreeGenerator.java        |  8 +--
 .../plan/node/source/AlignedSeriesScanNode.java    |  4 +-
 .../planner/plan/node/source/SeriesScanNode.java   |  4 +-
 .../planner/plan/node/source/SeriesSourceNode.java |  2 +-
 .../planner/plan/parameter/SeriesScanOptions.java  |  3 +-
 .../iotdb/tsfile/read/filter/basic/Filter.java     |  5 +-
 .../basic/IDisableStatisticsTimeFilter.java}       | 17 ++---
 .../basic/IDisableStatisticsValueFilter.java}      | 19 +++---
 .../tsfile/read/filter/basic/ITimeFilter.java}     | 19 +++---
 .../tsfile/read/filter/basic/IValueFilter.java}    | 25 ++++---
 .../tsfile/read/filter/operator/GroupByFilter.java | 14 +---
 .../read/filter/operator/TimeFilterOperators.java  | 55 +++-------------
 .../read/filter/operator/ValueFilterOperators.java | 77 +++-------------------
 14 files changed, 77 insertions(+), 180 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/SchemaCompatibilityValidator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/SchemaCompatibilityValidator.java
index 57c8d0c9f0e..be71e05f39c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/SchemaCompatibilityValidator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/SchemaCompatibilityValidator.java
@@ -60,7 +60,8 @@ public class SchemaCompatibilityValidator
     }
 
     public void check(MeasurementPath path) {
-      if (this.isAligned != path.isUnderAlignedEntity() || 
!this.checkedPath.equals(getComparePath(path))) {
+      if (this.isAligned != path.isUnderAlignedEntity()
+          || !this.checkedPath.equals(getComparePath(path))) {
         throw new IllegalArgumentException(
             "The paths in the predicate are not compatible with each other.");
       }
@@ -182,7 +183,7 @@ public class SchemaCompatibilityValidator
 
   @Override
   public Void visitGroupByTimeExpression(
-          GroupByTimeExpression groupByTimeExpression, Context context) {
+      GroupByTimeExpression groupByTimeExpression, Context context) {
     // needn't check
     return null;
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
index d38a4c0e2cb..cb6392dc207 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
@@ -311,7 +311,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
             node.getPlanNodeId(),
             seriesPath,
             node.getScanOrder(),
-                scanOptionsBuilder.build());
+            scanOptionsBuilder.build());
 
     ((DataDriverContext) 
context.getDriverContext()).addSourceOperator(seriesScanOperator);
     ((DataDriverContext) context.getDriverContext()).addPath(seriesPath);
@@ -343,7 +343,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
             node.getPlanNodeId(),
             seriesPath,
             node.getScanOrder(),
-                scanOptionsBuilder.build(),
+            scanOptionsBuilder.build(),
             node.isQueryAllSensors());
 
     ((DataDriverContext) 
context.getDriverContext()).addSourceOperator(seriesScanOperator);
@@ -497,7 +497,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
   }
 
   private SeriesScanOptions.Builder getSeriesScanOptionsBuilder(
-          SeriesSourceNode node,  LocalExecutionPlanContext context) {
+      SeriesSourceNode node, LocalExecutionPlanContext context) {
     SeriesScanOptions.Builder scanOptionsBuilder = new 
SeriesScanOptions.Builder();
 
     Filter globalTimeFilter = context.getGlobalTimeFilter();
@@ -508,7 +508,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
     if (pushDownPredicate != null) {
       PredicateUtils.validateSchemaCompatibility(pushDownPredicate, 
node.getPartitionPath());
       pushDownFilter =
-              PredicateUtils.convertPredicateToFilter(pushDownPredicate, 
context.getTypeProvider());
+          PredicateUtils.convertPredicateToFilter(pushDownPredicate, 
context.getTypeProvider());
     }
     scanOptionsBuilder.withPushDownFilter(pushDownFilter);
     return scanOptionsBuilder;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java
index 5787490580e..7d06e198d31 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/AlignedSeriesScanNode.java
@@ -296,8 +296,8 @@ public class AlignedSeriesScanNode extends SeriesSourceNode 
{
         alignedPath,
         scanOrder,
         pushDownPredicate,
-            pushDownLimit,
-            pushDownOffset,
+        pushDownLimit,
+        pushDownOffset,
         regionReplicaSet,
         queryAllSensors);
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesScanNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesScanNode.java
index 1d16d658e63..1d30b6e020a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesScanNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesScanNode.java
@@ -280,8 +280,8 @@ public class SeriesScanNode extends SeriesSourceNode {
         seriesPath,
         scanOrder,
         pushDownPredicate,
-            pushDownLimit,
-            pushDownOffset,
+        pushDownLimit,
+        pushDownOffset,
         regionReplicaSet);
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
index a87d5970766..d5b9c64f321 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
@@ -30,5 +30,5 @@ public abstract class SeriesSourceNode extends SourceNode {
 
   public abstract PartialPath getPartitionPath();
 
-    public abstract Expression getPushDownPredicate();
+  public abstract Expression getPushDownPredicate();
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/SeriesScanOptions.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/SeriesScanOptions.java
index e509a15385d..ca74215207a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/SeriesScanOptions.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/SeriesScanOptions.java
@@ -135,7 +135,8 @@ public class SeriesScanOptions {
     }
 
     public SeriesScanOptions build() {
-      return new SeriesScanOptions(globalTimeFilter, pushDownFilter, 
pushDownLimit, pushDownOffset, allSensors);
+      return new SeriesScanOptions(
+          globalTimeFilter, pushDownFilter, pushDownLimit, pushDownOffset, 
allSensors);
     }
   }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java
index 743c7705871..657ab1f30fc 100755
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/Filter.java
@@ -22,7 +22,6 @@ package org.apache.iotdb.tsfile.read.filter.basic;
 import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
 import org.apache.iotdb.tsfile.read.common.TimeRange;
 
-import java.util.Collections;
 import java.util.List;
 
 /** Filter is a top level filter abstraction. */
@@ -66,9 +65,7 @@ public interface Filter {
    */
   boolean containStartEndTime(long startTime, long endTime);
 
-  default List<TimeRange> getTimeRanges() {
-    return Collections.emptyList();
-  }
+  List<TimeRange> getTimeRanges();
 
   Filter reverse();
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/IDisableStatisticsTimeFilter.java
similarity index 62%
copy from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
copy to 
iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/IDisableStatisticsTimeFilter.java
index a87d5970766..43277ae43d8 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/IDisableStatisticsTimeFilter.java
@@ -17,18 +17,15 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.queryengine.plan.planner.plan.node.source;
+package org.apache.iotdb.tsfile.read.filter.basic;
 
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
+public interface IDisableStatisticsTimeFilter extends ITimeFilter {
 
-public abstract class SeriesSourceNode extends SourceNode {
-  protected SeriesSourceNode(PlanNodeId id) {
-    super(id);
+  default boolean satisfyStartEndTime(long startTime, long endTime) {
+    return true;
   }
 
-  public abstract PartialPath getPartitionPath();
-
-    public abstract Expression getPushDownPredicate();
+  default boolean containStartEndTime(long startTime, long endTime) {
+    return false;
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/IDisableStatisticsValueFilter.java
similarity index 62%
copy from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
copy to 
iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/IDisableStatisticsValueFilter.java
index a87d5970766..9de9704ad42 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/IDisableStatisticsValueFilter.java
@@ -17,18 +17,17 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.queryengine.plan.planner.plan.node.source;
+package org.apache.iotdb.tsfile.read.filter.basic;
 
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
+import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
 
-public abstract class SeriesSourceNode extends SourceNode {
-  protected SeriesSourceNode(PlanNodeId id) {
-    super(id);
-  }
+public interface IDisableStatisticsValueFilter extends IValueFilter {
 
-  public abstract PartialPath getPartitionPath();
+  default boolean satisfy(Statistics statistics) {
+    return true;
+  }
 
-    public abstract Expression getPushDownPredicate();
+  default boolean allSatisfy(Statistics statistics) {
+    return false;
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/ITimeFilter.java
similarity index 62%
copy from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
copy to 
iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/ITimeFilter.java
index a87d5970766..2c96c897f2e 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/ITimeFilter.java
@@ -17,18 +17,17 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.queryengine.plan.planner.plan.node.source;
+package org.apache.iotdb.tsfile.read.filter.basic;
 
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
+import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
 
-public abstract class SeriesSourceNode extends SourceNode {
-  protected SeriesSourceNode(PlanNodeId id) {
-    super(id);
-  }
+public interface ITimeFilter extends Filter {
 
-  public abstract PartialPath getPartitionPath();
+  default boolean satisfy(Statistics statistics) {
+    return satisfyStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
+  }
 
-    public abstract Expression getPushDownPredicate();
+  default boolean allSatisfy(Statistics statistics) {
+    return containStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
+  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/IValueFilter.java
similarity index 62%
copy from 
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
copy to 
iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/IValueFilter.java
index a87d5970766..11456d95062 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/source/SeriesSourceNode.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/basic/IValueFilter.java
@@ -17,18 +17,25 @@
  * under the License.
  */
 
-package org.apache.iotdb.db.queryengine.plan.planner.plan.node.source;
+package org.apache.iotdb.tsfile.read.filter.basic;
 
-import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.queryengine.plan.expression.Expression;
-import org.apache.iotdb.db.queryengine.plan.planner.plan.node.PlanNodeId;
+import org.apache.iotdb.tsfile.read.common.TimeRange;
 
-public abstract class SeriesSourceNode extends SourceNode {
-  protected SeriesSourceNode(PlanNodeId id) {
-    super(id);
+import java.util.Collections;
+import java.util.List;
+
+public interface IValueFilter extends Filter {
+
+  default boolean satisfyStartEndTime(long startTime, long endTime) {
+    return true;
   }
 
-  public abstract PartialPath getPartitionPath();
+  default boolean containStartEndTime(long startTime, long endTime) {
+    return false;
+  }
 
-    public abstract Expression getPushDownPredicate();
+  @Override
+  default List<TimeRange> getTimeRanges() {
+    return Collections.emptyList();
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
index 54dc5e333e2..367ed56c66b 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
@@ -19,14 +19,14 @@
 
 package org.apache.iotdb.tsfile.read.filter.operator;
 
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
 import org.apache.iotdb.tsfile.read.common.TimeRange;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
+import org.apache.iotdb.tsfile.read.filter.basic.ITimeFilter;
 
 import java.util.Collections;
 import java.util.List;
 
-public class GroupByFilter implements Filter {
+public class GroupByFilter implements ITimeFilter {
 
   protected long interval;
   protected long slidingStep;
@@ -45,16 +45,6 @@ public class GroupByFilter implements Filter {
     this.endTime = endTime;
   }
 
-  @Override
-  public boolean satisfy(Statistics statistics) {
-    return satisfyStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
-  }
-
-  @Override
-  public boolean allSatisfy(Statistics statistics) {
-    return containStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
-  }
-
   @Override
   public boolean satisfy(long time, Object value) {
     if (time < startTime || time >= endTime) {
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/TimeFilterOperators.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/TimeFilterOperators.java
index 74bfb70cadf..8e6bc533903 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/TimeFilterOperators.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/TimeFilterOperators.java
@@ -19,13 +19,13 @@
 
 package org.apache.iotdb.tsfile.read.filter.operator;
 
-import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
 import org.apache.iotdb.tsfile.read.common.TimeRange;
 import org.apache.iotdb.tsfile.read.filter.basic.ColumnCompareFilter;
 import org.apache.iotdb.tsfile.read.filter.basic.ColumnRangeFilter;
 import org.apache.iotdb.tsfile.read.filter.basic.ColumnSetFilter;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.TimeFilter;
+import org.apache.iotdb.tsfile.read.filter.basic.IDisableStatisticsTimeFilter;
+import org.apache.iotdb.tsfile.read.filter.basic.ITimeFilter;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -37,7 +37,7 @@ import java.util.Set;
 
 /**
  * These are the time column operators in a filter predicate expression tree. 
They are constructed
- * by using the methods in {@link TimeFilter}
+ * by using the methods in {@link 
org.apache.iotdb.tsfile.read.filter.factory.TimeFilter}
  */
 public final class TimeFilterOperators {
 
@@ -46,7 +46,8 @@ public final class TimeFilterOperators {
   }
 
   // base class for TimeEq, TimeNotEq, TimeLt, TimeGt, TimeLtEq, TimeGtEq
-  abstract static class TimeColumnCompareFilter extends 
ColumnCompareFilter<Long> {
+  abstract static class TimeColumnCompareFilter extends 
ColumnCompareFilter<Long>
+      implements ITimeFilter {
 
     private final String toString;
 
@@ -62,16 +63,6 @@ public final class TimeFilterOperators {
     public String toString() {
       return toString;
     }
-
-    @Override
-    public boolean satisfy(Statistics statistics) {
-      return satisfyStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
-    }
-
-    @Override
-    public boolean allSatisfy(Statistics statistics) {
-      return containStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
-    }
   }
 
   public static final class TimeEq extends TimeColumnCompareFilter {
@@ -286,7 +277,8 @@ public final class TimeFilterOperators {
   }
 
   // base class for TimeBetweenAnd, TimeNotBetweenAnd
-  abstract static class TimeColumnRangeFilter extends ColumnRangeFilter<Long> {
+  abstract static class TimeColumnRangeFilter extends ColumnRangeFilter<Long>
+      implements ITimeFilter {
 
     private final String toString;
 
@@ -302,16 +294,6 @@ public final class TimeFilterOperators {
     public String toString() {
       return toString;
     }
-
-    @Override
-    public boolean satisfy(Statistics statistics) {
-      return satisfyStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
-    }
-
-    @Override
-    public boolean allSatisfy(Statistics statistics) {
-      return containStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
-    }
   }
 
   public static final class TimeBetweenAnd extends TimeColumnRangeFilter {
@@ -386,7 +368,8 @@ public final class TimeFilterOperators {
   }
 
   // base class for TimeIn, TimeNotIn
-  abstract static class TimeColumnSetFilter extends ColumnSetFilter<Long> {
+  abstract static class TimeColumnSetFilter extends ColumnSetFilter<Long>
+      implements IDisableStatisticsTimeFilter {
 
     private final String toString;
 
@@ -401,26 +384,6 @@ public final class TimeFilterOperators {
     public String toString() {
       return toString;
     }
-
-    @Override
-    public boolean satisfy(Statistics statistics) {
-      return satisfyStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
-    }
-
-    @Override
-    public boolean allSatisfy(Statistics statistics) {
-      return containStartEndTime(statistics.getStartTime(), 
statistics.getEndTime());
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return true;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return false;
-    }
   }
 
   public static final class TimeIn extends TimeColumnSetFilter {
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/ValueFilterOperators.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/ValueFilterOperators.java
index 46fd464948f..545256d6b1a 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/ValueFilterOperators.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/ValueFilterOperators.java
@@ -27,7 +27,8 @@ import 
org.apache.iotdb.tsfile.read.filter.basic.ColumnPatternMatchFilter;
 import org.apache.iotdb.tsfile.read.filter.basic.ColumnRangeFilter;
 import org.apache.iotdb.tsfile.read.filter.basic.ColumnSetFilter;
 import org.apache.iotdb.tsfile.read.filter.basic.Filter;
-import org.apache.iotdb.tsfile.read.filter.factory.ValueFilter;
+import org.apache.iotdb.tsfile.read.filter.basic.IDisableStatisticsValueFilter;
+import org.apache.iotdb.tsfile.read.filter.basic.IValueFilter;
 
 import java.util.Locale;
 import java.util.Objects;
@@ -35,7 +36,7 @@ import java.util.Set;
 
 /**
  * These are the value column operators in a filter predicate expression tree. 
They are constructed
- * by using the methods in {@link ValueFilter}
+ * by using the methods in {@link 
org.apache.iotdb.tsfile.read.filter.factory.ValueFilter}
  */
 public final class ValueFilterOperators {
 
@@ -45,7 +46,7 @@ public final class ValueFilterOperators {
 
   // base class for ValueEq, ValueNotEq, ValueLt, ValueGt, ValueLtEq, ValueGtEq
   abstract static class ValueColumnCompareFilter<T extends Comparable<T>>
-      extends ColumnCompareFilter<T> {
+      extends ColumnCompareFilter<T> implements IValueFilter {
 
     protected final String measurement;
     private final String toString;
@@ -66,16 +67,6 @@ public final class ValueFilterOperators {
     public String toString() {
       return toString;
     }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return true;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return false;
-    }
   }
 
   public static final class ValueEq<T extends Comparable<T>> extends 
ValueColumnCompareFilter<T> {
@@ -288,8 +279,8 @@ public final class ValueFilterOperators {
   }
 
   // base class for ValueBetweenAnd, ValueNotBetweenAnd
-  abstract static class ValueColumnRangeFilter<T extends Comparable<T>>
-      extends ColumnRangeFilter<T> {
+  abstract static class ValueColumnRangeFilter<T extends Comparable<T>> 
extends ColumnRangeFilter<T>
+      implements IValueFilter {
 
     protected final String measurement;
     private final String toString;
@@ -310,16 +301,6 @@ public final class ValueFilterOperators {
     public String toString() {
       return toString;
     }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return true;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return false;
-    }
   }
 
   public static final class ValueBetweenAnd<T extends Comparable<T>>
@@ -395,7 +376,8 @@ public final class ValueFilterOperators {
   }
 
   // base class for ValueIn, ValueNotIn
-  abstract static class ValueColumnSetFilter<T extends Comparable<T>> extends 
ColumnSetFilter<T> {
+  abstract static class ValueColumnSetFilter<T extends Comparable<T>> extends 
ColumnSetFilter<T>
+      implements IDisableStatisticsValueFilter {
 
     protected final String measurement;
     private final String toString;
@@ -416,26 +398,6 @@ public final class ValueFilterOperators {
     public String toString() {
       return toString;
     }
-
-    @Override
-    public boolean satisfy(Statistics statistics) {
-      return true;
-    }
-
-    @Override
-    public boolean allSatisfy(Statistics statistics) {
-      return false;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return true;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return false;
-    }
   }
 
   public static final class ValueIn<T extends Comparable<T>> extends 
ValueColumnSetFilter<T> {
@@ -473,7 +435,8 @@ public final class ValueFilterOperators {
   }
 
   // base class for ValueLike, ValueNotLike, ValueRegex, ValueNotRegex
-  abstract static class ValueColumnPatternMatchFilter extends 
ColumnPatternMatchFilter {
+  abstract static class ValueColumnPatternMatchFilter extends 
ColumnPatternMatchFilter
+      implements IDisableStatisticsValueFilter {
 
     protected final String measurement;
     private final String toString;
@@ -494,26 +457,6 @@ public final class ValueFilterOperators {
     public String toString() {
       return toString;
     }
-
-    @Override
-    public boolean satisfy(Statistics statistics) {
-      return true;
-    }
-
-    @Override
-    public boolean allSatisfy(Statistics statistics) {
-      return false;
-    }
-
-    @Override
-    public boolean satisfyStartEndTime(long startTime, long endTime) {
-      return true;
-    }
-
-    @Override
-    public boolean containStartEndTime(long startTime, long endTime) {
-      return false;
-    }
   }
 
   public static final class ValueLike extends ValueColumnPatternMatchFilter {

Reply via email to