You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2014/04/29 16:52:37 UTC

svn commit: r1590998 - in /hive/trunk/ql/src: java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java test/org/apache/hadoop/hive/ql/lockmgr/TestHiveLockObject.java

Author: hashutosh
Date: Tue Apr 29 14:52:37 2014
New Revision: 1590998

URL: http://svn.apache.org/r1590998
Log:
HIVE-6884 : HiveLockObject and enclosed HiveLockObjectData override equal() method but didn't do so for hashcode() (Xuefu Zhang via Ashutosh Chauhan)

Added:
    hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestHiveLockObject.java
Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java?rev=1590998&r1=1590997&r2=1590998&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java Tue Apr 29 14:52:37 2014
@@ -20,6 +20,7 @@ package org.apache.hadoop.hive.ql.lockmg
 
 import java.util.Arrays;
 
+import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.apache.hadoop.hive.ql.metadata.DummyPartition;
 import org.apache.hadoop.hive.ql.metadata.Partition;
 import org.apache.hadoop.hive.ql.metadata.Table;
@@ -121,6 +122,44 @@ public class HiveLockObject {
 
       return ret;
     }
+ 
+    @Override
+    public int hashCode() {
+      HashCodeBuilder builder = new HashCodeBuilder();
+
+      boolean queryId_present = queryId == null;
+      builder.append(queryId_present);
+      if (queryId_present) {
+        builder.append(queryId);
+      }
+
+      boolean lockTime_present = lockTime == null;
+      builder.append(lockTime);
+      if (lockTime_present) {
+        builder.append(lockTime);
+      }
+
+      boolean lockMode_present = lockMode == null;
+      builder.append(lockMode);
+      if (lockMode_present) {
+        builder.append(lockMode);
+      }
+
+      boolean queryStr_present = queryStr == null;
+      builder.append(queryStr);
+      if (queryStr_present) {
+        builder.append(queryStr);
+      }
+
+      boolean clienIp_present = clientIp == null;
+      builder.append(clientIp);
+      if (clienIp_present) {
+        builder.append(clientIp);
+      }
+
+      return builder.toHashCode();
+    }
+
   }
 
   /* user supplied data for that object */
@@ -216,6 +255,18 @@ public class HiveLockObject {
         tgt.getData() != null && data.equals(tgt.getData());
   }
 
+  @Override
+  public int hashCode() {
+    HashCodeBuilder builder = new HashCodeBuilder();
+    builder.append(pathNames);
+    boolean data_present = data == null;
+    builder.append(data_present);
+    if (data_present) {
+      builder.append(data);
+    }
+    return builder.toHashCode();
+  }
+
   private static String removeDelimiter(String in) {
     if (in == null) {
       return null;

Added: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestHiveLockObject.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestHiveLockObject.java?rev=1590998&view=auto
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestHiveLockObject.java (added)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestHiveLockObject.java Tue Apr 29 14:52:37 2014
@@ -0,0 +1,41 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.lockmgr;
+
+import junit.framework.Assert;
+
+import org.apache.hadoop.hive.ql.lockmgr.HiveLockObject.HiveLockObjectData;
+import org.junit.Test;
+
+public class TestHiveLockObject {
+
+  @Test
+  public void testEqualsAndHashCode() {
+    HiveLockObjectData data1 = new HiveLockObjectData("ID1", "SHARED", "1997-07-01", "select * from mytable");
+    HiveLockObjectData data2 = new HiveLockObjectData("ID1", "SHARED", "1997-07-01", "select * from mytable");
+    Assert.assertEquals(data1, data2);
+    Assert.assertEquals(data1.hashCode(), data2.hashCode());
+
+    HiveLockObject obj1 = new HiveLockObject("mytable", data1);
+    HiveLockObject obj2 = new HiveLockObject("mytable", data2);
+    Assert.assertEquals(obj1, obj2);
+    Assert.assertEquals(obj1.hashCode(), obj2.hashCode());
+  }
+
+}