public static PrimitiveTypeInfo deriveMinArgumentCast(
      TypeInfo childTi, TypeInfo targetType) {
    assert targetType instanceof PrimitiveTypeInfo : "Not a primitive type" + targetType;
    PrimitiveTypeInfo pti = (PrimitiveTypeInfo)targetType;
    // We only do the minimum cast for decimals. Other types are assumed safe; fix if needed.
    // We also don't do anything for non-primitive children (maybe we should assert).
    if ((pti.getPrimitiveCategory() != PrimitiveCategory.DECIMAL)
        || (!(childTi instanceof PrimitiveTypeInfo))) {
      return pti;
    }
    // If the child is also decimal, no cast is needed (we hope - can target type be narrower?).
    return HiveDecimalUtils.getDecimalTypeForPrimitiveCategory((PrimitiveTypeInfo) childTi);
  }
Get Map of ExprNodeColumnDesc HashCode to ExprNodeColumnDesc.

@param exprDesc
@param hashCodeToColumnDescMap
ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDescUtils.java