diff --git ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java index a5b4eb0..1cda045 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java @@ -2665,10 +2665,10 @@ static TruthValue evaluatePredicateRange(PredicateLeaf predicate, Object min, result = evaluatePredicateBloomFilter(predicate, predObj, bloomFilter, hasNull); } // in case failed conversion, return the default YES_NO_NULL truth value - } catch (NumberFormatException nfe) { + } catch (Exception e) { if (LOG.isWarnEnabled()) { - LOG.warn("NumberFormatException when type matching predicate object" + - " and statistics object. Exception: " + ExceptionUtils.getStackTrace(nfe)); + LOG.warn("Exception when evaluating predicate. Skipping ORC PPD." + + " Exception: " + ExceptionUtils.getStackTrace(e)); } result = hasNull ? TruthValue.YES_NO_NULL : TruthValue.YES_NO; } 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)