diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index 79a6181..834db9a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -517,16 +517,17 @@ private static ExprNodeDesc evaluateFunction(GenericUDF udf, List if (PrimitiveObjectInspectorUtils.isPrimitiveWritableClass(clz)) { PrimitiveObjectInspector poi = (PrimitiveObjectInspector) oi; TypeInfo typeInfo = poi.getTypeInfo(); - - // Handling parameterized types (varchar, decimal, etc). - if (typeInfo.getTypeName().contains(serdeConstants.DECIMAL_TYPE_NAME) - || typeInfo.getTypeName().contains(serdeConstants.VARCHAR_TYPE_NAME) + // Handling parameterized types (varchar etc). + if (typeInfo.getTypeName().contains(serdeConstants.VARCHAR_TYPE_NAME) || typeInfo.getTypeName().contains(serdeConstants.CHAR_TYPE_NAME)) { // Do not support parameterized types. return null; } o = poi.getPrimitiveJavaObject(o); + if (typeInfo.getTypeName().contains(serdeConstants.DECIMAL_TYPE_NAME)) { + return new ExprNodeConstantDesc(typeInfo, o); + } } else if (PrimitiveObjectInspectorUtils.isPrimitiveJavaClass(clz)) { } else {