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
