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);
+  }
 }

Reply via email to