This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new fb1ce11c04f Adaptation of Filter generated by FreeMarker in TsFile
fb1ce11c04f is described below
commit fb1ce11c04f9278f86a2e984e2508d8c3c121a1f
Author: yuyong <[email protected]>
AuthorDate: Mon Aug 12 20:20:41 2024 +0800
Adaptation of Filter generated by FreeMarker in TsFile
---
.../queryengine/plan/execution/QueryExecution.java | 6 +++
.../predicate/ConvertPredicateToFilterVisitor.java | 59 ++++++++++++----------
.../predicate/ConvertPredicateToFilterVisitor.java | 41 ++++++++-------
.../reader/chunk/AlignedMemPageReaderTest.java | 38 +++++++++-----
.../read/reader/chunk/MemPageReaderTest.java | 6 ++-
.../AlignedSeriesScanPredicatePushDownTest.java | 4 +-
.../series/SeriesScanPredicatePushDownTest.java | 27 ++++++++--
pom.xml | 2 +-
8 files changed, 117 insertions(+), 66 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
index caa7b046507..d7cfc4bc240 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/QueryExecution.java
@@ -150,6 +150,7 @@ public class QueryExecution implements IQueryExecution {
T get() throws IoTDBException;
}
+ @Override
public void start() {
final long startTime = System.nanoTime();
if (skipExecute()) {
@@ -330,6 +331,7 @@ public class QueryExecution implements IQueryExecution {
}
// Stop the workers for this query
+ @Override
public void stop(Throwable t) {
// only stop once
if (stopped.compareAndSet(false, true) && this.scheduler != null) {
@@ -338,6 +340,7 @@ public class QueryExecution implements IQueryExecution {
}
// Stop the query and clean up all the resources this query occupied
+ @Override
public void stopAndCleanup() {
stop(null);
releaseResource();
@@ -384,6 +387,7 @@ public class QueryExecution implements IQueryExecution {
}
// Stop the query and clean up all the resources this query occupied
+ @Override
public void stopAndCleanup(Throwable t) {
stop(t);
releaseResource(t);
@@ -524,6 +528,7 @@ public class QueryExecution implements IQueryExecution {
*
* @return ExecutionStatus. Contains the QueryId and the TSStatus.
*/
+ @Override
public ExecutionResult getStatus() {
// Although we monitor the state to transition to RUNNING, the future will
return if any
// Terminated state is triggered
@@ -676,6 +681,7 @@ public class QueryExecution implements IQueryExecution {
return context;
}
+ @Override
public String toString() {
return String.format("QueryExecution[%s]", context.getQueryId());
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToFilterVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToFilterVisitor.java
index 9e011500f62..126313a46f0 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToFilterVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/expression/visitor/predicate/ConvertPredicateToFilterVisitor.java
@@ -49,7 +49,6 @@ import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.read.filter.basic.Filter;
import org.apache.tsfile.read.filter.factory.FilterFactory;
import org.apache.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.tsfile.read.filter.operator.ValueFilterOperators;
import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.write.schema.IMeasurementSchema;
@@ -106,18 +105,20 @@ public class ConvertPredicateToFilterVisitor
}
}
- private <T extends Comparable<T>> ValueFilterOperators.ValueNotIn<T>
constructNotInFilter(
+ private <T extends Comparable<T>> Filter constructNotInFilter(
PartialPath path, Set<String> stringValues, Context context) {
int measurementIndex = context.getMeasurementIndex(path.getMeasurement());
- Set<T> values = constructInSet(stringValues, context.getType(path));
- return ValueFilterApi.notIn(measurementIndex, values);
+ TSDataType dataType = context.getType(path);
+ Set<T> values = constructInSet(stringValues, dataType);
+ return ValueFilterApi.notIn(measurementIndex, values, dataType);
}
- private <T extends Comparable<T>> ValueFilterOperators.ValueIn<T>
constructInFilter(
+ private <T extends Comparable<T>> Filter constructInFilter(
PartialPath path, Set<String> stringValues, Context context) {
int measurementIndex = context.getMeasurementIndex(path.getMeasurement());
- Set<T> values = constructInSet(stringValues, context.getType(path));
- return ValueFilterApi.in(measurementIndex, values);
+ TSDataType dataType = context.getType(path);
+ Set<T> values = constructInSet(stringValues, dataType);
+ return ValueFilterApi.in(measurementIndex, values, dataType);
}
private <T extends Comparable<T>> Set<T> constructInSet(
@@ -141,8 +142,9 @@ public class ConvertPredicateToFilterVisitor
}
checkArgument(operand.getExpressionType().equals(ExpressionType.TIMESERIES));
- int measurementIndex =
- context.getMeasurementIndex(((TimeSeriesOperand)
operand).getPath().getMeasurement());
+ PartialPath path = ((TimeSeriesOperand) operand).getPath();
+ int measurementIndex = context.getMeasurementIndex(path.getMeasurement());
+ TSDataType dataType = context.getType(path);
return ValueFilterApi.isNotNull(measurementIndex);
}
@@ -154,12 +156,13 @@ public class ConvertPredicateToFilterVisitor
}
checkArgument(operand.getExpressionType().equals(ExpressionType.TIMESERIES));
- int measurementIndex =
- context.getMeasurementIndex(((TimeSeriesOperand)
operand).getPath().getMeasurement());
+ PartialPath path = ((TimeSeriesOperand) operand).getPath();
+ int measurementIndex = context.getMeasurementIndex(path.getMeasurement());
+ TSDataType dataType = context.getType(path);
if (likeExpression.isNot()) {
- return ValueFilterApi.notLike(measurementIndex,
likeExpression.getPattern());
+ return ValueFilterApi.notLike(measurementIndex,
likeExpression.getPattern(), dataType);
} else {
- return ValueFilterApi.like(measurementIndex,
likeExpression.getPattern());
+ return ValueFilterApi.like(measurementIndex,
likeExpression.getPattern(), dataType);
}
}
@@ -173,10 +176,12 @@ public class ConvertPredicateToFilterVisitor
checkArgument(operand.getExpressionType().equals(ExpressionType.TIMESERIES));
int measurementIndex =
context.getMeasurementIndex(((TimeSeriesOperand)
operand).getPath().getMeasurement());
+ PartialPath path = ((TimeSeriesOperand) operand).getPath();
+ TSDataType dataType = context.getType(path);
if (regularExpression.isNot()) {
- return ValueFilterApi.notRegexp(measurementIndex,
regularExpression.getPattern());
+ return ValueFilterApi.notRegexp(measurementIndex,
regularExpression.getPattern(), dataType);
} else {
- return ValueFilterApi.regexp(measurementIndex,
regularExpression.getPattern());
+ return ValueFilterApi.regexp(measurementIndex,
regularExpression.getPattern(), dataType);
}
}
@@ -255,21 +260,21 @@ public class ConvertPredicateToFilterVisitor
Context context) {
PartialPath path = ((TimeSeriesOperand) timeseriesOperand).getPath();
int measurementIndex = context.getMeasurementIndex(path.getMeasurement());
- T value = getValue(((ConstantOperand) constantOperand).getValueString(),
context.getType(path));
-
+ TSDataType dataType = context.getType(path);
+ T value = getValue(((ConstantOperand) constantOperand).getValueString(),
dataType);
switch (expressionType) {
case EQUAL_TO:
- return ValueFilterApi.eq(measurementIndex, value);
+ return ValueFilterApi.eq(measurementIndex, value, dataType);
case NON_EQUAL:
- return ValueFilterApi.notEq(measurementIndex, value);
+ return ValueFilterApi.notEq(measurementIndex, value, dataType);
case GREATER_THAN:
- return ValueFilterApi.gt(measurementIndex, value);
+ return ValueFilterApi.gt(measurementIndex, value, dataType);
case GREATER_EQUAL:
- return ValueFilterApi.gtEq(measurementIndex, value);
+ return ValueFilterApi.gtEq(measurementIndex, value, dataType);
case LESS_THAN:
- return ValueFilterApi.lt(measurementIndex, value);
+ return ValueFilterApi.lt(measurementIndex, value, dataType);
case LESS_EQUAL:
- return ValueFilterApi.ltEq(measurementIndex, value);
+ return ValueFilterApi.ltEq(measurementIndex, value, dataType);
default:
throw new UnsupportedOperationException(
String.format("Unsupported expression type %s", expressionType));
@@ -326,12 +331,12 @@ public class ConvertPredicateToFilterVisitor
if (minValue == maxValue) {
return isNot
- ? ValueFilterApi.notEq(measurementIndex, minValue)
- : ValueFilterApi.eq(measurementIndex, minValue);
+ ? ValueFilterApi.notEq(measurementIndex, minValue, dataType)
+ : ValueFilterApi.eq(measurementIndex, minValue, dataType);
}
return isNot
- ? ValueFilterApi.notBetween(measurementIndex, minValue, maxValue)
- : ValueFilterApi.between(measurementIndex, minValue, maxValue);
+ ? ValueFilterApi.notBetween(measurementIndex, minValue, maxValue,
dataType)
+ : ValueFilterApi.between(measurementIndex, minValue, maxValue,
dataType);
}
@SuppressWarnings("unchecked")
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/ConvertPredicateToFilterVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/ConvertPredicateToFilterVisitor.java
index 1480601a070..d6ba6c8b8a3 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/ConvertPredicateToFilterVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/analyzer/predicate/ConvertPredicateToFilterVisitor.java
@@ -43,13 +43,14 @@ import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SearchedCaseExpre
import
org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SimpleCaseExpression;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.StringLiteral;
import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SymbolReference;
+import
org.apache.iotdb.db.queryengine.plan.relational.type.InternalTypeManager;
import org.apache.tsfile.common.conf.TSFileConfig;
+import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.read.common.type.Type;
import org.apache.tsfile.read.filter.basic.Filter;
import org.apache.tsfile.read.filter.factory.FilterFactory;
import org.apache.tsfile.read.filter.factory.ValueFilterApi;
-import org.apache.tsfile.read.filter.operator.ValueFilterOperators;
import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.DateUtils;
@@ -102,11 +103,13 @@ public class ConvertPredicateToFilterVisitor
context);
}
- private <T extends Comparable<T>> ValueFilterOperators.ValueIn<T>
constructInFilter(
+ private <T extends Comparable<T>> Filter constructInFilter(
SymbolReference operand, List<Literal> values, Context context) {
int measurementIndex = context.getMeasurementIndex((operand).getName());
- Set<T> inSet = constructInSet(values,
context.getType(Symbol.from(operand)));
- return ValueFilterApi.in(measurementIndex, inSet);
+ Type type = context.getType(Symbol.from(operand));
+ TSDataType dataType = InternalTypeManager.getTSDataType(type);
+ Set<T> inSet = constructInSet(values, type);
+ return ValueFilterApi.in(measurementIndex, inSet, dataType);
}
private <T extends Comparable<T>> Set<T> constructInSet(List<Literal>
literals, Type dataType) {
@@ -130,22 +133,22 @@ public class ConvertPredicateToFilterVisitor
int measurementIndex =
context.getMeasurementIndex(symbolReference.getName());
Type type = context.getType(Symbol.from(symbolReference));
-
T value = getValue(literal, type);
+ TSDataType dataType = InternalTypeManager.getTSDataType(type);
switch (operator) {
case EQUAL:
- return ValueFilterApi.eq(measurementIndex, value);
+ return ValueFilterApi.eq(measurementIndex, value, dataType);
case NOT_EQUAL:
- return ValueFilterApi.notEq(measurementIndex, value);
+ return ValueFilterApi.notEq(measurementIndex, value, dataType);
case GREATER_THAN:
- return ValueFilterApi.gt(measurementIndex, value);
+ return ValueFilterApi.gt(measurementIndex, value, dataType);
case GREATER_THAN_OR_EQUAL:
- return ValueFilterApi.gtEq(measurementIndex, value);
+ return ValueFilterApi.gtEq(measurementIndex, value, dataType);
case LESS_THAN:
- return ValueFilterApi.lt(measurementIndex, value);
+ return ValueFilterApi.lt(measurementIndex, value, dataType);
case LESS_THAN_OR_EQUAL:
- return ValueFilterApi.ltEq(measurementIndex, value);
+ return ValueFilterApi.ltEq(measurementIndex, value, dataType);
default:
throw new IllegalArgumentException(
String.format("Unsupported comparison operator %s", operator));
@@ -205,7 +208,9 @@ public class ConvertPredicateToFilterVisitor
checkArgument(context.isMeasurementColumn(operand));
int measurementIndex = context.getMeasurementIndex(operand.getName());
Expression pattern = node.getPattern();
- return ValueFilterApi.like(measurementIndex, getStringValue(pattern));
+ Type type = context.getType(Symbol.from(operand));
+ TSDataType dataType = InternalTypeManager.getTSDataType(type);
+ return ValueFilterApi.like(measurementIndex, getStringValue(pattern),
dataType);
}
@Override
@@ -317,17 +322,17 @@ public class ConvertPredicateToFilterVisitor
Expression maxValue,
ConvertPredicateToFilterVisitor.Context context) {
int measurementIndex =
context.getMeasurementIndex(measurementReference.getName());
- Type dataType = context.getType(Symbol.from(measurementReference));
-
+ Type type = context.getType(Symbol.from(measurementReference));
+ TSDataType dataType = InternalTypeManager.getTSDataType(type);
checkArgument(isLiteral(minValue) && isLiteral(maxValue));
- T min = getValue((Literal) minValue, dataType);
- T max = getValue((Literal) maxValue, dataType);
+ T min = getValue((Literal) minValue, type);
+ T max = getValue((Literal) maxValue, type);
if (min.compareTo(max) == 0) {
- return ValueFilterApi.eq(measurementIndex, min);
+ return ValueFilterApi.eq(measurementIndex, min, dataType);
}
- return ValueFilterApi.between(measurementIndex, min, max);
+ return ValueFilterApi.between(measurementIndex, min, max, dataType);
}
public static double getDoubleValue(Expression expression) {
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/AlignedMemPageReaderTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/AlignedMemPageReaderTest.java
index 7f1af66ad05..28c78226417 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/AlignedMemPageReaderTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/AlignedMemPageReaderTest.java
@@ -38,6 +38,8 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Optional;
+import static
org.apache.tsfile.read.filter.factory.ValueFilterApi.DEFAULT_MEASUREMENT_INDEX;
+
public class AlignedMemPageReaderTest {
private static final TsBlock tsBlock1;
@@ -138,13 +140,15 @@ public class AlignedMemPageReaderTest {
Filter globalTimeFilter = TimeFilterApi.gtEq(0L);
MemAlignedPageReader alignedPageReader1 = generateAlignedPageReader();
alignedPageReader1.addRecordFilter(globalTimeFilter);
- alignedPageReader1.addRecordFilter(ValueFilterApi.gtEq(50));
+ alignedPageReader1.addRecordFilter(
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 50, TSDataType.INT32));
TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
Assert.assertEquals(50, tsBlock1.getPositionCount());
MemAlignedPageReader alignedPageReader2 =
generateSingleColumnAlignedPageReader();
alignedPageReader2.addRecordFilter(globalTimeFilter);
- alignedPageReader2.addRecordFilter(ValueFilterApi.gtEq(50));
+ alignedPageReader2.addRecordFilter(
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 50, TSDataType.INT32));
TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
Assert.assertEquals(40, tsBlock2.getPositionCount());
}
@@ -154,7 +158,8 @@ public class AlignedMemPageReaderTest {
Filter globalTimeFilter = TimeFilterApi.gtEq(0L);
MemAlignedPageReader alignedPageReader1 = generateAlignedPageReader();
alignedPageReader1.addRecordFilter(globalTimeFilter);
- alignedPageReader1.addRecordFilter(ValueFilterApi.gtEq(50));
+ alignedPageReader1.addRecordFilter(
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 50, TSDataType.INT32));
alignedPageReader1.setLimitOffset(new PaginationController(10, 10));
TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
Assert.assertEquals(10, tsBlock1.getPositionCount());
@@ -163,7 +168,8 @@ public class AlignedMemPageReaderTest {
MemAlignedPageReader alignedPageReader2 =
generateSingleColumnAlignedPageReader();
alignedPageReader2.addRecordFilter(globalTimeFilter);
- alignedPageReader2.addRecordFilter(ValueFilterApi.gtEq(50));
+ alignedPageReader2.addRecordFilter(
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 50, TSDataType.INT32));
alignedPageReader2.setLimitOffset(new PaginationController(10, 10));
TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
Assert.assertEquals(10, tsBlock2.getPositionCount());
@@ -176,13 +182,15 @@ public class AlignedMemPageReaderTest {
Filter globalTimeFilter = TimeFilterApi.gtEq(50L);
MemAlignedPageReader alignedPageReader1 = generateAlignedPageReader();
alignedPageReader1.addRecordFilter(globalTimeFilter);
- alignedPageReader1.addRecordFilter(ValueFilterApi.gtEq(0));
+ alignedPageReader1.addRecordFilter(
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 0, TSDataType.INT32));
TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
Assert.assertEquals(50, tsBlock1.getPositionCount());
MemAlignedPageReader alignedPageReader2 =
generateSingleColumnAlignedPageReader();
alignedPageReader2.addRecordFilter(globalTimeFilter);
- alignedPageReader2.addRecordFilter(ValueFilterApi.gtEq(0));
+ alignedPageReader2.addRecordFilter(
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 0, TSDataType.INT32));
TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
Assert.assertEquals(40, tsBlock2.getPositionCount());
}
@@ -192,7 +200,8 @@ public class AlignedMemPageReaderTest {
Filter globalTimeFilter = TimeFilterApi.gtEq(50L);
MemAlignedPageReader alignedPageReader1 = generateAlignedPageReader();
alignedPageReader1.addRecordFilter(globalTimeFilter);
- alignedPageReader1.addRecordFilter(ValueFilterApi.gtEq(0));
+ alignedPageReader1.addRecordFilter(
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 0, TSDataType.INT32));
alignedPageReader1.setLimitOffset(new PaginationController(10, 10));
TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
Assert.assertEquals(10, tsBlock1.getPositionCount());
@@ -201,7 +210,8 @@ public class AlignedMemPageReaderTest {
MemAlignedPageReader alignedPageReader2 =
generateSingleColumnAlignedPageReader();
alignedPageReader2.addRecordFilter(globalTimeFilter);
- alignedPageReader2.addRecordFilter(ValueFilterApi.gtEq(0));
+ alignedPageReader2.addRecordFilter(
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 0, TSDataType.INT32));
alignedPageReader2.setLimitOffset(new PaginationController(10, 10));
TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
Assert.assertEquals(10, tsBlock2.getPositionCount());
@@ -214,13 +224,15 @@ public class AlignedMemPageReaderTest {
Filter globalTimeFilter = TimeFilterApi.gtEq(30L);
MemAlignedPageReader alignedPageReader1 = generateAlignedPageReader();
alignedPageReader1.addRecordFilter(globalTimeFilter);
- alignedPageReader1.addRecordFilter(ValueFilterApi.lt(80));
+ alignedPageReader1.addRecordFilter(
+ ValueFilterApi.lt(DEFAULT_MEASUREMENT_INDEX, 80, TSDataType.INT32));
TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
Assert.assertEquals(50, tsBlock1.getPositionCount());
MemAlignedPageReader alignedPageReader2 =
generateSingleColumnAlignedPageReader();
alignedPageReader2.addRecordFilter(globalTimeFilter);
- alignedPageReader2.addRecordFilter(ValueFilterApi.lt(80));
+ alignedPageReader2.addRecordFilter(
+ ValueFilterApi.lt(DEFAULT_MEASUREMENT_INDEX, 80, TSDataType.INT32));
TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
Assert.assertEquals(50, tsBlock2.getPositionCount());
}
@@ -230,7 +242,8 @@ public class AlignedMemPageReaderTest {
Filter globalTimeFilter = TimeFilterApi.gtEq(50L);
MemAlignedPageReader alignedPageReader1 = generateAlignedPageReader();
alignedPageReader1.addRecordFilter(globalTimeFilter);
- alignedPageReader1.addRecordFilter(ValueFilterApi.lt(80));
+ alignedPageReader1.addRecordFilter(
+ ValueFilterApi.lt(DEFAULT_MEASUREMENT_INDEX, 80, TSDataType.INT32));
alignedPageReader1.setLimitOffset(new PaginationController(10, 10));
TsBlock tsBlock1 = alignedPageReader1.getAllSatisfiedData();
Assert.assertEquals(10, tsBlock1.getPositionCount());
@@ -239,7 +252,8 @@ public class AlignedMemPageReaderTest {
MemAlignedPageReader alignedPageReader2 =
generateSingleColumnAlignedPageReader();
alignedPageReader2.addRecordFilter(globalTimeFilter);
- alignedPageReader2.addRecordFilter(ValueFilterApi.lt(80));
+ alignedPageReader2.addRecordFilter(
+ ValueFilterApi.lt(DEFAULT_MEASUREMENT_INDEX, 80, TSDataType.INT32));
alignedPageReader2.setLimitOffset(new PaginationController(10, 10));
TsBlock tsBlock2 = alignedPageReader2.getAllSatisfiedData();
Assert.assertEquals(10, tsBlock2.getPositionCount());
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReaderTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReaderTest.java
index ec0a7cebaf7..f9a13a71ad8 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReaderTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReaderTest.java
@@ -36,6 +36,8 @@ import java.io.IOException;
import java.util.Collections;
import java.util.Optional;
+import static
org.apache.tsfile.read.filter.factory.ValueFilterApi.DEFAULT_MEASUREMENT_INDEX;
+
public class MemPageReaderTest {
private static final TsBlock tsBlock;
@@ -110,7 +112,7 @@ public class MemPageReaderTest {
public void testFilter() throws IOException {
IPageReader pageReader = generatePageReader();
pageReader.addRecordFilter(TimeFilterApi.gtEq(50));
- pageReader.addRecordFilter(ValueFilterApi.lt(80));
+ pageReader.addRecordFilter(ValueFilterApi.lt(DEFAULT_MEASUREMENT_INDEX,
80, TSDataType.INT32));
TsBlock tsBlock = pageReader.getAllSatisfiedData();
@@ -121,7 +123,7 @@ public class MemPageReaderTest {
public void testFilterAndLimitOffset() throws IOException {
IPageReader pageReader = generatePageReader();
pageReader.addRecordFilter(TimeFilterApi.gtEq(50));
- pageReader.addRecordFilter(ValueFilterApi.lt(80));
+ pageReader.addRecordFilter(ValueFilterApi.lt(DEFAULT_MEASUREMENT_INDEX,
80, TSDataType.INT32));
pageReader.setLimitOffset(new PaginationController(10, 10));
TsBlock tsBlock = pageReader.getAllSatisfiedData();
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanPredicatePushDownTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanPredicatePushDownTest.java
index 849ea3f67d5..9a735ab7bec 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanPredicatePushDownTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/AlignedSeriesScanPredicatePushDownTest.java
@@ -187,7 +187,9 @@ public class AlignedSeriesScanPredicatePushDownTest extends
AbstractAlignedSerie
AlignedSeriesScanUtil seriesScanUtil =
getAlignedSeriesScanUtil(
TimeFilterApi.gt(10),
- FilterFactory.and(ValueFilterApi.gtEq(0, 20), ValueFilterApi.lt(1,
30)));
+ FilterFactory.and(
+ ValueFilterApi.gtEq(0, 20, TSDataType.INT32),
+ ValueFilterApi.lt(1, 30, TSDataType.INT32)));
// File 1 skipped
// File 2 skipped
diff --git
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanPredicatePushDownTest.java
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanPredicatePushDownTest.java
index 5fee58ca06f..4b026873d8c 100644
---
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanPredicatePushDownTest.java
+++
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/series/SeriesScanPredicatePushDownTest.java
@@ -39,6 +39,8 @@ import org.junit.Test;
import java.io.IOException;
import java.util.Collections;
+import static
org.apache.tsfile.read.filter.factory.ValueFilterApi.DEFAULT_MEASUREMENT_INDEX;
+
public class SeriesScanPredicatePushDownTest extends AbstractSeriesScanTest {
private SeriesScanUtil getSeriesScanUtil(Filter globalTimeFilter, Filter
pushDownFilter)
@@ -156,7 +158,10 @@ public class SeriesScanPredicatePushDownTest extends
AbstractSeriesScanTest {
@Test
public void testSkipFileByPushDownFilter() throws IllegalPathException,
IOException {
- SeriesScanUtil seriesScanUtil = getSeriesScanUtil(TimeFilterApi.gt(0),
ValueFilterApi.gtEq(10));
+ SeriesScanUtil seriesScanUtil =
+ getSeriesScanUtil(
+ TimeFilterApi.gt(0),
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 10,
TSDataType.INT32));
checkFile1Skipped(seriesScanUtil);
}
@@ -185,7 +190,10 @@ public class SeriesScanPredicatePushDownTest extends
AbstractSeriesScanTest {
@Test
public void testSkipChunkByPushDownFilter() throws IllegalPathException,
IOException {
- SeriesScanUtil seriesScanUtil = getSeriesScanUtil(TimeFilterApi.gt(0),
ValueFilterApi.gtEq(20));
+ SeriesScanUtil seriesScanUtil =
+ getSeriesScanUtil(
+ TimeFilterApi.gt(0),
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 20,
TSDataType.INT32));
checkFile2Chunk1Skipped(seriesScanUtil);
}
@@ -224,7 +232,10 @@ public class SeriesScanPredicatePushDownTest extends
AbstractSeriesScanTest {
@Test
public void testSkipPageByPushDownFilter() throws IllegalPathException,
IOException {
- SeriesScanUtil seriesScanUtil = getSeriesScanUtil(TimeFilterApi.gt(0),
ValueFilterApi.gtEq(40));
+ SeriesScanUtil seriesScanUtil =
+ getSeriesScanUtil(
+ TimeFilterApi.gt(0),
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 40,
TSDataType.INT32));
checkFile1AndFile2Skipped(seriesScanUtil);
// File 3 - Chunk 1 - Page 1 skipped
@@ -262,7 +273,10 @@ public class SeriesScanPredicatePushDownTest extends
AbstractSeriesScanTest {
@Test
public void testSkipMergeReaderPointByPushDownFilter() throws
IllegalPathException, IOException {
- SeriesScanUtil seriesScanUtil = getSeriesScanUtil(TimeFilterApi.gt(0),
ValueFilterApi.gtEq(55));
+ SeriesScanUtil seriesScanUtil =
+ getSeriesScanUtil(
+ TimeFilterApi.gt(0),
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 55,
TSDataType.INT32));
checkFile1AndFile2AndMergeReaderPointSkipped(seriesScanUtil);
}
@@ -308,7 +322,10 @@ public class SeriesScanPredicatePushDownTest extends
AbstractSeriesScanTest {
@Test
public void testSkipMergeReaderByPushDownFilter() throws
IllegalPathException, IOException {
- SeriesScanUtil seriesScanUtil = getSeriesScanUtil(TimeFilterApi.gt(0),
ValueFilterApi.gtEq(60));
+ SeriesScanUtil seriesScanUtil =
+ getSeriesScanUtil(
+ TimeFilterApi.gt(0),
+ ValueFilterApi.gtEq(DEFAULT_MEASUREMENT_INDEX, 60,
TSDataType.INT32));
checkFile1AndFile2AndFile3Chunk1Skipped(seriesScanUtil);
diff --git a/pom.xml b/pom.xml
index ecaeac7d6f0..b05366f7e1c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -166,7 +166,7 @@
<thrift.version>0.14.1</thrift.version>
<xz.version>1.9</xz.version>
<zstd-jni.version>1.5.6-3</zstd-jni.version>
- <tsfile.version>1.2.0-8aaedb22-SNAPSHOT</tsfile.version>
+ <tsfile.version>1.2.0-b31fb57c-SNAPSHOT</tsfile.version>
</properties>
<!--
if we claim dependencies in dependencyManagement, then we do not claim