diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java index 043fdd63e7..dc12d61589 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java @@ -2480,7 +2480,8 @@ private VectorExpression getCoalesceExpression(List childExpr, inputColumns[i] = ve.getOutputColumnNum(); inputTypeInfos[i] = ve.getOutputTypeInfo(); inputDataTypePhysicalVariations[i] = ve.getOutputDataTypePhysicalVariation(); - if (inputDataTypePhysicalVariations[i] == DataTypePhysicalVariation.NONE) { + if (inputDataTypePhysicalVariations[i] == DataTypePhysicalVariation.NONE || + inputDataTypePhysicalVariations[i] == null) { if (childExpr.get(i) instanceof ExprNodeConstantDesc && inputTypeInfos[i] instanceof DecimalTypeInfo && ((DecimalTypeInfo)inputTypeInfos[i]).precision() <= 18) { fixConstants = true; @@ -2492,8 +2493,8 @@ private VectorExpression getCoalesceExpression(List childExpr, if (outputDataTypePhysicalVariation == DataTypePhysicalVariation.DECIMAL_64 && fixConstants) { for (int i = 0; i < vectorChildren.length; ++i) { - if (inputDataTypePhysicalVariations[i] == DataTypePhysicalVariation.NONE && - vectorChildren[i] instanceof ConstantVectorExpression) { + if ((inputDataTypePhysicalVariations[i] == DataTypePhysicalVariation.NONE || + inputDataTypePhysicalVariations[i] == null) && vectorChildren[i] instanceof ConstantVectorExpression) { ConstantVectorExpression cve = ((ConstantVectorExpression)vectorChildren[i]); HiveDecimal hd = cve.getDecimalValue(); Long longValue = new HiveDecimalWritable(hd).serialize64(((DecimalTypeInfo)cve.getOutputTypeInfo()).getScale());