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

jackietien pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new e11bdf06 Fix value filter allSatisfy bug
e11bdf06 is described below

commit e11bdf06fb0cf4adcc68dc93aa374bd2150062ea
Author: liuminghui233 <[email protected]>
AuthorDate: Thu Feb 29 17:28:44 2024 +0800

    Fix value filter allSatisfy bug
---
 .../java/org/apache/tsfile/read/filter/basic/ValueFilter.java     | 4 ++++
 .../org/apache/tsfile/read/filter/factory/ValueFilterApi.java     | 8 ++++++++
 2 files changed, 12 insertions(+)

diff --git 
a/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/ValueFilter.java 
b/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/ValueFilter.java
index 2fa8cba5..aba67d48 100644
--- a/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/ValueFilter.java
+++ b/tsfile/src/main/java/org/apache/tsfile/read/filter/basic/ValueFilter.java
@@ -88,6 +88,10 @@ public abstract class ValueFilter extends Filter {
 
   @Override
   public boolean allSatisfy(IMetadata metadata) {
+    if (metadata.hasNullValue(measurementIndex)) {
+      // null not satisfy any filter, except IS NULL
+      return false;
+    }
     Optional<Statistics<? extends Serializable>> statistics =
         metadata.getMeasurementStatistics(measurementIndex);
     return statistics.map(this::allSatisfy).orElse(false);
diff --git 
a/tsfile/src/main/java/org/apache/tsfile/read/filter/factory/ValueFilterApi.java
 
b/tsfile/src/main/java/org/apache/tsfile/read/filter/factory/ValueFilterApi.java
index fbed7326..456b8ea2 100644
--- 
a/tsfile/src/main/java/org/apache/tsfile/read/filter/factory/ValueFilterApi.java
+++ 
b/tsfile/src/main/java/org/apache/tsfile/read/filter/factory/ValueFilterApi.java
@@ -136,6 +136,10 @@ public class ValueFilterApi {
     return regexp(measurementIndex, 
RegexUtils.parseLikePatternToRegex(likePattern));
   }
 
+  public static ValueRegexp like(int measurementIndex, Pattern pattern) {
+    return regexp(measurementIndex, pattern);
+  }
+
   public static ValueNotRegexp notLike(String likePattern) {
     return notRegexp(DEFAULT_MEASUREMENT_INDEX, 
RegexUtils.parseLikePatternToRegex(likePattern));
   }
@@ -144,6 +148,10 @@ public class ValueFilterApi {
     return notRegexp(measurementIndex, 
RegexUtils.parseLikePatternToRegex(likePattern));
   }
 
+  public static ValueNotRegexp notLike(int measurementIndex, Pattern pattern) {
+    return notRegexp(measurementIndex, pattern);
+  }
+
   public static ValueRegexp regexp(String regex) {
     return new ValueRegexp(DEFAULT_MEASUREMENT_INDEX, 
RegexUtils.compileRegex(regex));
   }

Reply via email to