Repository: hive Updated Branches: refs/heads/master c46c4c90f -> 996db32ba
HIVE-16144 - CompactionInfo doesn't have equals/hashCode but used in Set (Igor Kryvenko via Eugene Koifman) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/996db32b Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/996db32b Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/996db32b Branch: refs/heads/master Commit: 996db32ba31c030b26c059ef575cb3d5b68ab1b3 Parents: c46c4c9 Author: Eugene Koifman <ekoif...@apache.org> Authored: Mon Apr 16 09:54:41 2018 -0700 Committer: Eugene Koifman <ekoif...@apache.org> Committed: Mon Apr 16 09:55:11 2018 -0700 ---------------------------------------------------------------------- .../hive/ql/txn/compactor/TestCompactor.java | 18 ++++++++++++++++++ .../hive/metastore/txn/CompactionInfo.java | 19 +++++++++++++++++++ 2 files changed, 37 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/996db32b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java ---------------------------------------------------------------------- diff --git a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java index b19aa23..82ba775 100644 --- a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java +++ b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/txn/compactor/TestCompactor.java @@ -1311,6 +1311,24 @@ public class TestCompactor { 3141, orcReader.getCompressionSize()); } + @Test + public void testCompactionInfoEquals() { + CompactionInfo compactionInfo = new CompactionInfo("dbName", "tableName", "partName", CompactionType.MINOR); + CompactionInfo compactionInfo1 = new CompactionInfo("dbName", "tableName", "partName", CompactionType.MINOR); + Assert.assertTrue("The object must be equal", compactionInfo.equals(compactionInfo)); + + Assert.assertFalse("The object must be not equal", compactionInfo.equals(new Object())); + Assert.assertTrue("The object must be equal", compactionInfo.equals(compactionInfo1)); + } + + @Test + public void testCompactionInfoHashCode() { + CompactionInfo compactionInfo = new CompactionInfo("dbName", "tableName", "partName", CompactionType.MINOR); + CompactionInfo compactionInfo1 = new CompactionInfo("dbName", "tableName", "partName", CompactionType.MINOR); + + Assert.assertEquals("The hash codes must be equal", compactionInfo.hashCode(), compactionInfo1.hashCode()); + } + private void writeBatch(StreamingConnection connection, DelimitedInputWriter writer, boolean closeEarly) throws InterruptedException, StreamingException { http://git-wip-us.apache.org/repos/asf/hive/blob/996db32b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionInfo.java ---------------------------------------------------------------------- diff --git a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionInfo.java b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionInfo.java index b74f69d..b34b7d7 100644 --- a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionInfo.java +++ b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/txn/CompactionInfo.java @@ -110,6 +110,25 @@ public class CompactionInfo implements Comparable<CompactionInfo> { "highestWriteId:" + highestWriteId; } + @Override + public int hashCode() { + int result = 17; + result = 31 * result + this.getFullPartitionName().hashCode(); + return result; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof CompactionInfo)) { + return false; + } + CompactionInfo info = (CompactionInfo) obj; + return this.compareTo(info) == 0; + } + /** * loads object from a row in Select * from COMPACTION_QUEUE * @param rs ResultSet after call to rs.next()