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

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

commit d2094563a78a6c6b35d752015c4d4d72b9ab3dcb
Author: Minghui Liu <[email protected]>
AuthorDate: Mon Nov 20 20:21:05 2023 +0800

    add equals() & hashCode() for filter
---
 .../tsfile/read/filter/operator/GroupByFilter.java | 17 ++++++
 .../read/filter/operator/GroupByMonthFilter.java   | 31 +++++++++++
 .../iotdb/tsfile/read/filter/operator/Not.java     | 13 +++++
 .../read/filter/operator/ValueFilterOperators.java | 65 ++++++++++++++++++++--
 .../filter/operator/base/BinaryLogicalFilter.java  | 13 +++++
 .../filter/operator/base/ColumnCompareFilter.java  | 15 +++++
 .../operator/base/ColumnPatternMatchFilter.java    | 13 +++++
 .../filter/operator/base/ColumnRangeFilter.java    | 13 +++++
 .../read/filter/operator/base/ColumnSetFilter.java | 15 ++++-
 9 files changed, 189 insertions(+), 6 deletions(-)

diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
index 367ed56c66b..22a1cec9655 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByFilter.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.tsfile.read.filter.basic.ITimeFilter;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 public class GroupByFilter implements ITimeFilter {
 
@@ -103,4 +104,20 @@ public class GroupByFilter implements ITimeFilter {
   public Filter reverse() {
     throw new UnsupportedOperationException();
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    GroupByFilter that = (GroupByFilter) o;
+    return interval == that.interval
+        && slidingStep == that.slidingStep
+        && startTime == that.startTime
+        && endTime == that.endTime;
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(interval, slidingStep, startTime, endTime);
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByMonthFilter.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByMonthFilter.java
index ba72d6c4955..b42f70fe39f 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByMonthFilter.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/GroupByMonthFilter.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.tsfile.utils.TimeDuration;
 
 import java.util.Arrays;
 import java.util.Calendar;
+import java.util.Objects;
 import java.util.TimeZone;
 import java.util.concurrent.TimeUnit;
 
@@ -180,4 +181,34 @@ public class GroupByMonthFilter extends GroupByFilter {
               - startTime;
     }
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    if (!super.equals(o)) return false;
+    GroupByMonthFilter that = (GroupByMonthFilter) o;
+    return originalStartTime == that.originalStartTime
+        && originalEndTime == that.originalEndTime
+        && originalSlidingStep.equals(that.originalSlidingStep)
+        && originalInterval.equals(that.originalInterval)
+        && timeZone.equals(that.timeZone)
+        && currPrecision == that.currPrecision
+        && Arrays.equals(startTimes, that.startTimes);
+  }
+
+  @Override
+  public int hashCode() {
+    int result =
+        Objects.hash(
+            super.hashCode(),
+            originalSlidingStep,
+            originalInterval,
+            timeZone,
+            originalStartTime,
+            originalEndTime,
+            currPrecision);
+    result = 31 * result + Arrays.hashCode(startTimes);
+    return result;
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Not.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Not.java
index 3b4d738f36d..165bf8fb9ab 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Not.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/Not.java
@@ -102,4 +102,17 @@ public class Not implements Filter {
   public Filter reverse() {
     return filter;
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    Not not = (Not) o;
+    return filter.equals(not.filter);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(filter);
+  }
 }
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 2129b4ad80b..8edf9e47cad 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
@@ -68,6 +68,19 @@ public final class ValueFilterOperators {
     public String toString() {
       return toString;
     }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) return true;
+      if (o == null || getClass() != o.getClass()) return false;
+      ValueColumnCompareFilter<?> that = (ValueColumnCompareFilter<?>) o;
+      return measurement.equals(that.measurement);
+    }
+
+    @Override
+    public int hashCode() {
+      return Objects.hash(measurement);
+    }
   }
 
   public static final class ValueEq<T extends Comparable<T>> extends 
ValueColumnCompareFilter<T> {
@@ -302,6 +315,20 @@ public final class ValueFilterOperators {
     public String toString() {
       return toString;
     }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) return true;
+      if (o == null || getClass() != o.getClass()) return false;
+      if (!super.equals(o)) return false;
+      ValueColumnRangeFilter<?> that = (ValueColumnRangeFilter<?>) o;
+      return measurement.equals(that.measurement);
+    }
+
+    @Override
+    public int hashCode() {
+      return Objects.hash(super.hashCode(), measurement);
+    }
   }
 
   public static final class ValueBetweenAnd<T extends Comparable<T>>
@@ -377,7 +404,7 @@ public final class ValueFilterOperators {
   }
 
   // base class for ValueIn, ValueNotIn
-  abstract static class ValueColumnSetFilter<T extends Comparable<T>> extends 
ColumnSetFilter<T>
+  abstract static class ValueColumnSetFilter<T> extends ColumnSetFilter<T>
       implements IDisableStatisticsValueFilter {
 
     protected final String measurement;
@@ -399,9 +426,23 @@ public final class ValueFilterOperators {
     public String toString() {
       return toString;
     }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) return true;
+      if (o == null || getClass() != o.getClass()) return false;
+      if (!super.equals(o)) return false;
+      ValueColumnSetFilter<?> that = (ValueColumnSetFilter<?>) o;
+      return measurement.equals(that.measurement);
+    }
+
+    @Override
+    public int hashCode() {
+      return Objects.hash(super.hashCode(), measurement);
+    }
   }
 
