diff --git a/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/GeneralScalarExpression.java b/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/GeneralScalarExpression.java index cb9bf6d69e2e..859660600214 100644 --- a/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/GeneralScalarExpression.java +++ b/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/GeneralScalarExpression.java @@ -18,7 +18,6 @@ package org.apache.spark.sql.connector.expressions; import java.util.Arrays; -import java.util.Objects; import org.apache.spark.annotation.Evolving; import org.apache.spark.sql.connector.expressions.filter.Predicate; @@ -441,12 +440,17 @@ public GeneralScalarExpression(String name, Expression[] children) { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; + GeneralScalarExpression that = (GeneralScalarExpression) o; - return Objects.equals(name, that.name) && Arrays.equals(children, that.children); + + if (!name.equals(that.name)) return false; + return Arrays.equals(children, that.children); } @Override public int hashCode() { - return Objects.hash(name, children); + int result = name.hashCode(); + result = 31 * result + Arrays.hashCode(children); + return result; } } diff --git a/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/UserDefinedScalarFunc.java b/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/UserDefinedScalarFunc.java index b7f603cd4316..cbf3941d77d6 100644 --- a/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/UserDefinedScalarFunc.java +++ b/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/UserDefinedScalarFunc.java @@ -18,7 +18,6 @@ package org.apache.spark.sql.connector.expressions; import java.util.Arrays; -import java.util.Objects; import org.apache.spark.annotation.Evolving; import org.apache.spark.sql.internal.connector.ExpressionWithToString; @@ -51,13 +50,19 @@ public UserDefinedScalarFunc(String name, String canonicalName, Expression[] chi public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; + UserDefinedScalarFunc that = (UserDefinedScalarFunc) o; - return Objects.equals(name, that.name) && Objects.equals(canonicalName, that.canonicalName) && - Arrays.equals(children, that.children); + + if (!name.equals(that.name)) return false; + if (!canonicalName.equals(that.canonicalName)) return false; + return Arrays.equals(children, that.children); } @Override public int hashCode() { - return Objects.hash(name, canonicalName, children); + int result = name.hashCode(); + result = 31 * result + canonicalName.hashCode(); + result = 31 * result + Arrays.hashCode(children); + return result; } } diff --git a/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/aggregate/GeneralAggregateFunc.java b/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/aggregate/GeneralAggregateFunc.java index 1abf38656591..4ef5b7f97e92 100644 --- a/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/aggregate/GeneralAggregateFunc.java +++ b/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/aggregate/GeneralAggregateFunc.java @@ -17,6 +17,8 @@ package org.apache.spark.sql.connector.expressions.aggregate; +import java.util.Arrays; + import org.apache.spark.annotation.Evolving; import org.apache.spark.sql.connector.expressions.Expression; import org.apache.spark.sql.internal.connector.ExpressionWithToString; @@ -60,4 +62,24 @@ public GeneralAggregateFunc(String name, boolean isDistinct, Expression[] childr @Override public Expression[] children() { return children; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + GeneralAggregateFunc that = (GeneralAggregateFunc) o; + + if (isDistinct != that.isDistinct) return false; + if (!name.equals(that.name)) return false; + return Arrays.equals(children, that.children); + } + + @Override + public int hashCode() { + int result = name.hashCode(); + result = 31 * result + (isDistinct ? 1 : 0); + result = 31 * result + Arrays.hashCode(children); + return result; + } } diff --git a/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/aggregate/UserDefinedAggregateFunc.java b/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/aggregate/UserDefinedAggregateFunc.java index d166ba16ba52..10a62d0478b6 100644 --- a/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/aggregate/UserDefinedAggregateFunc.java +++ b/sql/catalyst/src/main/java/org/apache/spark/sql/connector/expressions/aggregate/UserDefinedAggregateFunc.java @@ -17,6 +17,8 @@ package org.apache.spark.sql.connector.expressions.aggregate; +import java.util.Arrays; + import org.apache.spark.annotation.Evolving; import org.apache.spark.sql.connector.expressions.Expression; import org.apache.spark.sql.internal.connector.ExpressionWithToString; @@ -50,4 +52,26 @@ public UserDefinedAggregateFunc( @Override public Expression[] children() { return children; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + UserDefinedAggregateFunc that = (UserDefinedAggregateFunc) o; + + if (isDistinct != that.isDistinct) return false; + if (!name.equals(that.name)) return false; + if (!canonicalName.equals(that.canonicalName)) return false; + return Arrays.equals(children, that.children); + } + + @Override + public int hashCode() { + int result = name.hashCode(); + result = 31 * result + canonicalName.hashCode(); + result = 31 * result + (isDistinct ? 1 : 0); + result = 31 * result + Arrays.hashCode(children); + return result; + } }