This is an automated email from the ASF dual-hosted git repository.
chaow pushed a commit to branch rel/0.12
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.12 by this push:
new ac584a7 [To rel/0.12][IOTDB-2031] Fix incorrect result of descending
query with value filter in cluster (#4455)
ac584a7 is described below
commit ac584a715cfe1bf813719cf40a7ad86737de88c6
Author: BaiJian <[email protected]>
AuthorDate: Thu Nov 25 09:08:11 2021 +0800
[To rel/0.12][IOTDB-2031] Fix incorrect result of descending query with
value filter in cluster (#4455)
---
.../iotdb/cluster/query/reader/ClusterReaderFactory.java | 3 ++-
.../iotdb/db/query/reader/series/SeriesReaderByTimestamp.java | 5 ++---
.../java/org/apache/iotdb/tsfile/read/filter/TimeFilter.java | 11 +++++++++++
3 files changed, 15 insertions(+), 4 deletions(-)
diff --git
a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java
b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java
index 60a84d8..aeb70df 100644
---
a/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java
+++
b/cluster/src/main/java/org/apache/iotdb/cluster/query/reader/ClusterReaderFactory.java
@@ -1033,12 +1033,13 @@ public class ClusterReaderFactory {
} catch (CheckConsistencyException e) {
throw new StorageEngineException(e);
}
+ Filter timeFilter = TimeFilter.defaultTimeFilter(ascending);
SeriesReader seriesReader =
getSeriesReader(
path,
allSensors,
dataType,
- TimeFilter.gtEq(Long.MIN_VALUE),
+ timeFilter,
null,
context,
dataGroupMember.getHeader(),
diff --git
a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderByTimestamp.java
b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderByTimestamp.java
index 69d3248..df196ef 100644
---
a/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderByTimestamp.java
+++
b/server/src/main/java/org/apache/iotdb/db/query/reader/series/SeriesReaderByTimestamp.java
@@ -26,7 +26,7 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.statistics.Statistics;
import org.apache.iotdb.tsfile.read.common.BatchData;
import org.apache.iotdb.tsfile.read.filter.TimeFilter;
-import org.apache.iotdb.tsfile.read.filter.basic.UnaryFilter;
+import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import java.io.IOException;
import java.util.Set;
@@ -45,8 +45,7 @@ public class SeriesReaderByTimestamp implements
IReaderByTimestamp {
QueryDataSource dataSource,
TsFileFilter fileFilter,
boolean ascending) {
- UnaryFilter timeFilter =
- ascending ? TimeFilter.gtEq(Long.MIN_VALUE) :
TimeFilter.ltEq(Long.MAX_VALUE);
+ Filter timeFilter = TimeFilter.defaultTimeFilter(ascending);
seriesReader =
new SeriesReader(
seriesPath,
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/TimeFilter.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/TimeFilter.java
index e409a14..3e1b7c0 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/TimeFilter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/TimeFilter.java
@@ -122,4 +122,15 @@ public class TimeFilter {
super(filter);
}
}
+
+ /**
+ * returns a default time filter by whether it's an ascending query.
+ *
+ * <p>If the data is read in descending order, we use the largest timestamp
to set to the filter,
+ * so the filter should be TimeLtEq. If the data is read in ascending order,
we use the smallest
+ * timestamp to set to the filter, so the filter should be TimeGtEq.
+ */
+ public static Filter defaultTimeFilter(boolean ascending) {
+ return ascending ? TimeFilter.gtEq(Long.MIN_VALUE) :
TimeFilter.ltEq(Long.MAX_VALUE);
+ }
}