You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by mm...@apache.org on 2016/12/22 08:32:37 UTC
[08/10] hive git commit: HIVE-15335: Fast Decimal (Matt McCline,
reviewed by Sergey Shelukhin, Prasanth Jayachandran, Owen O'Malley)
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
index 9013084..9d900e4 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
@@ -141,7 +141,11 @@ public class ConvertAstToSearchArg {
switch (type) {
case LONG:
if (lit instanceof HiveDecimal) {
- return ((HiveDecimal)lit).longValueExact();
+ HiveDecimal dec = (HiveDecimal) lit;
+ if (!dec.isLong()) {
+ throw new ArithmeticException("Overflow");
+ }
+ return dec.longValue();
}
return ((Number) lit).longValue();
case STRING:
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java
index 31e2878..d214a96 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java
@@ -59,8 +59,8 @@ public class UDFLog extends UDFMath {
return null;
}
- double base = baseWritable.getHiveDecimal().bigDecimalValue().doubleValue();
- double d = writable.getHiveDecimal().bigDecimalValue().doubleValue();
+ double base = baseWritable.doubleValue();
+ double d = writable.doubleValue();
return log(base, d);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java
index 8087df1..378b3d7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMath.java
@@ -54,7 +54,7 @@ public abstract class UDFMath extends UDF {
return null;
}
- double d = writable.getHiveDecimal().bigDecimalValue().doubleValue();
+ double d = writable.doubleValue();
doubleWritable.set(d);
return doEvaluate(doubleWritable);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java
index 67d62d9..449848a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSign.java
@@ -79,12 +79,12 @@ public class UDFSign extends UDF {
*
* @return -1, 0, or 1 representing the sign of the input decimal
*/
- public IntWritable evaluate(HiveDecimalWritable dec) {
- if (dec == null || dec.getHiveDecimal() == null) {
+ public IntWritable evaluate(HiveDecimalWritable decWritable) {
+ if (decWritable == null || !decWritable.isSet()) {
return null;
}
- intWritable.set(dec.getHiveDecimal().signum());
+ intWritable.set(decWritable.signum());
return intWritable;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java
index 17b892c..0cc0c9e 100755
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToBoolean.java
@@ -191,10 +191,10 @@ public class UDFToBoolean extends UDF {
}
public BooleanWritable evaluate(HiveDecimalWritable i) {
- if (i == null) {
+ if (i == null || !i.isSet()) {
return null;
} else {
- booleanWritable.set(HiveDecimal.ZERO.compareTo(i.getHiveDecimal()) != 0);
+ booleanWritable.set(i.compareTo(HiveDecimal.ZERO) != 0);
return booleanWritable;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToByte.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToByte.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToByte.java
index efae82d..df2b42f 100755
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToByte.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToByte.java
@@ -192,10 +192,10 @@ public class UDFToByte extends UDF {
}
public ByteWritable evaluate(HiveDecimalWritable i) {
- if (i == null) {
+ if (i == null || !i.isSet() || !i.isByte()) {
return null;
} else {
- byteWritable.set(i.getHiveDecimal().byteValue());
+ byteWritable.set(i.byteValue());
return byteWritable;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToDouble.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToDouble.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToDouble.java
index 9cbc114..5fcae42 100755
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToDouble.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToDouble.java
@@ -195,10 +195,10 @@ public class UDFToDouble extends UDF {
}
public DoubleWritable evaluate(HiveDecimalWritable i) {
- if (i == null) {
+ if (i == null || !i.isSet()) {
return null;
} else {
- doubleWritable.set(i.getHiveDecimal().doubleValue());
+ doubleWritable.set(i.doubleValue());
return doubleWritable;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToFloat.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToFloat.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToFloat.java
index 5808c90..c8e32f4 100755
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToFloat.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToFloat.java
@@ -196,10 +196,10 @@ public class UDFToFloat extends UDF {
}
public FloatWritable evaluate(HiveDecimalWritable i) {
- if (i == null) {
+ if (i == null || !i.isSet()) {
return null;
} else {
- floatWritable.set(i.getHiveDecimal().floatValue());
+ floatWritable.set(i.floatValue());
return floatWritable;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToInteger.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToInteger.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToInteger.java
index a7551cb..42972c7 100755
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToInteger.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToInteger.java
@@ -201,10 +201,10 @@ public class UDFToInteger extends UDF {
}
public IntWritable evaluate(HiveDecimalWritable i) {
- if (i == null) {
+ if (i == null || !i.isSet() || !i.isInt()) {
return null;
} else {
- intWritable.set(i.getHiveDecimal().intValue()); // TODO: lossy conversion!
+ intWritable.set(i.intValue());
return intWritable;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToLong.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToLong.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToLong.java
index c961d14..847b535 100755
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToLong.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToLong.java
@@ -204,10 +204,10 @@ public class UDFToLong extends UDF {
}
public LongWritable evaluate(HiveDecimalWritable i) {
- if (i == null) {
+ if (i == null || !i.isSet() || !i.isLong()) {
return null;
} else {
- longWritable.set(i.getHiveDecimal().longValue()); // TODO: lossy conversion!
+ longWritable.set(i.longValue());
return longWritable;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToShort.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToShort.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToShort.java
index 570408a..0ae0c13 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToShort.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFToShort.java
@@ -194,10 +194,10 @@ public class UDFToShort extends UDF {
}
public ShortWritable evaluate(HiveDecimalWritable i) {
- if (i == null) {
+ if (i == null || !i.isShort() || !i.isShort()) {
return null;
} else {
- shortWritable.set(i.getHiveDecimal().shortValue()); // TODO: lossy conversion!
+ shortWritable.set(i.shortValue());
return shortWritable;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
index 38269f4..e2cd213 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
@@ -206,7 +206,7 @@ public class GenericUDAFSum extends AbstractGenericUDAFResolver {
public ObjectInspector init(Mode m, ObjectInspector[] parameters) throws HiveException {
assert (parameters.length == 1);
super.init(m, parameters);
- result = new HiveDecimalWritable(HiveDecimal.ZERO);
+ result = new HiveDecimalWritable(0);
inputOI = (PrimitiveObjectInspector) parameters[0];
// The output precision is 10 greater than the input which should cover at least
// 10b rows. The scale is the same as the input.
@@ -226,21 +226,21 @@ public class GenericUDAFSum extends AbstractGenericUDAFResolver {
/** class for storing decimal sum value. */
@AggregationType(estimable = false) // hard to know exactly for decimals
- static class SumHiveDecimalAgg extends SumAgg<HiveDecimal> {
+ static class SumHiveDecimalWritableAgg extends SumAgg<HiveDecimalWritable> {
}
@Override
public AggregationBuffer getNewAggregationBuffer() throws HiveException {
- SumHiveDecimalAgg agg = new SumHiveDecimalAgg();
+ SumHiveDecimalWritableAgg agg = new SumHiveDecimalWritableAgg();
reset(agg);
return agg;
}
@Override
public void reset(AggregationBuffer agg) throws HiveException {
- SumAgg<HiveDecimal> bdAgg = (SumAgg<HiveDecimal>) agg;
+ SumAgg<HiveDecimalWritable> bdAgg = (SumAgg<HiveDecimalWritable>) agg;
bdAgg.empty = true;
- bdAgg.sum = HiveDecimal.ZERO;
+ bdAgg.sum = new HiveDecimalWritable(0);
bdAgg.uniqueObjects = new HashSet<ObjectInspectorObject>();
}
@@ -250,9 +250,9 @@ public class GenericUDAFSum extends AbstractGenericUDAFResolver {
public void iterate(AggregationBuffer agg, Object[] parameters) throws HiveException {
assert (parameters.length == 1);
try {
- if (isEligibleValue((SumHiveDecimalAgg) agg, parameters[0])) {
- ((SumHiveDecimalAgg)agg).empty = false;
- ((SumHiveDecimalAgg)agg).sum = ((SumHiveDecimalAgg)agg).sum.add(
+ if (isEligibleValue((SumHiveDecimalWritableAgg) agg, parameters[0])) {
+ ((SumHiveDecimalWritableAgg)agg).empty = false;
+ ((SumHiveDecimalWritableAgg)agg).sum.mutateAdd(
PrimitiveObjectInspectorUtils.getHiveDecimal(parameters[0], inputOI));
}
} catch (NumberFormatException e) {
@@ -270,8 +270,8 @@ public class GenericUDAFSum extends AbstractGenericUDAFResolver {
@Override
public void merge(AggregationBuffer agg, Object partial) throws HiveException {
if (partial != null) {
- SumHiveDecimalAgg myagg = (SumHiveDecimalAgg) agg;
- if (myagg.sum == null) {
+ SumHiveDecimalWritableAgg myagg = (SumHiveDecimalWritableAgg) agg;
+ if (myagg.sum == null || !myagg.sum.isSet()) {
return;
}
@@ -279,22 +279,22 @@ public class GenericUDAFSum extends AbstractGenericUDAFResolver {
if (isWindowingDistinct()) {
throw new HiveException("Distinct windowing UDAF doesn't support merge and terminatePartial");
} else {
- myagg.sum = myagg.sum.add(PrimitiveObjectInspectorUtils.getHiveDecimal(partial, inputOI));
+ myagg.sum.mutateAdd(PrimitiveObjectInspectorUtils.getHiveDecimal(partial, inputOI));
}
}
}
@Override
public Object terminate(AggregationBuffer agg) throws HiveException {
- SumHiveDecimalAgg myagg = (SumHiveDecimalAgg) agg;
- if (myagg.empty || myagg.sum == null) {
+ SumHiveDecimalWritableAgg myagg = (SumHiveDecimalWritableAgg) agg;
+ if (myagg.empty || myagg.sum == null || !myagg.sum.isSet()) {
return null;
}
- if (myagg.sum != null) {
- if (HiveDecimalUtils.enforcePrecisionScale(myagg.sum, (DecimalTypeInfo)outputOI.getTypeInfo()) == null) {
- LOG.warn("The sum of a column with data type HiveDecimal is out of range");
- return null;
- }
+ DecimalTypeInfo decimalTypeInfo = (DecimalTypeInfo)outputOI.getTypeInfo();
+ myagg.sum.mutateEnforcePrecisionScale(decimalTypeInfo.getPrecision(), decimalTypeInfo.getScale());
+ if (!myagg.sum.isSet()) {
+ LOG.warn("The sum of a column with data type HiveDecimal is out of range");
+ return null;
}
result.set(myagg.sum);
@@ -315,8 +315,8 @@ public class GenericUDAFSum extends AbstractGenericUDAFResolver {
protected HiveDecimalWritable getNextResult(
org.apache.hadoop.hive.ql.udf.generic.GenericUDAFStreamingEvaluator.SumAvgEnhancer<HiveDecimalWritable, HiveDecimal>.SumAvgStreamingState ss)
throws HiveException {
- SumHiveDecimalAgg myagg = (SumHiveDecimalAgg) ss.wrappedBuf;
- HiveDecimal r = myagg.empty ? null : myagg.sum;
+ SumHiveDecimalWritableAgg myagg = (SumHiveDecimalWritableAgg) ss.wrappedBuf;
+ HiveDecimal r = myagg.empty ? null : myagg.sum.getHiveDecimal();
HiveDecimal d = ss.retrieveNextIntermediateValue();
if (d != null ) {
r = r == null ? null : r.subtract(d);
@@ -329,8 +329,8 @@ public class GenericUDAFSum extends AbstractGenericUDAFResolver {
protected HiveDecimal getCurrentIntermediateResult(
org.apache.hadoop.hive.ql.udf.generic.GenericUDAFStreamingEvaluator.SumAvgEnhancer<HiveDecimalWritable, HiveDecimal>.SumAvgStreamingState ss)
throws HiveException {
- SumHiveDecimalAgg myagg = (SumHiveDecimalAgg) ss.wrappedBuf;
- return myagg.empty ? null : myagg.sum;
+ SumHiveDecimalWritableAgg myagg = (SumHiveDecimalWritableAgg) ss.wrappedBuf;
+ return myagg.empty ? null : myagg.sum.getHiveDecimal();
}
};
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java
index a8e2786..bf1fed0 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java
@@ -141,7 +141,8 @@ public class GenericUDFAbs extends GenericUDF {
HiveDecimalWritable val = decimalOI.getPrimitiveWritableObject(valObject);
if (val != null) {
- resultDecimal.set(val.getHiveDecimal().abs());
+ resultDecimal.set(val);
+ resultDecimal.mutateAbs();
val = resultDecimal;
}
return val;
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBRound.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBRound.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBRound.java
index 4a59eb3..cb901cf 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBRound.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBRound.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.hive.ql.exec.vector.expressions.FuncBRoundWithNumDigits
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncBRoundDecimalToDecimal;
import org.apache.hadoop.hive.ql.exec.vector.expressions.gen.FuncBRoundDoubleToDouble;
import org.apache.hadoop.hive.serde2.io.DoubleWritable;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
@Description(name = "bround",
value = "_FUNC_(x[, d]) - round x to d decimal places using HALF_EVEN rounding mode.",
@@ -37,8 +38,10 @@ extended = "Banker's rounding. The value is rounded to the nearest even number.
public class GenericUDFBRound extends GenericUDFRound {
@Override
- protected HiveDecimal round(HiveDecimal input, int scale) {
- return RoundUtils.bround(input, scale);
+ protected HiveDecimalWritable round(HiveDecimalWritable inputDecWritable, int scale) {
+ HiveDecimalWritable result = new HiveDecimalWritable(inputDecWritable);
+ result.mutateSetScale(scale, HiveDecimal.ROUND_HALF_EVEN);
+ return result;
}
@Override
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCeil.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCeil.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCeil.java
index 95ec32e..bc0bf5e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCeil.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCeil.java
@@ -50,8 +50,8 @@ public final class GenericUDFCeil extends GenericUDFFloorCeilBase {
@Override
protected HiveDecimalWritable evaluate(HiveDecimalWritable input) {
- HiveDecimal bd = input.getHiveDecimal();
- decimalWritable.set(bd.setScale(0, HiveDecimal.ROUND_CEILING));
+ decimalWritable.set(input);
+ decimalWritable.mutateSetScale(0, HiveDecimal.ROUND_CEILING);
return decimalWritable;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFloor.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFloor.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFloor.java
index 8ad15e9..a8cb9cc 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFloor.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFloor.java
@@ -50,8 +50,8 @@ public final class GenericUDFFloor extends GenericUDFFloorCeilBase {
@Override
protected HiveDecimalWritable evaluate(HiveDecimalWritable input) {
- HiveDecimal bd = input.getHiveDecimal();
- decimalWritable.set(bd.setScale(0, HiveDecimal.ROUND_FLOOR));
+ decimalWritable.set(input);
+ decimalWritable.mutateSetScale(0, HiveDecimal.ROUND_FLOOR);
return decimalWritable;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNegative.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNegative.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNegative.java
index de964d6..45a3504 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNegative.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNegative.java
@@ -82,8 +82,8 @@ public class GenericUDFOPNegative extends GenericUDFBaseUnary {
doubleWritable.set(-(((DoubleWritable)input).get()));
return doubleWritable;
case DECIMAL:
- HiveDecimal dec = ((HiveDecimalWritable)input).getHiveDecimal();
- decimalWritable.set(dec.negate());
+ decimalWritable.set((HiveDecimalWritable)input);
+ decimalWritable.mutateNegate();
return decimalWritable;
case INTERVAL_YEAR_MONTH:
HiveIntervalYearMonth intervalYearMonth =
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericMinus.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericMinus.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericMinus.java
index 28f7907..268a722 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericMinus.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericMinus.java
@@ -78,11 +78,8 @@ public class GenericUDFOPNumericMinus extends GenericUDFBaseNumeric {
@Override
protected HiveDecimalWritable evaluate(HiveDecimal left, HiveDecimal right) {
- HiveDecimal dec = left.subtract(right);
- if (dec == null) {
- return null;
- }
- decimalWritable.set(dec);
+ decimalWritable.set(left);
+ decimalWritable.mutateSubtract(right);
return decimalWritable;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericPlus.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericPlus.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericPlus.java
index b2b76f0..f9f5ff7 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericPlus.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNumericPlus.java
@@ -87,13 +87,8 @@ public class GenericUDFOPNumericPlus extends GenericUDFBaseNumeric {
@Override
protected HiveDecimalWritable evaluate(HiveDecimal left, HiveDecimal right) {
- HiveDecimal dec = left.add(right);
-
- if (dec == null) {
- return null;
- }
-
- decimalWritable.set(dec);
+ decimalWritable.set(left);
+ decimalWritable.mutateAdd(right);
return decimalWritable;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java
index ae81fe3..e8b0d15 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java
@@ -201,12 +201,12 @@ public class GenericUDFRound extends GenericUDF {
case VOID:
return null;
case DECIMAL:
- HiveDecimalWritable decimalWritable = (HiveDecimalWritable) inputOI.getPrimitiveWritableObject(input);
- HiveDecimal dec = round(decimalWritable.getHiveDecimal(), scale);
- if (dec == null) {
- return null;
+ {
+ // The getPrimitiveWritableObject method returns a new writable.
+ HiveDecimalWritable decimalWritable = (HiveDecimalWritable) inputOI.getPrimitiveWritableObject(input);
+ // Call the different round flavor.
+ return round(decimalWritable, scale);
}
- return new HiveDecimalWritable(dec);
case BYTE:
ByteWritable byteWritable = (ByteWritable)inputOI.getPrimitiveWritableObject(input);
if (scale >= 0) {
@@ -255,8 +255,10 @@ public class GenericUDFRound extends GenericUDF {
}
}
- protected HiveDecimal round(HiveDecimal input, int scale) {
- return RoundUtils.round(input, scale);
+ protected HiveDecimalWritable round(HiveDecimalWritable inputDecWritable, int scale) {
+ HiveDecimalWritable result = new HiveDecimalWritable(inputDecWritable);
+ result.mutateSetScale(scale, HiveDecimal.ROUND_HALF_UP);
+ return result;
}
protected long round(long input, int scale) {
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorGroupByOperator.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorGroupByOperator.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorGroupByOperator.java
index f5b5d9d..0ddebf8 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorGroupByOperator.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorGroupByOperator.java
@@ -732,12 +732,12 @@ public class TestVectorGroupByOperator {
"sum",
4,
Arrays.asList(new Object[]{
- HiveDecimal.create("1234.2401").setScale(scale),
- HiveDecimal.create("1868.52").setScale(scale),
- HiveDecimal.ZERO.setScale(scale),
- HiveDecimal.create("456.84").setScale(scale),
- HiveDecimal.create("121.89").setScale(scale)}),
- HiveDecimal.create("3681.4901").setScale( scale));
+ HiveDecimal.create("1234.2401"),
+ HiveDecimal.create("1868.52"),
+ HiveDecimal.ZERO,
+ HiveDecimal.create("456.84"),
+ HiveDecimal.create("121.89")}),
+ HiveDecimal.create("3681.4901"));
}
@Test
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java
index 8ffff9d..b29bb8b 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/TestVectorSerDeRow.java
@@ -97,7 +97,9 @@ public class TestVectorSerDeRow extends TestCase {
PrimitiveCategory primitiveCategory = primitiveCategories[i];
PrimitiveTypeInfo primitiveTypeInfo = source.primitiveTypeInfos()[i];
if (!deserializeRead.readNextField()) {
- throw new HiveException("Unexpected NULL");
+ throw new HiveException("Unexpected NULL when reading primitiveCategory " + primitiveCategory +
+ " expected (" + expected.getClass().getName() + ", " + expected.toString() + ") " +
+ " deserializeRead " + deserializeRead.getClass().getName());
}
switch (primitiveCategory) {
case BOOLEAN:
@@ -307,7 +309,7 @@ public class TestVectorSerDeRow extends TestCase {
}
}
- void testVectorSerializeRow(int caseNum, Random r, SerializationType serializationType)
+ void testVectorSerializeRow(Random r, SerializationType serializationType)
throws HiveException, IOException, SerDeException {
String[] emptyScratchTypeNames = new String[0];
@@ -383,7 +385,9 @@ public class TestVectorSerDeRow extends TestCase {
Object rowObj = row[c];
Object expectedObj = expectedRow[c];
if (rowObj == null) {
- fail("Unexpected NULL from extractRow");
+ fail("Unexpected NULL from extractRow. Expected class " +
+ expectedObj.getClass().getName() + " value " + expectedObj.toString() +
+ " batch index " + i + " firstRandomRowIndex " + firstRandomRowIndex);
}
if (!rowObj.equals(expectedObj)) {
fail("Row " + (firstRandomRowIndex + i) + " and column " + c + " mismatch (" + primitiveTypeInfos[c].getPrimitiveCategory() + " actual value " + rowObj + " and expected value " + expectedObj + ")");
@@ -541,7 +545,7 @@ public class TestVectorSerDeRow extends TestCase {
return new LazySerDeParameters(conf, tbl, LazySimpleSerDe.class.getName());
}
- void testVectorDeserializeRow(int caseNum, Random r, SerializationType serializationType,
+ void testVectorDeserializeRow(Random r, SerializationType serializationType,
boolean alternate1, boolean alternate2,
boolean useExternalBuffer)
throws HiveException, IOException, SerDeException {
@@ -689,113 +693,111 @@ public class TestVectorSerDeRow extends TestCase {
}
}
- public void testVectorSerDeRow() throws Throwable {
-
- Random r = new Random(5678);
-
- int c = 0;
-
- /*
- * SERIALIZE tests.
- */
- testVectorSerializeRow(c++, r, SerializationType.BINARY_SORTABLE);
-
- testVectorSerializeRow(c++, r, SerializationType.LAZY_BINARY);
-
- testVectorSerializeRow(c++, r, SerializationType.LAZY_SIMPLE);
-
- /*
- * DESERIALIZE tests.
- */
-
- // BINARY_SORTABLE
-
- testVectorDeserializeRow(c++, r,
- SerializationType.BINARY_SORTABLE,
- /* alternate1 = useColumnSortOrderIsDesc */ false,
- /* alternate2 = useBinarySortableCharsNeedingEscape */ false,
- /* useExternalBuffer */ false);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.BINARY_SORTABLE,
- /* alternate1 = useColumnSortOrderIsDesc */ true,
- /* alternate2 = useBinarySortableCharsNeedingEscape */ false,
- /* useExternalBuffer */ false);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.BINARY_SORTABLE,
- /* alternate1 = useColumnSortOrderIsDesc */ false,
- /* alternate2 = useBinarySortableCharsNeedingEscape */ false,
- /* useExternalBuffer */ true);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.BINARY_SORTABLE,
- /* alternate1 = useColumnSortOrderIsDesc */ true,
- /* alternate2 = useBinarySortableCharsNeedingEscape */ false,
- /* useExternalBuffer */ true);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.BINARY_SORTABLE,
- /* alternate1 = useColumnSortOrderIsDesc */ false,
- /* alternate2 = useBinarySortableCharsNeedingEscape */ true,
- /* useExternalBuffer */ false);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.BINARY_SORTABLE,
- /* alternate1 = useColumnSortOrderIsDesc */ true,
- /* alternate2 = useBinarySortableCharsNeedingEscape */ true,
- /* useExternalBuffer */ false);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.BINARY_SORTABLE,
- /* alternate1 = useColumnSortOrderIsDesc */ false,
- /* alternate2 = useBinarySortableCharsNeedingEscape */ true,
- /* useExternalBuffer */ true);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.BINARY_SORTABLE,
- /* alternate1 = useColumnSortOrderIsDesc */ true,
- /* alternate2 = useBinarySortableCharsNeedingEscape */ true,
- /* useExternalBuffer */ true);
-
- // LAZY_BINARY
-
- testVectorDeserializeRow(c++, r,
- SerializationType.LAZY_BINARY,
- /* alternate1 = unused */ false,
- /* alternate2 = unused */ false,
- /* useExternalBuffer */ false);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.LAZY_BINARY,
- /* alternate1 = unused */ false,
- /* alternate2 = unused */ false,
- /* useExternalBuffer */ true);
-
- // LAZY_SIMPLE
-
- testVectorDeserializeRow(c++, r,
- SerializationType.LAZY_SIMPLE,
- /* alternate1 = useLazySimpleEscapes */ false,
- /* alternate2 = unused */ false,
- /* useExternalBuffer */ false);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.LAZY_SIMPLE,
- /* alternate1 = useLazySimpleEscapes */ false,
- /* alternate2 = unused */ false,
- /* useExternalBuffer */ true);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.LAZY_SIMPLE,
- /* alternate1 = useLazySimpleEscapes */ true,
- /* alternate2 = unused */ false,
- /* useExternalBuffer */ false);
-
- testVectorDeserializeRow(c++, r,
- SerializationType.LAZY_SIMPLE,
- /* alternate1 = useLazySimpleEscapes */ true,
- /* alternate2 = unused */ false,
- /* useExternalBuffer */ true);
+ public void testVectorBinarySortableSerializeRow() throws Throwable {
+ Random r = new Random(8732);
+ testVectorSerializeRow(r, SerializationType.BINARY_SORTABLE);
+ }
+
+ public void testVectorLazyBinarySerializeRow() throws Throwable {
+ Random r = new Random(8732);
+ testVectorSerializeRow(r, SerializationType.LAZY_BINARY);
+ }
+
+ public void testVectorLazySimpleSerializeRow() throws Throwable {
+ Random r = new Random(8732);
+ testVectorSerializeRow(r, SerializationType.LAZY_SIMPLE);
+ }
+
+ public void testVectorBinarySortableDeserializeRow() throws Throwable {
+ Random r = new Random(8732);
+ testVectorDeserializeRow(r,
+ SerializationType.BINARY_SORTABLE,
+ /* alternate1 = useColumnSortOrderIsDesc */ false,
+ /* alternate2 = useBinarySortableCharsNeedingEscape */ false,
+ /* useExternalBuffer */ false);
+
+ testVectorDeserializeRow(r,
+ SerializationType.BINARY_SORTABLE,
+ /* alternate1 = useColumnSortOrderIsDesc */ true,
+ /* alternate2 = useBinarySortableCharsNeedingEscape */ false,
+ /* useExternalBuffer */ false);
+
+ testVectorDeserializeRow(r,
+ SerializationType.BINARY_SORTABLE,
+ /* alternate1 = useColumnSortOrderIsDesc */ false,
+ /* alternate2 = useBinarySortableCharsNeedingEscape */ false,
+ /* useExternalBuffer */ true);
+
+ testVectorDeserializeRow(r,
+ SerializationType.BINARY_SORTABLE,
+ /* alternate1 = useColumnSortOrderIsDesc */ true,
+ /* alternate2 = useBinarySortableCharsNeedingEscape */ false,
+ /* useExternalBuffer */ true);
+
+ testVectorDeserializeRow(r,
+ SerializationType.BINARY_SORTABLE,
+ /* alternate1 = useColumnSortOrderIsDesc */ false,
+ /* alternate2 = useBinarySortableCharsNeedingEscape */ true,
+ /* useExternalBuffer */ false);
+
+ testVectorDeserializeRow(r,
+ SerializationType.BINARY_SORTABLE,
+ /* alternate1 = useColumnSortOrderIsDesc */ true,
+ /* alternate2 = useBinarySortableCharsNeedingEscape */ true,
+ /* useExternalBuffer */ false);
+
+ testVectorDeserializeRow(r,
+ SerializationType.BINARY_SORTABLE,
+ /* alternate1 = useColumnSortOrderIsDesc */ false,
+ /* alternate2 = useBinarySortableCharsNeedingEscape */ true,
+ /* useExternalBuffer */ true);
+
+ testVectorDeserializeRow(r,
+ SerializationType.BINARY_SORTABLE,
+ /* alternate1 = useColumnSortOrderIsDesc */ true,
+ /* alternate2 = useBinarySortableCharsNeedingEscape */ true,
+ /* useExternalBuffer */ true);
+ }
+
+ public void testVectorLazyBinaryDeserializeRow() throws Throwable {
+ Random r = new Random(8732);
+ testVectorDeserializeRow(r,
+ SerializationType.LAZY_BINARY,
+ /* alternate1 = unused */ false,
+ /* alternate2 = unused */ false,
+ /* useExternalBuffer */ false);
+
+ testVectorDeserializeRow(r,
+ SerializationType.LAZY_BINARY,
+ /* alternate1 = unused */ false,
+ /* alternate2 = unused */ false,
+ /* useExternalBuffer */ true);
+ }
+
+ public void testVectorLazySimpleDeserializeRow() throws Throwable {
+ Random r = new Random(8732);
+ testVectorDeserializeRow(r,
+ SerializationType.LAZY_SIMPLE,
+ /* alternate1 = useLazySimpleEscapes */ false,
+ /* alternate2 = unused */ false,
+ /* useExternalBuffer */ false);
+
+ testVectorDeserializeRow(r,
+ SerializationType.LAZY_SIMPLE,
+ /* alternate1 = useLazySimpleEscapes */ false,
+ /* alternate2 = unused */ false,
+ /* useExternalBuffer */ true);
+
+ testVectorDeserializeRow(r,
+ SerializationType.LAZY_SIMPLE,
+ /* alternate1 = useLazySimpleEscapes */ true,
+ /* alternate2 = unused */ false,
+ /* useExternalBuffer */ false);
+
+ testVectorDeserializeRow(r,
+ SerializationType.LAZY_SIMPLE,
+ /* alternate1 = useLazySimpleEscapes */ true,
+ /* alternate2 = unused */ false,
+ /* useExternalBuffer */ true);
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/VectorRandomRowSource.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/VectorRandomRowSource.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/VectorRandomRowSource.java
index 57bf60d..cbde615 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/VectorRandomRowSource.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/VectorRandomRowSource.java
@@ -25,6 +25,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Random;
+import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hive.common.type.HiveChar;
@@ -336,27 +337,28 @@ public class VectorRandomRowSource {
{
WritableHiveCharObjectInspector writableCharObjectInspector =
new WritableHiveCharObjectInspector( (CharTypeInfo) primitiveTypeInfo);
- return writableCharObjectInspector.create(new HiveChar(StringUtils.EMPTY, -1));
+ return writableCharObjectInspector.create((HiveChar) object);
}
case VARCHAR:
{
WritableHiveVarcharObjectInspector writableVarcharObjectInspector =
new WritableHiveVarcharObjectInspector( (VarcharTypeInfo) primitiveTypeInfo);
- return writableVarcharObjectInspector.create(new HiveVarchar(StringUtils.EMPTY, -1));
+ return writableVarcharObjectInspector.create((HiveVarchar) object);
}
case BINARY:
- return PrimitiveObjectInspectorFactory.writableBinaryObjectInspector.create(ArrayUtils.EMPTY_BYTE_ARRAY);
+ return PrimitiveObjectInspectorFactory.writableBinaryObjectInspector.create((byte[]) object);
case TIMESTAMP:
- return ((WritableTimestampObjectInspector) objectInspector).create(new Timestamp(0));
+ return ((WritableTimestampObjectInspector) objectInspector).create((Timestamp) object);
case INTERVAL_YEAR_MONTH:
- return ((WritableHiveIntervalYearMonthObjectInspector) objectInspector).create(new HiveIntervalYearMonth(0));
+ return ((WritableHiveIntervalYearMonthObjectInspector) objectInspector).create((HiveIntervalYearMonth) object);
case INTERVAL_DAY_TIME:
- return ((WritableHiveIntervalDayTimeObjectInspector) objectInspector).create(new HiveIntervalDayTime(0, 0));
+ return ((WritableHiveIntervalDayTimeObjectInspector) objectInspector).create((HiveIntervalDayTime) object);
case DECIMAL:
{
WritableHiveDecimalObjectInspector writableDecimalObjectInspector =
new WritableHiveDecimalObjectInspector((DecimalTypeInfo) primitiveTypeInfo);
- return writableDecimalObjectInspector.create(HiveDecimal.ZERO);
+ HiveDecimalWritable result = (HiveDecimalWritable) writableDecimalObjectInspector.create((HiveDecimal) object);
+ return result;
}
default:
throw new Error("Unknown primitive category " + primitiveCategory);
@@ -420,7 +422,7 @@ public class VectorRandomRowSource {
case CHAR:
return new HiveChar(result, ((CharTypeInfo) primitiveTypeInfo).getLength());
case VARCHAR:
- return new HiveChar(result, ((VarcharTypeInfo) primitiveTypeInfo).getLength());
+ return new HiveVarchar(result, ((VarcharTypeInfo) primitiveTypeInfo).getLength());
default:
throw new Error("Unknown primitive category " + primitiveCategory);
}
@@ -497,13 +499,9 @@ public class VectorRandomRowSource {
sb.append(RandomTypeUtil.getRandString(r, DECIMAL_CHARS, scale));
}
- HiveDecimal bd = HiveDecimal.create(sb.toString());
- if (bd.scale() > bd.precision()) {
- // Sometimes weird decimals are produced?
- continue;
- }
+ HiveDecimal dec = HiveDecimal.create(sb.toString());
- return bd;
+ return dec;
}
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestDecimalUtil.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestDecimalUtil.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestDecimalUtil.java
index da9ebca..9f4bd9d 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestDecimalUtil.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestDecimalUtil.java
@@ -229,7 +229,6 @@ public class TestDecimalUtil {
HiveDecimal d3 = HiveDecimal.create("0.00000");
Assert.assertEquals(0, d3.scale());
- d3.setScale(5);
DecimalUtil.sign(0, d3, lcv);
Assert.assertEquals(0, lcv.vector[0]);
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java
index e7a044e..c7d9fae 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/TestVectorTypeCasts.java
@@ -204,6 +204,10 @@ public class TestVectorTypeCasts {
// test basic case
VectorizedRowBatch b = getBatchDecimalLong();
VectorExpression expr = new CastDecimalToLong(0, 1);
+
+ // With the integer type range checking, we need to know the Hive data type.
+ expr.setOutputType("bigint");
+
expr.evaluate(b);
LongColumnVector r = (LongColumnVector) b.cols[1];
assertEquals(1, r.vector[0]);
@@ -265,9 +269,9 @@ public class TestVectorTypeCasts {
b.size = 3;
- dv.vector[0].set(HiveDecimal.create("1.1").setScale(scale));
- dv.vector[1].set(HiveDecimal.create("-2.2").setScale(scale));
- dv.vector[2].set(HiveDecimal.create("9999999999999999.00").setScale(scale));
+ dv.vector[0].set(HiveDecimal.create("1.1"));
+ dv.vector[1].set(HiveDecimal.create("-2.2"));
+ dv.vector[2].set(HiveDecimal.create("9999999999999999.00"));
return b;
}
@@ -325,9 +329,9 @@ public class TestVectorTypeCasts {
b.size = 3;
- dv.vector[0].set(HiveDecimal.create("1.1").setScale(scale));
- dv.vector[1].set(HiveDecimal.create("-2.2").setScale(scale));
- dv.vector[2].set(HiveDecimal.create("9999999999999999.00").setScale(scale));
+ dv.vector[0].set(HiveDecimal.create("1.1"));
+ dv.vector[1].set(HiveDecimal.create("-2.2"));
+ dv.vector[2].set(HiveDecimal.create("9999999999999999.00"));
return b;
}
@@ -366,9 +370,9 @@ public class TestVectorTypeCasts {
b.size = 3;
- dv.vector[0].set(HiveDecimal.create("1.1").setScale(scale));
- dv.vector[1].set(HiveDecimal.create("-2.2").setScale(scale));
- dv.vector[2].set(HiveDecimal.create("9999999999999999.00").setScale(scale));
+ dv.vector[0].set(HiveDecimal.create("1.1"));
+ dv.vector[1].set(HiveDecimal.create("-2.2"));
+ dv.vector[2].set(HiveDecimal.create("9999999999999999.00"));
return b;
}
@@ -399,9 +403,9 @@ public class TestVectorTypeCasts {
b.size = 3;
- dv.vector[0].set(HiveDecimal.create("1.111111111").setScale(scale));
- dv.vector[1].set(HiveDecimal.create("-2.222222222").setScale(scale));
- dv.vector[2].set(HiveDecimal.create("31536000.999999999").setScale(scale));
+ dv.vector[0].set(HiveDecimal.create("1.111111111"));
+ dv.vector[1].set(HiveDecimal.create("-2.222222222"));
+ dv.vector[2].set(HiveDecimal.create("31536000.999999999"));
return b;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/CheckFastRowHashMap.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/CheckFastRowHashMap.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/CheckFastRowHashMap.java
index bc7a658..638ccc5 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/CheckFastRowHashMap.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/CheckFastRowHashMap.java
@@ -166,7 +166,9 @@ public class CheckFastRowHashMap extends CheckFastHashTable {
}
} else {
if (thrown) {
- TestCase.fail("Not expecting an exception to be thrown for the non-clipped case...");
+ TestCase.fail("Not expecting an exception to be thrown for the non-clipped case... " +
+ " exception message " + debugExceptionMessage +
+ " stack trace " + getStackTraceAsSingleLine(debugStackTrace));
}
TestCase.assertTrue(lazyBinaryDeserializeRead.isEndOfInputReached());
}
@@ -382,4 +384,27 @@ public class CheckFastRowHashMap extends CheckFastHashTable {
}
}
}
+
+ static int STACK_LENGTH_LIMIT = 20;
+ public static String getStackTraceAsSingleLine(StackTraceElement[] stackTrace) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Stack trace: ");
+ int length = stackTrace.length;
+ boolean isTruncated = false;
+ if (length > STACK_LENGTH_LIMIT) {
+ length = STACK_LENGTH_LIMIT;
+ isTruncated = true;
+ }
+ for (int i = 0; i < length; i++) {
+ if (i > 0) {
+ sb.append(", ");
+ }
+ sb.append(stackTrace[i]);
+ }
+ if (isTruncated) {
+ sb.append(", ...");
+ }
+
+ return sb.toString();
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VerifyFastRow.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VerifyFastRow.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VerifyFastRow.java
index 239db73..91b3ead 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VerifyFastRow.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/mapjoin/fast/VerifyFastRow.java
@@ -67,7 +67,10 @@ public class VerifyFastRow {
isNull = !deserializeRead.readNextField();
if (isNull) {
if (writable != null) {
- TestCase.fail("Field reports null but object is not null");
+ TestCase.fail(
+ deserializeRead.getClass().getName() +
+ " field reports null but object is not null " +
+ "(class " + writable.getClass().getName() + ", " + writable.toString() + ")");
}
return;
} else if (writable == null) {
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java
index 84717b1..1f50282 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java
@@ -151,7 +151,7 @@ public class VectorizedRowGroupGenUtil {
HiveDecimalWritable repeatingValue = new HiveDecimalWritable();
do{
- repeatingValue.set(HiveDecimal.create(((Double) rand.nextDouble()).toString()).setScale((short)typeInfo.scale()));
+ repeatingValue.set(HiveDecimal.create(((Double) rand.nextDouble()).toString()).setScale((short)typeInfo.scale(), HiveDecimal.ROUND_HALF_UP));
}while(repeatingValue.getHiveDecimal().doubleValue() == 0);
int nullFrequency = generateNullFrequency(rand);
@@ -159,14 +159,14 @@ public class VectorizedRowGroupGenUtil {
for(int i = 0; i < size; i++) {
if(nulls && (repeating || i % nullFrequency == 0)) {
dcv.isNull[i] = true;
- dcv.vector[i] = null;//Decimal128.ONE;
+ dcv.vector[i] = null;
}else {
dcv.isNull[i] = false;
if (repeating) {
dcv.vector[i].set(repeatingValue);
} else {
- dcv.vector[i].set(HiveDecimal.create(((Double) rand.nextDouble()).toString()).setScale((short) typeInfo.scale()));
+ dcv.vector[i].set(HiveDecimal.create(((Double) rand.nextDouble()).toString()).setScale((short) typeInfo.scale(), HiveDecimal.ROUND_HALF_UP));
}
if(dcv.vector[i].getHiveDecimal().doubleValue() == 0) {
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/results/clientpositive/decimal_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/decimal_2.q.out b/ql/src/test/results/clientpositive/decimal_2.q.out
index 934590c..f3168f6 100644
--- a/ql/src/test/results/clientpositive/decimal_2.q.out
+++ b/ql/src/test/results/clientpositive/decimal_2.q.out
@@ -129,7 +129,7 @@ POSTHOOK: query: select cast(t as tinyint) from decimal_2
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_2
#### A masked pattern was here ####
-13
+NULL
PREHOOK: query: select cast(t as smallint) from decimal_2
PREHOOK: type: QUERY
PREHOOK: Input: default@decimal_2
@@ -138,7 +138,7 @@ POSTHOOK: query: select cast(t as smallint) from decimal_2
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_2
#### A masked pattern was here ####
--3827
+NULL
PREHOOK: query: select cast(t as int) from decimal_2
PREHOOK: type: QUERY
PREHOOK: Input: default@decimal_2
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_part_all_primitive.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_part_all_primitive.q.out
index 7831114..e0834bc 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_part_all_primitive.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_orc_nonvec_part_all_primitive.q.out
@@ -309,10 +309,10 @@ POSTHOOK: Input: default@part_change_various_various_boolean_to_bigint
POSTHOOK: Input: default@part_change_various_various_boolean_to_bigint@part=1
#### A masked pattern was here ####
insert_num part c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 b
-101 1 true NULL true NULL NULL NULL NULL NULL true 1 NULL NULL NULL NULL NULL NULL -128 -128 -128 NULL 1 -128 NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 -128 NULL NULL NULL NULL NULL -2147483648 -2147483648 -2147483648 NULL 1 -128 NULL -2147483648 NULL NULL NULL NULL NULL NULL 134416490068 original
+101 1 true NULL true NULL NULL NULL true NULL true 1 NULL NULL NULL NULL NULL NULL -128 -128 -128 NULL 1 -128 NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 -128 NULL NULL NULL NULL NULL -2147483648 -2147483648 -2147483648 NULL 1 -128 NULL -2147483648 NULL NULL NULL NULL NULL NULL 134416490068 original
101 1 true true true true true true true true true -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
102 1 false false false false false false false false false 127 127 127 127 127 127 127 127 127 127 127 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 new
-102 1 true true true true NULL NULL NULL NULL true 0 NULL NULL NULL NULL NULL NULL 127 127 127 NULL 0 127 NULL NULL NULL NULL NULL 32767 32767 32767 NULL 0 127 32767 NULL NULL NULL NULL 2147483647 2147483647 2147483647 NULL 0 127 32767 2147483647 NULL NULL NULL 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
+102 1 true true true true NULL NULL true NULL true 0 NULL NULL NULL NULL NULL NULL 127 127 127 NULL 0 127 NULL NULL NULL NULL NULL 32767 32767 32767 NULL 0 127 32767 NULL NULL NULL NULL 2147483647 2147483647 2147483647 NULL 0 127 32767 2147483647 NULL NULL NULL 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
103 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
103 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL original
104 1 true true true true true true true NULL true 1 NULL NULL NULL -100 30 NULL 23 23 23 NULL 1 23 NULL NULL -100 30 NULL 834 834 834 NULL 1 23 834 NULL -100 30 66475 203332 203332 203332 270912854 1 23 834 203332 -100 30 66475 888888857923222 888888857923222 888888857923222 270912854 original
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_part_all_primitive.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_part_all_primitive.q.out
index d240f82..e1496bb 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_part_all_primitive.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_orc_vec_part_all_primitive.q.out
@@ -309,10 +309,10 @@ POSTHOOK: Input: default@part_change_various_various_boolean_to_bigint
POSTHOOK: Input: default@part_change_various_various_boolean_to_bigint@part=1
#### A masked pattern was here ####
insert_num part c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 b
-101 1 true NULL true NULL NULL NULL NULL NULL true 1 NULL NULL NULL NULL NULL NULL -128 -128 -128 NULL 1 -128 NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 -128 NULL NULL NULL NULL NULL -2147483648 -2147483648 -2147483648 NULL 1 -128 NULL -2147483648 NULL NULL NULL NULL NULL NULL 134416490068 original
+101 1 true NULL true NULL NULL NULL true NULL true 1 NULL NULL NULL NULL NULL NULL -128 -128 -128 NULL 1 -128 NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 -128 NULL NULL NULL NULL NULL -2147483648 -2147483648 -2147483648 NULL 1 -128 NULL -2147483648 NULL NULL NULL NULL NULL NULL 134416490068 original
101 1 true true true true true true true true true -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
102 1 false false false false false false false false false 127 127 127 127 127 127 127 127 127 127 127 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 32767 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 new
-102 1 true true true true NULL NULL NULL NULL true 0 NULL NULL NULL NULL NULL NULL 127 127 127 NULL 0 127 NULL NULL NULL NULL NULL 32767 32767 32767 NULL 0 127 32767 NULL NULL NULL NULL 2147483647 2147483647 2147483647 NULL 0 127 32767 2147483647 NULL NULL NULL 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
+102 1 true true true true NULL NULL true NULL true 0 NULL NULL NULL NULL NULL NULL 127 127 127 NULL 0 127 NULL NULL NULL NULL NULL 32767 32767 32767 NULL 0 127 32767 NULL NULL NULL NULL 2147483647 2147483647 2147483647 NULL 0 127 32767 2147483647 NULL NULL NULL 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
103 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
103 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL original
104 1 true true true true true true true NULL true 1 NULL NULL NULL -100 30 NULL 23 23 23 NULL 1 23 NULL NULL -100 30 NULL 834 834 834 NULL 1 23 834 NULL -100 30 66475 203332 203332 203332 270912854 1 23 834 203332 -100 30 66475 888888857923222 888888857923222 888888857923222 270912854 original
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out
index b07986e..2a2e48a 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_text_nonvec_part_all_primitive.q.out
@@ -310,15 +310,15 @@ POSTHOOK: Input: default@part_change_various_various_boolean_to_bigint@part=1
#### A masked pattern was here ####
insert_num part c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 b
101 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL -128 -128 -128 -128 -128 -128 -128 -128 -128 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
-101 1 true NULL true NULL true true true true true 1 NULL 0 NULL -1 -1 -1 -128 -128 -128 84 1 -128 0 NULL -1 -1 -1 NULL NULL NULL -8620 1 -128 NULL NULL 2147483647 2147483647 1661992959 -2147483648 -2147483648 -2147483648 1272503892 1 -128 NULL -2147483648 9223372036854775807 9223372036854775807 7766279631452241919 NULL NULL NULL 134416490068 original
+101 1 true NULL true NULL true true true true true 1 NULL 0 NULL -1 -1 NULL -128 -128 -128 84 1 -128 0 NULL -1 -1 NULL NULL NULL NULL -8620 1 -128 NULL NULL 2147483647 2147483647 NULL -2147483648 -2147483648 -2147483648 1272503892 1 -128 NULL -2147483648 9223372036854775807 9223372036854775807 NULL NULL NULL NULL 134416490068 original
102 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL 127 127 127 127 127 127 127 127 127 NULL NULL NULL 32767 32767 32767 32767 32767 32767 32767 32767 NULL NULL NULL NULL 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 NULL NULL NULL NULL NULL 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 NULL new
-102 1 true true true true true true true true true 0 -1 -1 -1 0 0 1 127 127 127 -38 0 127 -1 -1 0 0 1 32767 32767 32767 7898 0 127 32767 -1 -2147483648 -2147483648 -1661992959 2147483647 2147483647 2147483647 1563893466 0 127 32767 2147483647 -9223372036854775808 -9223372036854775808 -7766279631452241919 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
+102 1 true true true true true true true true true 0 -1 -1 -1 0 0 NULL 127 127 127 -38 0 127 -1 -1 0 0 NULL 32767 32767 32767 7898 0 127 32767 -1 -2147483648 -2147483648 NULL 2147483647 2147483647 2147483647 1563893466 0 127 32767 2147483647 -9223372036854775808 -9223372036854775808 NULL 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
103 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
103 1 NULL NULL NULL NULL NULL NULL NULL false NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL original
104 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL 23 23 23 23 23 23 23 23 23 NULL NULL NULL 834 834 834 834 834 834 834 834 NULL NULL NULL NULL 203332 203332 203332 203332 203332 203332 203332 NULL NULL NULL NULL NULL 888888847499264 888888857923222 888888857923222 888888857923222 888888857923222 888888857923222 NULL new
-104 1 true true true true true true true true true 1 66 68 -106 -100 30 -85 23 23 23 86 1 23 6724 3734 -100 30 939 834 834 834 -12970 1 23 834 -1868624234 -100 30 66475 203332 203332 203332 270912854 1 23 834 203332 -100 30 66475 888888857923222 888888857923222 888888857923222 270912854 original
+104 1 true true true true true true true true true 1 66 68 -106 -100 30 NULL 23 23 23 86 1 23 6724 3734 -100 30 NULL 834 834 834 -12970 1 23 834 -1868624234 -100 30 66475 203332 203332 203332 270912854 1 23 834 203332 -100 30 66475 888888857923222 888888857923222 888888857923222 270912854 original
105 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL -99 -99 -99 -99 -99 -99 -99 -99 -99 NULL NULL NULL -28300 -28300 -28300 -28300 -28300 -28300 -28300 -28300 NULL NULL NULL NULL -999992 -999992 -999992 -999992 -999992 -999992 -999992 NULL NULL NULL NULL NULL -222282153984 -222282153733 -222282153733 -222282153733 -222282153733 -222282153733 NULL new
-105 1 true true true true NULL true true true true 0 116 -56 -5 NULL 34 36 -99 -99 -99 -41 0 -99 -16952 -32517 NULL -19422 9764 -28300 -28300 -28300 -16681 0 -99 -28300 1056145659 NULL 46114 9250340 -999992 -999992 -999992 663207639 0 -99 -28300 -999992 NULL 46114 9250340 -222282153733 -222282153733 -222282153733 663207639 original
+105 1 true true true true NULL true true true true 0 116 -56 -5 NULL 34 NULL -99 -99 -99 -41 0 -99 -16952 -32517 NULL -19422 NULL -28300 -28300 -28300 -16681 0 -99 -28300 1056145659 NULL 46114 9250340 -999992 -999992 -999992 663207639 0 -99 -28300 -999992 NULL 46114 9250340 -222282153733 -222282153733 -222282153733 663207639 original
PREHOOK: query: drop table part_change_various_various_boolean_to_bigint
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@part_change_various_various_boolean_to_bigint
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out
index fb38687..46da4f0 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_text_vec_part_all_primitive.q.out
@@ -314,15 +314,15 @@ POSTHOOK: Input: default@part_change_various_various_boolean_to_bigint@part=1
#### A masked pattern was here ####
insert_num part c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 b
101 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -128 -128 -128 -128 -128 -128 -128 -128 -128 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
-101 1 true NULL true NULL true true true true true NULL NULL 0 NULL -1 -1 -1 -128 -128 -128 84 NULL -128 0 NULL -1 -1 -1 NULL NULL NULL -8620 NULL -128 NULL NULL 2147483647 2147483647 1661992959 -2147483648 -2147483648 -2147483648 1272503892 NULL -128 NULL -2147483648 9223372036854775807 9223372036854775807 7766279631452241919 NULL NULL NULL 134416490068 original
+101 1 true NULL true NULL true true true true true NULL NULL 0 NULL -1 -1 NULL -128 -128 -128 84 NULL -128 0 NULL -1 -1 NULL NULL NULL NULL -8620 NULL -128 NULL NULL 2147483647 2147483647 NULL -2147483648 -2147483648 -2147483648 1272503892 NULL -128 NULL -2147483648 9223372036854775807 9223372036854775807 NULL NULL NULL NULL 134416490068 original
102 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL 127 127 127 127 127 127 127 127 127 NULL NULL NULL 32767 32767 32767 32767 32767 32767 32767 32767 NULL NULL NULL NULL 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 NULL NULL NULL NULL NULL 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 NULL new
-102 1 true true true true true true true true true 0 -1 -1 -1 0 0 1 127 127 127 -38 0 127 -1 -1 0 0 1 32767 32767 32767 7898 0 127 32767 -1 -2147483648 -2147483648 -1661992959 2147483647 2147483647 2147483647 1563893466 0 127 32767 2147483647 -9223372036854775808 -9223372036854775808 -7766279631452241919 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
+102 1 true true true true true true true true true 0 -1 -1 -1 0 0 NULL 127 127 127 -38 0 127 -1 -1 0 0 NULL 32767 32767 32767 7898 0 127 32767 -1 -2147483648 -2147483648 NULL 2147483647 2147483647 2147483647 1563893466 0 127 32767 2147483647 -9223372036854775808 -9223372036854775808 NULL 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
103 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
103 1 NULL NULL NULL NULL NULL NULL NULL false NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL original
104 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 23 23 23 23 23 23 23 23 23 NULL NULL NULL 834 834 834 834 834 834 834 834 NULL NULL NULL NULL 203332 203332 203332 203332 203332 203332 203332 NULL NULL NULL NULL NULL 888888847499264 888888857923222 888888857923222 888888857923222 888888857923222 888888857923222 NULL new
-104 1 true true true true true true true true true NULL 66 68 -106 -100 30 -85 23 23 23 86 NULL 23 6724 3734 -100 30 939 834 834 834 -12970 NULL 23 834 -1868624234 -100 30 66475 203332 203332 203332 270912854 NULL 23 834 203332 -100 30 66475 888888857923222 888888857923222 888888857923222 270912854 original
+104 1 true true true true true true true true true NULL 66 68 -106 -100 30 NULL 23 23 23 86 NULL 23 6724 3734 -100 30 NULL 834 834 834 -12970 NULL 23 834 -1868624234 -100 30 66475 203332 203332 203332 270912854 NULL 23 834 203332 -100 30 66475 888888857923222 888888857923222 888888857923222 270912854 original
105 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL -99 -99 -99 -99 -99 -99 -99 -99 -99 NULL NULL NULL -28300 -28300 -28300 -28300 -28300 -28300 -28300 -28300 NULL NULL NULL NULL -999992 -999992 -999992 -999992 -999992 -999992 -999992 NULL NULL NULL NULL NULL -222282153984 -222282153733 -222282153733 -222282153733 -222282153733 -222282153733 NULL new
-105 1 true true true true NULL true true true true 0 116 -56 -5 NULL 34 36 -99 -99 -99 -41 0 -99 -16952 -32517 NULL -19422 9764 -28300 -28300 -28300 -16681 0 -99 -28300 1056145659 NULL 46114 9250340 -999992 -999992 -999992 663207639 0 -99 -28300 -999992 NULL 46114 9250340 -222282153733 -222282153733 -222282153733 663207639 original
+105 1 true true true true NULL true true true true 0 116 -56 -5 NULL 34 NULL -99 -99 -99 -41 0 -99 -16952 -32517 NULL -19422 NULL -28300 -28300 -28300 -16681 0 -99 -28300 1056145659 NULL 46114 9250340 -999992 -999992 -999992 663207639 0 -99 -28300 -999992 NULL 46114 9250340 -222282153733 -222282153733 -222282153733 663207639 original
PREHOOK: query: drop table part_change_various_various_boolean_to_bigint
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@part_change_various_various_boolean_to_bigint
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out b/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out
index 85116e7..41a61a8 100644
--- a/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out
+++ b/ql/src/test/results/clientpositive/llap/schema_evol_text_vecrow_part_all_primitive.q.out
@@ -314,15 +314,15 @@ POSTHOOK: Input: default@part_change_various_various_boolean_to_bigint@part=1
#### A masked pattern was here ####
insert_num part c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 b
101 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL -128 -128 -128 -128 -128 -128 -128 -128 -128 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
-101 1 true NULL true NULL true true true true true 1 NULL 0 NULL -1 -1 -1 -128 -128 -128 84 1 -128 0 NULL -1 -1 -1 NULL NULL NULL -8620 1 -128 NULL NULL 2147483647 2147483647 1661992959 -2147483648 -2147483648 -2147483648 1272503892 1 -128 NULL -2147483648 9223372036854775807 9223372036854775807 7766279631452241919 NULL NULL NULL 134416490068 original
+101 1 true NULL true NULL true true true true true 1 NULL 0 NULL -1 -1 NULL -128 -128 -128 84 1 -128 0 NULL -1 -1 NULL NULL NULL NULL -8620 1 -128 NULL NULL 2147483647 2147483647 NULL -2147483648 -2147483648 -2147483648 1272503892 1 -128 NULL -2147483648 9223372036854775807 9223372036854775807 NULL NULL NULL NULL 134416490068 original
102 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL 127 127 127 127 127 127 127 127 127 NULL NULL NULL 32767 32767 32767 32767 32767 32767 32767 32767 NULL NULL NULL NULL 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 2147483647 NULL NULL NULL NULL NULL 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 NULL new
-102 1 true true true true true true true true true 0 -1 -1 -1 0 0 1 127 127 127 -38 0 127 -1 -1 0 0 1 32767 32767 32767 7898 0 127 32767 -1 -2147483648 -2147483648 -1661992959 2147483647 2147483647 2147483647 1563893466 0 127 32767 2147483647 -9223372036854775808 -9223372036854775808 -7766279631452241919 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
+102 1 true true true true true true true true true 0 -1 -1 -1 0 0 NULL 127 127 127 -38 0 127 -1 -1 0 0 NULL 32767 32767 32767 7898 0 127 32767 -1 -2147483648 -2147483648 NULL 2147483647 2147483647 2147483647 1563893466 0 127 32767 2147483647 -9223372036854775808 -9223372036854775808 NULL 9223372036854775807 9223372036854775807 9223372036854775807 126117945050 original
103 1 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL new
103 1 NULL NULL NULL NULL NULL NULL NULL false NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL original
104 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL 23 23 23 23 23 23 23 23 23 NULL NULL NULL 834 834 834 834 834 834 834 834 NULL NULL NULL NULL 203332 203332 203332 203332 203332 203332 203332 NULL NULL NULL NULL NULL 888888847499264 888888857923222 888888857923222 888888857923222 888888857923222 888888857923222 NULL new
-104 1 true true true true true true true true true 1 66 68 -106 -100 30 -85 23 23 23 86 1 23 6724 3734 -100 30 939 834 834 834 -12970 1 23 834 -1868624234 -100 30 66475 203332 203332 203332 270912854 1 23 834 203332 -100 30 66475 888888857923222 888888857923222 888888857923222 270912854 original
+104 1 true true true true true true true true true 1 66 68 -106 -100 30 NULL 23 23 23 86 1 23 6724 3734 -100 30 NULL 834 834 834 -12970 1 23 834 -1868624234 -100 30 66475 203332 203332 203332 270912854 1 23 834 203332 -100 30 66475 888888857923222 888888857923222 888888857923222 270912854 original
105 1 NULL NULL NULL NULL NULL NULL NULL true NULL NULL -99 -99 -99 -99 -99 -99 -99 -99 -99 NULL NULL NULL -28300 -28300 -28300 -28300 -28300 -28300 -28300 -28300 NULL NULL NULL NULL -999992 -999992 -999992 -999992 -999992 -999992 -999992 NULL NULL NULL NULL NULL -222282153984 -222282153733 -222282153733 -222282153733 -222282153733 -222282153733 NULL new
-105 1 true true true true NULL true true true true 0 116 -56 -5 NULL 34 36 -99 -99 -99 -41 0 -99 -16952 -32517 NULL -19422 9764 -28300 -28300 -28300 -16681 0 -99 -28300 1056145659 NULL 46114 9250340 -999992 -999992 -999992 663207639 0 -99 -28300 -999992 NULL 46114 9250340 -222282153733 -222282153733 -222282153733 663207639 original
+105 1 true true true true NULL true true true true 0 116 -56 -5 NULL 34 NULL -99 -99 -99 -41 0 -99 -16952 -32517 NULL -19422 NULL -28300 -28300 -28300 -16681 0 -99 -28300 1056145659 NULL 46114 9250340 -999992 -999992 -999992 663207639 0 -99 -28300 -999992 NULL 46114 9250340 -222282153733 -222282153733 -222282153733 663207639 original
PREHOOK: query: drop table part_change_various_various_boolean_to_bigint
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@part_change_various_various_boolean_to_bigint
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/results/clientpositive/llap/vector_decimal_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_decimal_2.q.out b/ql/src/test/results/clientpositive/llap/vector_decimal_2.q.out
index ef1e561..db5e183 100644
--- a/ql/src/test/results/clientpositive/llap/vector_decimal_2.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_decimal_2.q.out
@@ -661,7 +661,7 @@ POSTHOOK: query: select cast(t as tinyint) from decimal_2 order by t
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_2
#### A masked pattern was here ####
-13
+NULL
PREHOOK: query: explain
select cast(t as smallint) from decimal_2 order by t
PREHOOK: type: QUERY
@@ -724,7 +724,7 @@ POSTHOOK: query: select cast(t as smallint) from decimal_2 order by t
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_2
#### A masked pattern was here ####
--3827
+NULL
PREHOOK: query: explain
select cast(t as int) from decimal_2 order by t
PREHOOK: type: QUERY
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/results/clientpositive/llap/vector_decimal_expressions.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/llap/vector_decimal_expressions.q.out b/ql/src/test/results/clientpositive/llap/vector_decimal_expressions.q.out
index cf264e8..b37e30b 100644
--- a/ql/src/test/results/clientpositive/llap/vector_decimal_expressions.q.out
+++ b/ql/src/test/results/clientpositive/llap/vector_decimal_expressions.q.out
@@ -90,13 +90,13 @@ LIMIT 10
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_test
#### A masked pattern was here ####
-1836.44199584197700 -1166.02723492725400 0.8372697814834 245972.55810810255804469 5.6189189189 835 1000 -24 835 true 1000.823076923077 835.6189 1000.823076923077 1969-12-31 16:13:55.618918918
-1856.13222453224620 -1178.52931392929240 0.8372449787014 251275.44324324968747899 4.5783783784 844 1011 -13 844 true 1011.5538461538462 844.57837 1011.5538461538462 1969-12-31 16:14:04.578378378
-1858.75758835761550 -1180.19625779623100 0.8372417113669 251986.76756757564861519 5.7729729730 845 1012 -12 845 true 1012.9846153846155 845.77295 1012.9846153846155 1969-12-31 16:14:05.772972973
-1862.69563409566930 -1182.69667359663860 0.8372368276345 253055.63918919969667286 7.5648648649 847 1015 -9 847 true 1015.1307692307693 847.5649 1015.1307692307693 1969-12-31 16:14:07.564864864
-1883.69854469852330 -1196.03222453224660 0.8372111259286 258794.49324323677116559 7.1216216216 857 1026 2 857 true 1026.5769230769233 857.12164 1026.5769230769233 1969-12-31 16:14:17.121621621
-1886.32390852389240 -1197.69916839918480 0.8372079534582 259516.37432431944456816 8.3162162162 858 1028 4 858 true 1028.0076923076924 858.3162 1028.0076923076924 1969-12-31 16:14:18.316216216
-1887.63659043657700 -1198.53264033265400 0.8372063705322 259877.69189188782259834 8.9135135135 858 1028 4 858 true 1028.723076923077 858.9135 1028.723076923077 1969-12-31 16:14:18.913513513
-1895.51268191268460 -1203.53347193346920 0.8371969190171 262050.87567567649292835 2.4972972973 862 1033 9 862 true 1033.0153846153846 862.4973 1033.0153846153846 1969-12-31 16:14:22.497297297
-1909.95218295221550 -1212.70166320163100 0.8371797936946 266058.54729730725574014 9.0675675676 869 1040 16 869 true 1040.8846153846155 869.06757 1040.8846153846155 1969-12-31 16:14:29.067567567
-1913.89022869026920 -1215.20207900203840 0.8371751679996 267156.82702703945592392 0.8594594595 870 1043 19 870 true 1043.0307692307692 870.85944 1043.0307692307692 1969-12-31 16:14:30.859459459
+1836.44199584197700 -1166.02723492725400 0.8372697814834 245972.55810810255804469 5.6189189189 835 1000 NULL 835 true 1000.823076923077 835.6189 1000.823076923077 1969-12-31 16:13:55.618918918
+1856.13222453224620 -1178.52931392929240 0.8372449787014 251275.44324324968747899 4.5783783784 844 1011 NULL 844 true 1011.5538461538462 844.57837 1011.5538461538462 1969-12-31 16:14:04.578378378
+1858.75758835761550 -1180.19625779623100 0.8372417113669 251986.76756757564861519 5.7729729730 845 1012 NULL 845 true 1012.9846153846155 845.77295 1012.9846153846155 1969-12-31 16:14:05.772972973
+1862.69563409566930 -1182.69667359663860 0.8372368276345 253055.63918919969667286 7.5648648649 847 1015 NULL 847 true 1015.1307692307693 847.5649 1015.1307692307693 1969-12-31 16:14:07.564864864
+1883.69854469852330 -1196.03222453224660 0.8372111259286 258794.49324323677116559 7.1216216216 857 1026 NULL 857 true 1026.5769230769233 857.12164 1026.5769230769233 1969-12-31 16:14:17.121621621
+1886.32390852389240 -1197.69916839918480 0.8372079534582 259516.37432431944456816 8.3162162162 858 1028 NULL 858 true 1028.0076923076924 858.3162 1028.0076923076924 1969-12-31 16:14:18.316216216
+1887.63659043657700 -1198.53264033265400 0.8372063705322 259877.69189188782259834 8.9135135135 858 1028 NULL 858 true 1028.723076923077 858.9135 1028.723076923077 1969-12-31 16:14:18.913513513
+1895.51268191268460 -1203.53347193346920 0.8371969190171 262050.87567567649292835 2.4972972973 862 1033 NULL 862 true 1033.0153846153846 862.4973 1033.0153846153846 1969-12-31 16:14:22.497297297
+1909.95218295221550 -1212.70166320163100 0.8371797936946 266058.54729730725574014 9.0675675676 869 1040 NULL 869 true 1040.8846153846155 869.06757 1040.8846153846155 1969-12-31 16:14:29.067567567
+1913.89022869026920 -1215.20207900203840 0.8371751679996 267156.82702703945592392 0.8594594595 870 1043 NULL 870 true 1043.0307692307692 870.85944 1043.0307692307692 1969-12-31 16:14:30.859459459
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
index 895116d..316dabc 100644
--- a/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
+++ b/ql/src/test/results/clientpositive/vector_decimal_expressions.q.out
@@ -81,13 +81,13 @@ LIMIT 10
POSTHOOK: type: QUERY
POSTHOOK: Input: default@decimal_test
#### A masked pattern was here ####
-1836.44199584197700 -1166.02723492725400 0.8372697814834 245972.55810810255804469 5.6189189189 835 1000 -24 835 true 1000.823076923077 835.6189 1000.823076923077 1969-12-31 16:13:55.618918918
-1856.13222453224620 -1178.52931392929240 0.8372449787014 251275.44324324968747899 4.5783783784 844 1011 -13 844 true 1011.5538461538462 844.57837 1011.5538461538462 1969-12-31 16:14:04.578378378
-1858.75758835761550 -1180.19625779623100 0.8372417113669 251986.76756757564861519 5.7729729730 845 1012 -12 845 true 1012.9846153846155 845.77295 1012.9846153846155 1969-12-31 16:14:05.772972973
-1862.69563409566930 -1182.69667359663860 0.8372368276345 253055.63918919969667286 7.5648648649 847 1015 -9 847 true 1015.1307692307693 847.5649 1015.1307692307693 1969-12-31 16:14:07.564864864
-1883.69854469852330 -1196.03222453224660 0.8372111259286 258794.49324323677116559 7.1216216216 857 1026 2 857 true 1026.5769230769233 857.12164 1026.5769230769233 1969-12-31 16:14:17.121621621
-1886.32390852389240 -1197.69916839918480 0.8372079534582 259516.37432431944456816 8.3162162162 858 1028 4 858 true 1028.0076923076924 858.3162 1028.0076923076924 1969-12-31 16:14:18.316216216
-1887.63659043657700 -1198.53264033265400 0.8372063705322 259877.69189188782259834 8.9135135135 858 1028 4 858 true 1028.723076923077 858.9135 1028.723076923077 1969-12-31 16:14:18.913513513
-1895.51268191268460 -1203.53347193346920 0.8371969190171 262050.87567567649292835 2.4972972973 862 1033 9 862 true 1033.0153846153846 862.4973 1033.0153846153846 1969-12-31 16:14:22.497297297
-1909.95218295221550 -1212.70166320163100 0.8371797936946 266058.54729730725574014 9.0675675676 869 1040 16 869 true 1040.8846153846155 869.06757 1040.8846153846155 1969-12-31 16:14:29.067567567
-1913.89022869026920 -1215.20207900203840 0.8371751679996 267156.82702703945592392 0.8594594595 870 1043 19 870 true 1043.0307692307692 870.85944 1043.0307692307692 1969-12-31 16:14:30.859459459
+1836.44199584197700 -1166.02723492725400 0.8372697814834 245972.55810810255804469 5.6189189189 835 1000 NULL 835 true 1000.823076923077 835.6189 1000.823076923077 1969-12-31 16:13:55.618918918
+1856.13222453224620 -1178.52931392929240 0.8372449787014 251275.44324324968747899 4.5783783784 844 1011 NULL 844 true 1011.5538461538462 844.57837 1011.5538461538462 1969-12-31 16:14:04.578378378
+1858.75758835761550 -1180.19625779623100 0.8372417113669 251986.76756757564861519 5.7729729730 845 1012 NULL 845 true 1012.9846153846155 845.77295 1012.9846153846155 1969-12-31 16:14:05.772972973
+1862.69563409566930 -1182.69667359663860 0.8372368276345 253055.63918919969667286 7.5648648649 847 1015 NULL 847 true 1015.1307692307693 847.5649 1015.1307692307693 1969-12-31 16:14:07.564864864
+1883.69854469852330 -1196.03222453224660 0.8372111259286 258794.49324323677116559 7.1216216216 857 1026 NULL 857 true 1026.5769230769233 857.12164 1026.5769230769233 1969-12-31 16:14:17.121621621
+1886.32390852389240 -1197.69916839918480 0.8372079534582 259516.37432431944456816 8.3162162162 858 1028 NULL 858 true 1028.0076923076924 858.3162 1028.0076923076924 1969-12-31 16:14:18.316216216
+1887.63659043657700 -1198.53264033265400 0.8372063705322 259877.69189188782259834 8.9135135135 858 1028 NULL 858 true 1028.723076923077 858.9135 1028.723076923077 1969-12-31 16:14:18.913513513
+1895.51268191268460 -1203.53347193346920 0.8371969190171 262050.87567567649292835 2.4972972973 862 1033 NULL 862 true 1033.0153846153846 862.4973 1033.0153846153846 1969-12-31 16:14:22.497297297
+1909.95218295221550 -1212.70166320163100 0.8371797936946 266058.54729730725574014 9.0675675676 869 1040 NULL 869 true 1040.8846153846155 869.06757 1040.8846153846155 1969-12-31 16:14:29.067567567
+1913.89022869026920 -1215.20207900203840 0.8371751679996 267156.82702703945592392 0.8594594595 870 1043 NULL 870 true 1043.0307692307692 870.85944 1043.0307692307692 1969-12-31 16:14:30.859459459
http://git-wip-us.apache.org/repos/asf/hive/blob/4ba713cc/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java
----------------------------------------------------------------------
diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java
index 3a539b2..b6b23c2 100644
--- a/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java
+++ b/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerdeUtils.java
@@ -241,8 +241,9 @@ public class AvroSerdeUtils {
return null;
}
- dec = dec.setScale(scale);
- return AvroSerdeUtils.getBufferFromBytes(dec.unscaledValue().toByteArray());
+ // NOTE: Previously, we did OldHiveDecimal.setScale(scale), called OldHiveDecimal
+ // unscaledValue().toByteArray().
+ return AvroSerdeUtils.getBufferFromBytes(dec.bigIntegerBytesScaled(scale));
}
public static byte[] getBytesFromByteBuffer(ByteBuffer byteBuffer) {