Repository: cassandra Updated Branches: refs/heads/cassandra-2.2 bf0328f48 -> af1c65843 refs/heads/trunk 8c22b4a81 -> 0c59c1f5b
hashCode in UDFunction broken patch by Robert Stupp; reviewed by Aleksey Yeschenko for CASSANDRA-9750 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/af1c6584 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/af1c6584 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/af1c6584 Branch: refs/heads/cassandra-2.2 Commit: af1c65843efbcbd14ab8e1fefda7ec8650e71074 Parents: bf0328f Author: Robert Stupp <sn...@snazy.de> Authored: Thu Jul 9 23:27:31 2015 +0700 Committer: Robert Stupp <sn...@snazy.de> Committed: Thu Jul 9 23:27:31 2015 +0700 ---------------------------------------------------------------------- .../org/apache/cassandra/cql3/functions/Functions.java | 13 +++++++++++++ .../apache/cassandra/cql3/functions/UDAggregate.java | 2 +- .../apache/cassandra/cql3/functions/UDFunction.java | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/af1c6584/src/java/org/apache/cassandra/cql3/functions/Functions.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/Functions.java b/src/java/org/apache/cassandra/cql3/functions/Functions.java index 018c35c..85f2817 100644 --- a/src/java/org/apache/cassandra/cql3/functions/Functions.java +++ b/src/java/org/apache/cassandra/cql3/functions/Functions.java @@ -375,6 +375,19 @@ public abstract class Functions return true; } + public static int typeHashCode(AbstractType<?> t) + { + return t.asCQL3Type().toString().hashCode(); + } + + public static int typeHashCode(List<AbstractType<?>> types) + { + int h = 0; + for (AbstractType<?> type : types) + h = h * 31 + typeHashCode(type); + return h; + } + private static class FunctionsMigrationListener extends MigrationListener { public void onUpdateUserType(String ksName, String typeName) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/af1c6584/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java b/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java index f153aed..c9fbbaa 100644 --- a/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java +++ b/src/java/org/apache/cassandra/cql3/functions/UDAggregate.java @@ -210,6 +210,6 @@ public class UDAggregate extends AbstractFunction implements AggregateFunction @Override public int hashCode() { - return Objects.hashCode(name, argTypes, returnType, stateFunction, finalFunction, stateType, initcond); + return Objects.hashCode(name, Functions.typeHashCode(argTypes), Functions.typeHashCode(returnType), stateFunction, finalFunction, stateType, initcond); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/af1c6584/src/java/org/apache/cassandra/cql3/functions/UDFunction.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/functions/UDFunction.java b/src/java/org/apache/cassandra/cql3/functions/UDFunction.java index aa6d555..ab92232 100644 --- a/src/java/org/apache/cassandra/cql3/functions/UDFunction.java +++ b/src/java/org/apache/cassandra/cql3/functions/UDFunction.java @@ -276,7 +276,7 @@ public abstract class UDFunction extends AbstractFunction implements ScalarFunct @Override public int hashCode() { - return Objects.hashCode(name, argNames, argTypes, returnType, language, body); + return Objects.hashCode(name, Functions.typeHashCode(argTypes), Functions.typeHashCode(returnType), returnType, language, body); } public void userTypeUpdated(String ksName, String typeName)