diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/io/DoubleWritable.java b/serde/src/java/org/apache/hadoop/hive/serde2/io/DoubleWritable.java index 3dc1f85196f05a29bfef5facbbe7ca93a95ab1da..e8c529f3337e9bcd86914b7e2361d56d84e22a0c 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/io/DoubleWritable.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/io/DoubleWritable.java @@ -45,6 +45,10 @@ public DoubleWritable(double value) { super(value); } + public int internalHashCode() { + long v = Double.doubleToLongBits(super.get()); + return (int) (v ^ (v >>> 32)); + } static { // register this comparator WritableComparator.define(DoubleWritable.class, new Comparator()); } diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyDouble.java b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyDouble.java index 05ca4e97b311c0e6ea3bb3154b7abcd6807721fe..439f9fb9ebb8c1e1dd73046c9161e5724e556bcf 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyDouble.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyDouble.java @@ -44,6 +44,11 @@ public LazyDouble(LazyDouble copy) { } @Override + public int hashCode() { + return isNull ? 0 : ((DoubleWritable)data).internalHashCode(); + } + + @Override public void init(ByteArrayRef bytes, int start, int length) { String byteData = null; try {