-  public static final class ValueIn<T extends Comparable<T>> extends 
ValueColumnSetFilter<T> {
+  public static final class ValueIn<T> extends ValueColumnSetFilter<T> {
 
     public ValueIn(String measurement, Set<T> candidates) {
       super(measurement, candidates);
@@ -409,7 +450,7 @@ public final class ValueFilterOperators {
 
     @Override
     public boolean satisfy(long time, Object value) {
-      return candidates.contains((T) value);
+      return candidates.contains(value);
     }
 
     @Override
@@ -418,7 +459,7 @@ public final class ValueFilterOperators {
     }
   }
 
-  public static final class ValueNotIn<T extends Comparable<T>> extends 
ValueColumnSetFilter<T> {
+  public static final class ValueNotIn<T> extends ValueColumnSetFilter<T> {
 
     public ValueNotIn(String measurement, Set<T> candidates) {
       super(measurement, candidates);
@@ -426,7 +467,7 @@ public final class ValueFilterOperators {
 
     @Override
     public boolean satisfy(long time, Object value) {
-      return !candidates.contains((T) value);
+      return !candidates.contains(value);
     }
 
     @Override
@@ -458,6 +499,20 @@ public final class ValueFilterOperators {
     public String toString() {
       return toString;
     }
+
+    @Override
+    public boolean equals(Object o) {
+      if (this == o) return true;
+      if (o == null || getClass() != o.getClass()) return false;
+      if (!super.equals(o)) return false;
+      ValueColumnPatternMatchFilter that = (ValueColumnPatternMatchFilter) o;
+      return measurement.equals(that.measurement);
+    }
+
+    @Override
+    public int hashCode() {
+      return Objects.hash(super.hashCode(), measurement);
+    }
   }
 
   public static final class ValueRegexp extends ValueColumnPatternMatchFilter {
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/BinaryLogicalFilter.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/BinaryLogicalFilter.java
index e61d3eba148..08c11719470 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/BinaryLogicalFilter.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/BinaryLogicalFilter.java
@@ -52,4 +52,17 @@ public abstract class BinaryLogicalFilter {
   public String toString() {
     return toString;
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    BinaryLogicalFilter that = (BinaryLogicalFilter) o;
+    return left.equals(that.left) && right.equals(that.right);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(left, right);
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnCompareFilter.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnCompareFilter.java
index 2f13e09bd83..00d10954b5b 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnCompareFilter.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnCompareFilter.java
@@ -19,6 +19,8 @@
 
 package org.apache.iotdb.tsfile.read.filter.operator.base;
 
+import java.util.Objects;
+
 /* base class for Eq, NotEq, Lt, Gt, LtEq, GtEq */
 public abstract class ColumnCompareFilter<T extends Comparable<T>> {
 
@@ -29,4 +31,17 @@ public abstract class ColumnCompareFilter<T extends 
Comparable<T>> {
     // do not, so they guard against null in their own constructors.
     this.constant = constant;
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    ColumnCompareFilter<?> that = (ColumnCompareFilter<?>) o;
+    return Objects.equals(constant, that.constant);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(constant);
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnPatternMatchFilter.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnPatternMatchFilter.java
index 3c578d97206..f13b94d72fd 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnPatternMatchFilter.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnPatternMatchFilter.java
@@ -30,4 +30,17 @@ public abstract class ColumnPatternMatchFilter {
   protected ColumnPatternMatchFilter(Pattern pattern) {
     this.pattern = Objects.requireNonNull(pattern, "pattern cannot be null");
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    ColumnPatternMatchFilter that = (ColumnPatternMatchFilter) o;
+    return pattern.equals(that.pattern);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(pattern);
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnRangeFilter.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnRangeFilter.java
index 2d166ae4b8f..782490ad15f 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnRangeFilter.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnRangeFilter.java
@@ -31,4 +31,17 @@ public abstract class ColumnRangeFilter<T extends 
Comparable<T>> {
     this.min = Objects.requireNonNull(min, "min cannot be null");
     this.max = Objects.requireNonNull(max, "max cannot be null");
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    ColumnRangeFilter<?> that = (ColumnRangeFilter<?>) o;
+    return min.equals(that.min) && max.equals(that.max);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(min, max);
+  }
 }
diff --git 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnSetFilter.java
 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnSetFilter.java
index d6e217cfaaa..488a47f0351 100644
--- 
a/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnSetFilter.java
+++ 
b/iotdb-core/tsfile/src/main/java/org/apache/iotdb/tsfile/read/filter/operator/base/ColumnSetFilter.java
@@ -23,11 +23,24 @@ import java.util.Objects;
 import java.util.Set;
 
 /* base class for In, NotIn */
-public abstract class ColumnSetFilter<T extends Comparable<T>> {
+public abstract class ColumnSetFilter<T> {
 
   protected final Set<T> candidates;
 
   protected ColumnSetFilter(Set<T> candidates) {
     this.candidates = Objects.requireNonNull(candidates, "candidates cannot be 
null");
   }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o == null || getClass() != o.getClass()) return false;
+    ColumnSetFilter<?> that = (ColumnSetFilter<?>) o;
+    return candidates.equals(that.candidates);
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(candidates);
+  }
 }

Reply via email to