diff --git ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java index d61af63..79e216e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java @@ -128,7 +128,7 @@ public Object getLiteral(FileFormat format) { case ORC: // adapt base type to what orc needs if (literal instanceof Integer) { - return Long.valueOf(literal.toString()); + return ((Number) literal).longValue(); } return literal; case PARQUET: @@ -157,9 +157,9 @@ public Object getLiteral(FileFormat format) { Integer)) { return literalList; } - List result = new ArrayList(); + List result = new ArrayList(literalList.size()); for (Object o : literalList) { - result.add(Long.valueOf(o.toString())); + result.add(((Number) o).longValue()); } return result; } @@ -1114,7 +1114,7 @@ private static Object boxLiteral(Object literal) { } else if (literal instanceof Byte || literal instanceof Short || literal instanceof Integer) { - return Long.valueOf(literal.toString()); + return ((Number) literal).longValue(); } else if (literal instanceof Float) { // to avoid change in precision when upcasting float to double // we convert the literal to string and parse it as double. (HIVE-8460)