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

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

commit 6860a2dd6352bfb683a6b98ee3afba4ee855342e
Author: Minghui Liu <[email protected]>
AuthorDate: Wed Dec 6 00:01:13 2023 +0800

    fix betweenAnd skip error & add UT
---
 .../read/filter/operator/ValueFilterOperators.java |  4 ++--
 .../tsfile/read/filter/StatisticsFilterTest.java   | 23 ++++++++++++++++++++--
 2 files changed, 23 insertions(+), 4 deletions(-)

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 68369f54e31..0ce07ead494 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
@@ -477,8 +477,8 @@ public final class ValueFilterOperators {
         return false;
       }
 
-      return ((T) statistics.getMaxValue()).compareTo(min) >= 0
-          && ((T) statistics.getMinValue()).compareTo(max) <= 0;
+      return ((T) statistics.getMaxValue()).compareTo(min) < 0
+          || ((T) statistics.getMinValue()).compareTo(max) > 0;
     }
 
     @Override
diff --git 
a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/StatisticsFilterTest.java
 
b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/StatisticsFilterTest.java
index 2e69838605a..b334497af7b 100644
--- 
a/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/StatisticsFilterTest.java
+++ 
b/iotdb-core/tsfile/src/test/java/org/apache/iotdb/tsfile/read/filter/StatisticsFilterTest.java
@@ -213,7 +213,7 @@ public class StatisticsFilterTest {
 
   @Test
   public void testBetweenAnd() {
-    Filter timeBetweenAnd = TimeFilterApi.between(0, 20);
+    Filter timeBetweenAnd = TimeFilterApi.between(0L, 20L);
     Assert.assertFalse(timeBetweenAnd.canSkip(metadata1));
     Assert.assertTrue(timeBetweenAnd.canSkip(metadata2));
     Assert.assertFalse(timeBetweenAnd.canSkip(metadata3));
@@ -221,13 +221,32 @@ public class StatisticsFilterTest {
     Assert.assertFalse(timeBetweenAnd.allSatisfy(metadata2));
     Assert.assertTrue(timeBetweenAnd.allSatisfy(metadata3));
 
-    Filter timeNotBetweenAnd = TimeFilterApi.notBetween(0, 20);
+    Filter valueBetweenAnd = ValueFilterApi.between(0L, 20L);
+    Assert.assertFalse(valueBetweenAnd.canSkip(metadata1));
+    Assert.assertTrue(valueBetweenAnd.canSkip(metadata2));
+    Assert.assertFalse(valueBetweenAnd.canSkip(metadata3));
+    Assert.assertFalse(valueBetweenAnd.allSatisfy(metadata1));
+    Assert.assertFalse(valueBetweenAnd.allSatisfy(metadata2));
+    Assert.assertTrue(valueBetweenAnd.allSatisfy(metadata3));
+  }
+
+  @Test
+  public void testNotBetweenAnd() {
+    Filter timeNotBetweenAnd = TimeFilterApi.notBetween(0L, 20L);
     Assert.assertFalse(timeNotBetweenAnd.canSkip(metadata1));
     Assert.assertFalse(timeNotBetweenAnd.canSkip(metadata2));
     Assert.assertTrue(timeNotBetweenAnd.canSkip(metadata3));
     Assert.assertFalse(timeNotBetweenAnd.allSatisfy(metadata1));
     Assert.assertTrue(timeNotBetweenAnd.allSatisfy(metadata2));
     Assert.assertFalse(timeNotBetweenAnd.allSatisfy(metadata3));
+
+    Filter valueNotBetweenAnd = ValueFilterApi.notBetween(0L, 20L);
+    Assert.assertFalse(valueNotBetweenAnd.canSkip(metadata1));
+    Assert.assertFalse(valueNotBetweenAnd.canSkip(metadata2));
+    Assert.assertTrue(valueNotBetweenAnd.canSkip(metadata3));
+    Assert.assertFalse(valueNotBetweenAnd.allSatisfy(metadata1));
+    Assert.assertTrue(valueNotBetweenAnd.allSatisfy(metadata2));
+    Assert.assertFalse(valueNotBetweenAnd.allSatisfy(metadata3));
   }
 
   @Test

Reply via email to