diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java index d61af63fe9b4889c191d703c45b815525c784ef8..52225e535598de60b87ed73052dd2d09c634159e 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java +++ b/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 Long.valueOf(((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(Long.valueOf(((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 Long.valueOf(((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)