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 {
