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