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 8e0f42e..6527898 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 @@ -381,7 +381,7 @@ static TruthValue evaluatePredicateRange(PredicateLeaf predicate, Object min, // When STRINGs are converted to other base types, NumberFormat exception // can occur in which case TruthValue.YES_NO_NULL value is returned try { - Object baseObj = predicate.getLiteral(PredicateLeaf.FileFormat.ORC); + Object baseObj = predicate.getLiteral(); Object minValue = getConvertedStatsObj(min, baseObj); Object maxValue = getConvertedStatsObj(max, baseObj); Object predObj = getBaseObjectForComparison(baseObj, minValue); @@ -446,7 +446,7 @@ private static TruthValue evaluatePredicateMinMax(PredicateLeaf predicate, Objec if (minValue.equals(maxValue)) { // for a single value, look through to see if that value is in the // set - for (Object arg : predicate.getLiteralList(PredicateLeaf.FileFormat.ORC)) { + for (Object arg : predicate.getLiteralList()) { predObj = getBaseObjectForComparison(arg, minValue); loc = compareToRange((Comparable) predObj, minValue, maxValue); if (loc == Location.MIN) { @@ -456,7 +456,7 @@ private static TruthValue evaluatePredicateMinMax(PredicateLeaf predicate, Objec return hasNull ? TruthValue.NO_NULL : TruthValue.NO; } else { // are all of the values outside of the range? - for (Object arg : predicate.getLiteralList(PredicateLeaf.FileFormat.ORC)) { + for (Object arg : predicate.getLiteralList()) { predObj = getBaseObjectForComparison(arg, minValue); loc = compareToRange((Comparable) predObj, minValue, maxValue); if (loc == Location.MIN || loc == Location.MIDDLE || @@ -467,7 +467,7 @@ private static TruthValue evaluatePredicateMinMax(PredicateLeaf predicate, Objec return hasNull ? TruthValue.NO_NULL : TruthValue.NO; } case BETWEEN: - List args = predicate.getLiteralList(PredicateLeaf.FileFormat.ORC); + List args = predicate.getLiteralList(); Object predObj1 = getBaseObjectForComparison(args.get(0), minValue); loc = compareToRange((Comparable) predObj1, minValue, maxValue); @@ -504,7 +504,7 @@ private static TruthValue evaluatePredicateBloomFilter(PredicateLeaf predicate, case EQUALS: return checkInBloomFilter(bloomFilter, predObj, hasNull); case IN: - for (Object arg : predicate.getLiteralList(PredicateLeaf.FileFormat.ORC)) { + for (Object arg : predicate.getLiteralList()) { // if atleast one value in IN list exist in bloom filter, qualify the row group/stripe TruthValue result = checkInBloomFilter(bloomFilter, arg, hasNull); if (result == TruthValue.YES_NO_NULL || result == TruthValue.YES_NO) { @@ -576,16 +576,18 @@ private static Object getBaseObjectForComparison(Object predObj, Object statsObj } // following are implicitly convertible if (statsObj instanceof Long) { - if (predObj instanceof Double) { - return ((Double) predObj).longValue(); + if (predObj instanceof Number) { + // widening conversion + return ((Number) predObj).longValue(); } else if (predObj instanceof HiveDecimal) { return ((HiveDecimal) predObj).longValue(); } else if (predObj instanceof String) { return Long.valueOf(predObj.toString()); } } else if (statsObj instanceof Double) { - if (predObj instanceof Long) { - return ((Long) predObj).doubleValue(); + if (predObj instanceof Number) { + // widening conversion + return ((Number) predObj).doubleValue(); } else if (predObj instanceof HiveDecimal) { return ((HiveDecimal) predObj).doubleValue(); } else if (predObj instanceof String) { @@ -594,10 +596,13 @@ private static Object getBaseObjectForComparison(Object predObj, Object statsObj } else if (statsObj instanceof String) { return predObj.toString(); } else if (statsObj instanceof HiveDecimal) { + /* all other cases we were fine with loss of precision by conversions */ if (predObj instanceof Long) { return HiveDecimal.create(((Long) predObj)); } else if (predObj instanceof Double) { return HiveDecimal.create(predObj.toString()); + } else if (predObj instanceof Integer) { + return HiveDecimal.create(((Integer) predObj).intValue()); } else if (predObj instanceof String) { return HiveDecimal.create(predObj.toString()); } else if (predObj instanceof BigDecimal) { 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..c6df53d 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 @@ -116,7 +116,7 @@ public String getColumnName() { } @Override - public Object getLiteral(FileFormat format) { + public Object getLiteral() { // To get around a kryo 2.22 bug while deserialize a Timestamp into Date // (https://github.com/EsotericSoftware/kryo/issues/88) // When we see a Date, convert back into Timestamp @@ -124,47 +124,11 @@ public Object getLiteral(FileFormat format) { return new Timestamp(((java.util.Date) literal).getTime()); } - switch (format) { - case ORC: - // adapt base type to what orc needs - if (literal instanceof Integer) { - return Long.valueOf(literal.toString()); - } - return literal; - case PARQUET: - return literal; - default: - throw new RuntimeException( - "File format " + format + "is not support to build search arguments"); - } + return literal; } @Override - public List getLiteralList(FileFormat format) { - switch (format) { - case ORC: - return getOrcLiteralList(); - case PARQUET: - return getParquetLiteralList(); - default: - throw new RuntimeException("File format is not support to build search arguments"); - } - } - - private List getOrcLiteralList() { - // no need to cast - if (literalList == null || literalList.size() == 0 || !(literalList.get(0) instanceof - Integer)) { - return literalList; - } - List result = new ArrayList(); - for (Object o : literalList) { - result.add(Long.valueOf(o.toString())); - } - return result; - } - - private List getParquetLiteralList() { + public List getLiteralList() { return literalList; } @@ -350,13 +314,17 @@ private FilterPredicate buildFilterPredicateFromPredicateLeaf(PredicateLeaf leaf try { builder = leafFilterFactory .getLeafFilterBuilderByType(leaf.getType()); - if (builder == null) return null; + if (builder == null) { + return null; + } if (isMultiLiteralsOperator(leaf.getOperator())) { - return builder.buildPredicate(leaf.getOperator(), leaf.getLiteralList( - PredicateLeaf.FileFormat.PARQUET), leaf.getColumnName()); + return builder.buildPredicate(leaf.getOperator(), + leaf.getLiteralList(), + leaf.getColumnName()); } else { return builder - .buildPredict(leaf.getOperator(), leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET), + .buildPredict(leaf.getOperator(), + leaf.getLiteral(), leaf.getColumnName()); } } catch (Exception e) { diff --git ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java index 22eea0b..5e61aba 100644 --- ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java +++ ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java @@ -802,64 +802,55 @@ public void testExpression1() throws Exception { assertEquals(PredicateLeaf.Type.STRING, leaf.getType()); assertEquals(PredicateLeaf.Operator.EQUALS, leaf.getOperator()); assertEquals("first_name", leaf.getColumnName()); - assertEquals("john", leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals("john", leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals("john", leaf.getLiteral()); leaf = leaves.get(1); assertEquals(PredicateLeaf.Type.STRING, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN_EQUALS, leaf.getOperator()); assertEquals("first_name", leaf.getColumnName()); - assertEquals("greg", leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals("greg", leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals("greg", leaf.getLiteral()); leaf = leaves.get(2); assertEquals(PredicateLeaf.Type.STRING, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("first_name", leaf.getColumnName()); - assertEquals("alan", leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals("alan", leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals("alan", leaf.getLiteral()); leaf = leaves.get(3); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN_EQUALS, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(12L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(12, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(12, leaf.getLiteral()); leaf = leaves.get(4); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN_EQUALS, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(13L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(13, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(13, leaf.getLiteral()); leaf = leaves.get(5); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(15L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(15, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(15, leaf.getLiteral()); leaf = leaves.get(6); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(16L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(16, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(16, leaf.getLiteral()); leaf = leaves.get(7); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.NULL_SAFE_EQUALS, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(30L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(30, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(30, leaf.getLiteral()); leaf = leaves.get(8); assertEquals(PredicateLeaf.Type.STRING, leaf.getType()); assertEquals(PredicateLeaf.Operator.NULL_SAFE_EQUALS, leaf.getOperator()); assertEquals("first_name", leaf.getColumnName()); - assertEquals("owen", leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals("owen", leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals("owen", leaf.getLiteral()); assertEquals("(and (or leaf-0 (not leaf-1) leaf-2 (not leaf-3)" + " (not leaf-4) leaf-5 leaf-6 leaf-7)" + @@ -1090,31 +1081,26 @@ public void testExpression2() throws Exception { assertEquals(PredicateLeaf.Type.STRING, leaf.getType()); assertEquals(PredicateLeaf.Operator.IS_NULL, leaf.getOperator()); assertEquals("first_name", leaf.getColumnName()); - assertEquals(null, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(null, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); - assertEquals(null, leaf.getLiteralList(PredicateLeaf.FileFormat.ORC)); - assertEquals(null, leaf.getLiteralList(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(null, leaf.getLiteral()); + assertEquals(null, leaf.getLiteralList()); leaf = leaves.get(1); assertEquals(PredicateLeaf.Type.STRING, leaf.getType()); assertEquals(PredicateLeaf.Operator.EQUALS, leaf.getOperator()); assertEquals("first_name", leaf.getColumnName()); - assertEquals("sue", leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals("sue", leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals("sue", leaf.getLiteral()); leaf = leaves.get(2); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(12L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(12, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(12, leaf.getLiteral()); leaf = leaves.get(3); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN_EQUALS, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(4L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(4, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(4, leaf.getLiteral()); assertEquals("(or leaf-0 (not leaf-1) (not leaf-2) leaf-3)", sarg.getExpression().toString()); @@ -1525,26 +1511,21 @@ public void testExpression3() throws Exception { assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.BETWEEN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(null, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(null, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); - assertEquals(23L, leaf.getLiteralList(PredicateLeaf.FileFormat.ORC).get(0)); - assertEquals(23, leaf.getLiteralList(PredicateLeaf.FileFormat.PARQUET).get(0)); - assertEquals(45L, leaf.getLiteralList(PredicateLeaf.FileFormat.ORC).get(1)); - assertEquals(45, leaf.getLiteralList(PredicateLeaf.FileFormat.PARQUET).get(1)); + assertEquals(null, leaf.getLiteral()); + assertEquals(23, leaf.getLiteralList().get(0)); + assertEquals(45, leaf.getLiteralList().get(1)); leaf = leaves.get(1); assertEquals(PredicateLeaf.Type.STRING, leaf.getType()); assertEquals(PredicateLeaf.Operator.EQUALS, leaf.getOperator()); assertEquals("first_name", leaf.getColumnName()); - assertEquals("alan", leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals("alan", leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals("alan", leaf.getLiteral()); leaf = leaves.get(2); assertEquals(PredicateLeaf.Type.STRING, leaf.getType()); assertEquals(PredicateLeaf.Operator.EQUALS, leaf.getOperator()); assertEquals("last_name", leaf.getColumnName()); - assertEquals("smith", leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals("smith", leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals("smith", leaf.getLiteral()); assertEquals("(and leaf-0 leaf-1 leaf-2)", sarg.getExpression().toString()); @@ -1751,26 +1732,21 @@ id in (34,50) */ assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.EQUALS, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(12L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(12, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(12, leaf.getLiteral()); leaf = leaves.get(1); assertEquals(PredicateLeaf.Type.STRING, leaf.getType()); assertEquals(PredicateLeaf.Operator.IN, leaf.getOperator()); assertEquals("first_name", leaf.getColumnName()); - assertEquals("john", leaf.getLiteralList(PredicateLeaf.FileFormat.ORC).get(0)); - assertEquals("sue", leaf.getLiteralList(PredicateLeaf.FileFormat.ORC).get(1)); - assertEquals("john", leaf.getLiteralList(PredicateLeaf.FileFormat.PARQUET).get(0)); - assertEquals("sue", leaf.getLiteralList(PredicateLeaf.FileFormat.PARQUET).get(1)); + assertEquals("john", leaf.getLiteralList().get(0)); + assertEquals("sue", leaf.getLiteralList().get(1)); leaf = leaves.get(2); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.IN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(34L, leaf.getLiteralList(PredicateLeaf.FileFormat.ORC).get(0)); - assertEquals(50L, leaf.getLiteralList(PredicateLeaf.FileFormat.ORC).get(1)); - assertEquals(34, leaf.getLiteralList(PredicateLeaf.FileFormat.PARQUET).get(0)); - assertEquals(50, leaf.getLiteralList(PredicateLeaf.FileFormat.PARQUET).get(1)); + assertEquals(34, leaf.getLiteralList().get(0)); + assertEquals(50, leaf.getLiteralList().get(1)); assertEquals("(and (not leaf-0) leaf-1 leaf-2)", sarg.getExpression().toString()); @@ -2016,8 +1992,6 @@ public void testExpression5() throws Exception { assertEquals(PredicateLeaf.Operator.BETWEEN, leaves.get(0).getOperator()); assertEquals("first_name", leaves.get(0).getColumnName()); - assertEquals("david", leaves.get(0).getLiteralList(PredicateLeaf.FileFormat.ORC).get(0)); - assertEquals("greg", leaves.get(0).getLiteralList(PredicateLeaf.FileFormat.ORC).get(1)); assertEquals("leaf-0", sarg.getExpression().toString()); @@ -2515,64 +2489,55 @@ public void testExpression7() throws Exception { assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(18L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(18, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(18, leaf.getLiteral()); leaf = leaves.get(1); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(10L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(10, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(10, leaf.getLiteral()); leaf = leaves.get(2); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(13L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(13, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(13, leaf.getLiteral()); leaf = leaves.get(3); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(16L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(16, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(16, leaf.getLiteral()); leaf = leaves.get(4); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(11L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(11, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(11, leaf.getLiteral()); leaf = leaves.get(5); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(12L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(12, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(12, leaf.getLiteral()); leaf = leaves.get(6); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(14L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(14, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(14, leaf.getLiteral()); leaf = leaves.get(7); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(15L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(15, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(15, leaf.getLiteral()); leaf = leaves.get(8); assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType()); assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator()); assertEquals("id", leaf.getColumnName()); - assertEquals(17L, leaf.getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(17, leaf.getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(17, leaf.getLiteral()); assertEquals("(and" + " (or leaf-0 leaf-1 leaf-2 leaf-3)" + @@ -2917,8 +2882,7 @@ public void testExpression10() throws Exception { assertEquals(PredicateLeaf.Operator.LESS_THAN, leaves.get(0).getOperator()); assertEquals("id", leaves.get(0).getColumnName()); - assertEquals(10L, leaves.get(0).getLiteral(PredicateLeaf.FileFormat.ORC)); - assertEquals(10, leaves.get(0).getLiteral(PredicateLeaf.FileFormat.PARQUET)); + assertEquals(10, leaves.get(0).getLiteral()); assertEquals("(and (not leaf-0) (not leaf-0))", sarg.getExpression().toString()); diff --git serde/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java serde/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java index 41a14c2..ed46226 100644 --- serde/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java +++ serde/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java @@ -54,14 +54,6 @@ } /** - * file format which supports search arguments - */ - public static enum FileFormat { - ORC, - PARQUET - } - - /** * Get the operator for the leaf. */ public Operator getOperator(); @@ -79,16 +71,17 @@ /** * Get the literal half of the predicate leaf. Adapt the original type for what orc needs - * @return a Long, Double, or String for Orc and a Int, Long, Double, or String for parquet + * + * @return an Integer, Long, Double, or String */ - public Object getLiteral(FileFormat format); + public Object getLiteral(); /** * For operators with multiple literals (IN and BETWEEN), get the literals. - * - * @return the list of literals (Longs, Doubles, or Strings) for orc or the list of literals - * (Integer, Longs, Doubles, or String) for parquet + * + * @return the list of literals (Integer, Longs, Doubles, or Strings) + * */ - public List getLiteralList(FileFormat format); + public List getLiteralList(); }