You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by se...@apache.org on 2015/09/04 04:54:53 UTC
[04/28] hive git commit: HIVE-11618: Correct the SARG api to reunify
the PredicateLeaf.Type INTEGER and LONG (Owen O'Malley,
reviewed by Sergio Pena)
HIVE-11618: Correct the SARG api to reunify the PredicateLeaf.Type INTEGER and LONG (Owen O'Malley, reviewed by Sergio Pena)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/97bf32a1
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/97bf32a1
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/97bf32a1
Branch: refs/heads/llap
Commit: 97bf32a12f754d83a362aaa4048a6612d299a386
Parents: ed4517c
Author: Sergio Pena <se...@cloudera.com>
Authored: Fri Aug 28 17:59:15 2015 -0500
Committer: Sergio Pena <se...@cloudera.com>
Committed: Fri Aug 28 17:59:15 2015 -0500
----------------------------------------------------------------------
.../hadoop/hive/ql/io/orc/RecordReaderImpl.java | 2 -
.../hive/ql/io/parquet/LeafFilterFactory.java | 14 +-
.../read/ParquetFilterPredicateConverter.java | 35 +++--
.../hive/ql/io/sarg/ConvertAstToSearchArg.java | 3 -
.../hive/ql/io/orc/TestInputOutputFormat.java | 4 +-
.../hadoop/hive/ql/io/orc/TestOrcFile.java | 10 +-
.../hive/ql/io/orc/TestRecordReaderImpl.java | 42 +++---
.../parquet/TestParquetRecordReaderWrapper.java | 50 +++++---
.../read/TestParquetFilterPredicate.java | 6 +-
.../ql/io/sarg/TestConvertAstToSearchArg.java | 128 +++++++++++--------
.../hive/ql/io/sarg/TestSearchArgumentImpl.java | 22 ++--
.../hadoop/hive/ql/io/sarg/PredicateLeaf.java | 3 +-
12 files changed, 181 insertions(+), 138 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
index 0d765b1..fcb3746 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
@@ -637,8 +637,6 @@ class RecordReaderImpl implements RecordReader {
return ((BigDecimal) obj).doubleValue();
}
break;
- case INTEGER:
- // fall through
case LONG:
if (obj instanceof Number) {
// widening conversion
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/LeafFilterFactory.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/LeafFilterFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/LeafFilterFactory.java
index a1dbc1a..1ceea6e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/LeafFilterFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/LeafFilterFactory.java
@@ -22,6 +22,8 @@ import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf.Operator;
import org.apache.parquet.filter2.predicate.FilterApi;
import org.apache.parquet.filter2.predicate.FilterPredicate;
import org.apache.parquet.io.api.Binary;
+import org.apache.parquet.schema.PrimitiveType;
+import org.apache.parquet.schema.Type;
import static org.apache.parquet.filter2.predicate.FilterApi.eq;
import static org.apache.parquet.filter2.predicate.FilterApi.lt;
@@ -146,12 +148,16 @@ public class LeafFilterFactory {
* @param type FilterPredicateType
* @return
*/
- public FilterPredicateLeafBuilder getLeafFilterBuilderByType(PredicateLeaf.Type type){
+ public FilterPredicateLeafBuilder getLeafFilterBuilderByType(PredicateLeaf.Type type,
+ Type parquetType){
switch (type){
- case INTEGER:
- return new IntFilterPredicateLeafBuilder();
case LONG:
- return new LongFilterPredicateLeafBuilder();
+ if (parquetType.asPrimitiveType().getPrimitiveTypeName() ==
+ PrimitiveType.PrimitiveTypeName.INT32) {
+ return new IntFilterPredicateLeafBuilder();
+ } else {
+ return new LongFilterPredicateLeafBuilder();
+ }
case FLOAT: // float and double
return new DoubleFilterPredicateLeafBuilder();
case STRING: // string, char, varchar
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/ParquetFilterPredicateConverter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/ParquetFilterPredicateConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/ParquetFilterPredicateConverter.java
index f170026..d1864ae 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/ParquetFilterPredicateConverter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/ParquetFilterPredicateConverter.java
@@ -37,14 +37,6 @@ public class ParquetFilterPredicateConverter {
private static final Log LOG = LogFactory.getLog(ParquetFilterPredicateConverter.class);
/**
- * Translate the search argument to the filter predicate parquet uses
- * @return translate the sarg into a filter predicate
- */
- public static FilterPredicate toFilterPredicate(SearchArgument sarg) {
- return toFilterPredicate(sarg, null);
- }
-
- /**
* Translate the search argument to the filter predicate parquet uses. It includes
* only the columns from the passed schema.
* @return translate the sarg into a filter predicate
@@ -58,18 +50,21 @@ public class ParquetFilterPredicateConverter {
}
}
- return translate(sarg.getExpression(), sarg.getLeaves(), columns);
+ return translate(sarg.getExpression(), sarg.getLeaves(), columns, schema);
}
- private static FilterPredicate translate(ExpressionTree root, List<PredicateLeaf> leaves, Set<String> columns) {
+ private static FilterPredicate translate(ExpressionTree root,
+ List<PredicateLeaf> leaves,
+ Set<String> columns,
+ MessageType schema) {
FilterPredicate p = null;
switch (root.getOperator()) {
case OR:
for(ExpressionTree child: root.getChildren()) {
if (p == null) {
- p = translate(child, leaves, columns);
+ p = translate(child, leaves, columns, schema);
} else {
- FilterPredicate right = translate(child, leaves, columns);
+ FilterPredicate right = translate(child, leaves, columns, schema);
// constant means no filter, ignore it when it is null
if(right != null){
p = FilterApi.or(p, right);
@@ -80,9 +75,9 @@ public class ParquetFilterPredicateConverter {
case AND:
for(ExpressionTree child: root.getChildren()) {
if (p == null) {
- p = translate(child, leaves, columns);
+ p = translate(child, leaves, columns, schema);
} else {
- FilterPredicate right = translate(child, leaves, columns);
+ FilterPredicate right = translate(child, leaves, columns, schema);
// constant means no filter, ignore it when it is null
if(right != null){
p = FilterApi.and(p, right);
@@ -91,7 +86,8 @@ public class ParquetFilterPredicateConverter {
}
return p;
case NOT:
- FilterPredicate op = translate(root.getChildren().get(0), leaves, columns);
+ FilterPredicate op = translate(root.getChildren().get(0), leaves,
+ columns, schema);
if (op != null) {
return FilterApi.not(op);
} else {
@@ -101,8 +97,9 @@ public class ParquetFilterPredicateConverter {
PredicateLeaf leaf = leaves.get(root.getLeaf());
// If columns is null, then we need to create the leaf
- if (columns == null || columns.contains(leaf.getColumnName())) {
- return buildFilterPredicateFromPredicateLeaf(leaf);
+ if (columns.contains(leaf.getColumnName())) {
+ Type parquetType = schema.getType(leaf.getColumnName());
+ return buildFilterPredicateFromPredicateLeaf(leaf, parquetType);
} else {
// Do not create predicate if the leaf is not on the passed schema.
return null;
@@ -116,12 +113,12 @@ public class ParquetFilterPredicateConverter {
}
private static FilterPredicate buildFilterPredicateFromPredicateLeaf
- (PredicateLeaf leaf) {
+ (PredicateLeaf leaf, Type parquetType) {
LeafFilterFactory leafFilterFactory = new LeafFilterFactory();
FilterPredicateLeafBuilder builder;
try {
builder = leafFilterFactory
- .getLeafFilterBuilderByType(leaf.getType());
+ .getLeafFilterBuilderByType(leaf.getType(), parquetType);
if (builder == null) {
return null;
}
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
index 5c4b7ea..e034650 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java
@@ -88,7 +88,6 @@ public class ConvertAstToSearchArg {
case BYTE:
case SHORT:
case INT:
- return PredicateLeaf.Type.INTEGER;
case LONG:
return PredicateLeaf.Type.LONG;
case CHAR:
@@ -139,8 +138,6 @@ public class ConvertAstToSearchArg {
return null;
}
switch (type) {
- case INTEGER:
- return ((Number) lit).intValue();
case LONG:
return ((Number) lit).longValue();
case STRING:
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
index 547e799..ce86cd8 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java
@@ -1844,7 +1844,7 @@ public class TestInputOutputFormat {
types.add(builder.build());
types.add(builder.build());
SearchArgument isNull = SearchArgumentFactory.newBuilder()
- .startAnd().isNull("cost", PredicateLeaf.Type.INTEGER).end().build();
+ .startAnd().isNull("cost", PredicateLeaf.Type.LONG).end().build();
conf.set(ConvertAstToSearchArg.SARG_PUSHDOWN, toKryo(isNull));
conf.set(ColumnProjectionUtils.READ_COLUMN_NAMES_CONF_STR,
"url,cost");
@@ -1889,7 +1889,7 @@ public class TestInputOutputFormat {
SearchArgument sarg =
SearchArgumentFactory.newBuilder()
.startAnd()
- .lessThan("z", PredicateLeaf.Type.INTEGER, new Integer(0))
+ .lessThan("z", PredicateLeaf.Type.LONG, new Long(0))
.end()
.build();
conf.set("sarg.pushdown", toKryo(sarg));
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java
index 4480d22..0bb8401 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java
@@ -1923,9 +1923,9 @@ public class TestOrcFile {
SearchArgument sarg = SearchArgumentFactory.newBuilder()
.startAnd()
.startNot()
- .lessThan("int1", PredicateLeaf.Type.INTEGER, 300000)
+ .lessThan("int1", PredicateLeaf.Type.LONG, 300000L)
.end()
- .lessThan("int1", PredicateLeaf.Type.INTEGER, 600000)
+ .lessThan("int1", PredicateLeaf.Type.LONG, 600000L)
.end()
.build();
RecordReader rows = reader.rowsOptions(new Reader.Options()
@@ -1946,7 +1946,7 @@ public class TestOrcFile {
// look through the file with no rows selected
sarg = SearchArgumentFactory.newBuilder()
.startAnd()
- .lessThan("int1", PredicateLeaf.Type.INTEGER, 0)
+ .lessThan("int1", PredicateLeaf.Type.LONG, 0L)
.end()
.build();
rows = reader.rowsOptions(new Reader.Options()
@@ -1959,9 +1959,9 @@ public class TestOrcFile {
// select first 100 and last 100 rows
sarg = SearchArgumentFactory.newBuilder()
.startOr()
- .lessThan("int1", PredicateLeaf.Type.INTEGER, 300 * 100)
+ .lessThan("int1", PredicateLeaf.Type.LONG, 300L * 100)
.startNot()
- .lessThan("int1", PredicateLeaf.Type.INTEGER, 300 * 3400)
+ .lessThan("int1", PredicateLeaf.Type.LONG, 300L * 3400)
.end()
.end()
.build();
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
index 7957cb4..839bbc6 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
@@ -445,7 +445,7 @@ public class TestRecordReaderImpl {
@Test
public void testPredEvalWithStringStats() throws Exception {
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf(
- PredicateLeaf.Operator.NULL_SAFE_EQUALS, PredicateLeaf.Type.INTEGER, "x", 100, null);
+ PredicateLeaf.Operator.NULL_SAFE_EQUALS, PredicateLeaf.Type.LONG, "x", 100L, null);
assertEquals(TruthValue.YES_NO,
RecordReaderImpl.evaluatePredicateProto(createStringStats("10", "1000"), pred, null));
@@ -550,7 +550,7 @@ public class TestRecordReaderImpl {
@Test
public void testPredEvalWithDecimalStats() throws Exception {
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf(
- PredicateLeaf.Operator.NULL_SAFE_EQUALS, PredicateLeaf.Type.INTEGER, "x", 15, null);
+ PredicateLeaf.Operator.NULL_SAFE_EQUALS, PredicateLeaf.Type.LONG, "x", 15L, null);
assertEquals(TruthValue.YES_NO,
RecordReaderImpl.evaluatePredicateProto(createDecimalStats("10.0", "100.0"), pred, null));
@@ -590,7 +590,7 @@ public class TestRecordReaderImpl {
@Test
public void testPredEvalWithTimestampStats() throws Exception {
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf(
- PredicateLeaf.Operator.NULL_SAFE_EQUALS, PredicateLeaf.Type.INTEGER, "x", 15, null);
+ PredicateLeaf.Operator.NULL_SAFE_EQUALS, PredicateLeaf.Type.LONG, "x", 15L, null);
assertEquals(TruthValue.YES_NO,
RecordReaderImpl.evaluatePredicateProto(createTimestampStats(10, 100), pred, null));
@@ -637,8 +637,8 @@ public class TestRecordReaderImpl {
@Test
public void testEquals() throws Exception {
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf
- (PredicateLeaf.Operator.EQUALS, PredicateLeaf.Type.INTEGER,
- "x", 15, null);
+ (PredicateLeaf.Operator.EQUALS, PredicateLeaf.Type.LONG,
+ "x", 15L, null);
assertEquals(TruthValue.NO_NULL,
RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 30L), pred, null));
assertEquals(TruthValue.YES_NO_NULL,
@@ -656,8 +656,8 @@ public class TestRecordReaderImpl {
@Test
public void testNullSafeEquals() throws Exception {
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf
- (PredicateLeaf.Operator.NULL_SAFE_EQUALS, PredicateLeaf.Type.INTEGER,
- "x", 15, null);
+ (PredicateLeaf.Operator.NULL_SAFE_EQUALS, PredicateLeaf.Type.LONG,
+ "x", 15L, null);
assertEquals(TruthValue.NO,
RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 30L), pred, null));
assertEquals(TruthValue.YES_NO,
@@ -675,8 +675,8 @@ public class TestRecordReaderImpl {
@Test
public void testLessThan() throws Exception {
PredicateLeaf lessThan = TestSearchArgumentImpl.createPredicateLeaf
- (PredicateLeaf.Operator.LESS_THAN, PredicateLeaf.Type.INTEGER,
- "x", 15, null);
+ (PredicateLeaf.Operator.LESS_THAN, PredicateLeaf.Type.LONG,
+ "x", 15L, null);
assertEquals(TruthValue.NO_NULL,
RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 30L), lessThan, null));
assertEquals(TruthValue.NO_NULL,
@@ -692,8 +692,8 @@ public class TestRecordReaderImpl {
@Test
public void testLessThanEquals() throws Exception {
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf
- (PredicateLeaf.Operator.LESS_THAN_EQUALS, PredicateLeaf.Type.INTEGER,
- "x", 15, null);
+ (PredicateLeaf.Operator.LESS_THAN_EQUALS, PredicateLeaf.Type.LONG,
+ "x", 15L, null);
assertEquals(TruthValue.NO_NULL,
RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 30L), pred, null));
assertEquals(TruthValue.YES_NO_NULL,
@@ -709,10 +709,10 @@ public class TestRecordReaderImpl {
@Test
public void testIn() throws Exception {
List<Object> args = new ArrayList<Object>();
- args.add(10);
- args.add(20);
+ args.add(10L);
+ args.add(20L);
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf
- (PredicateLeaf.Operator.IN, PredicateLeaf.Type.INTEGER,
+ (PredicateLeaf.Operator.IN, PredicateLeaf.Type.LONG,
"x", null, args);
assertEquals(TruthValue.YES_NULL,
RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 20L), pred, null));
@@ -727,10 +727,10 @@ public class TestRecordReaderImpl {
@Test
public void testBetween() throws Exception {
List<Object> args = new ArrayList<Object>();
- args.add(10);
- args.add(20);
+ args.add(10L);
+ args.add(20L);
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf
- (PredicateLeaf.Operator.BETWEEN, PredicateLeaf.Type.INTEGER,
+ (PredicateLeaf.Operator.BETWEEN, PredicateLeaf.Type.LONG,
"x", null, args);
assertEquals(TruthValue.NO_NULL,
RecordReaderImpl.evaluatePredicateProto(createIntStats(0L, 5L), pred, null));
@@ -751,7 +751,7 @@ public class TestRecordReaderImpl {
@Test
public void testIsNull() throws Exception {
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf
- (PredicateLeaf.Operator.IS_NULL, PredicateLeaf.Type.INTEGER,
+ (PredicateLeaf.Operator.IS_NULL, PredicateLeaf.Type.LONG,
"x", null, null);
assertEquals(TruthValue.YES_NO,
RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 30L), pred, null));
@@ -1306,10 +1306,10 @@ public class TestRecordReaderImpl {
@Test
public void testIntInBloomFilter() throws Exception {
List<Object> args = new ArrayList<Object>();
- args.add(15);
- args.add(19);
+ args.add(15L);
+ args.add(19L);
PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf
- (PredicateLeaf.Operator.IN, PredicateLeaf.Type.INTEGER,
+ (PredicateLeaf.Operator.IN, PredicateLeaf.Type.LONG,
"x", null, args);
BloomFilterIO bf = new BloomFilterIO(10000);
for (int i = 20; i < 1000; i++) {
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/TestParquetRecordReaderWrapper.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/TestParquetRecordReaderWrapper.java b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/TestParquetRecordReaderWrapper.java
index f9ca528..e92b696 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/TestParquetRecordReaderWrapper.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/TestParquetRecordReaderWrapper.java
@@ -28,6 +28,8 @@ import org.apache.hadoop.hive.ql.io.sarg.SearchArgument;
import org.apache.hadoop.hive.ql.io.sarg.SearchArgument.TruthValue;
import org.apache.hadoop.hive.ql.io.sarg.SearchArgumentFactory;
import org.apache.hadoop.hive.serde2.io.HiveDecimalWritable;
+import org.apache.parquet.schema.MessageType;
+import org.apache.parquet.schema.MessageTypeParser;
import org.junit.Test;
import java.sql.Date;
@@ -48,15 +50,19 @@ public class TestParquetRecordReaderWrapper {
SearchArgument sarg = SearchArgumentFactory.newBuilder()
.startNot()
.startOr()
- .isNull("x", PredicateLeaf.Type.INTEGER)
- .between("y", PredicateLeaf.Type.INTEGER, 10, 20)
- .in("z", PredicateLeaf.Type.INTEGER, 1, 2, 3)
+ .isNull("x", PredicateLeaf.Type.LONG)
+ .between("y", PredicateLeaf.Type.LONG, 10L, 20L)
+ .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L)
.nullSafeEquals("a", PredicateLeaf.Type.STRING, "stinger")
.end()
.end()
.build();
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ MessageType schema = MessageTypeParser.parseMessageType("message test {" +
+ " optional int32 x; required int32 y; required int32 z;" +
+ " optional binary a;}");
+ FilterPredicate p =
+ ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected =
"and(and(and(not(eq(x, null)), not(and(lt(y, 20), not(lteq(y, 10))))), not(or(or(eq(z, 1), " +
"eq(z, 2)), eq(z, 3)))), not(eq(a, Binary{\"stinger\"})))";
@@ -75,23 +81,27 @@ public class TestParquetRecordReaderWrapper {
.equals("z", PredicateLeaf.Type.DECIMAL, new HiveDecimalWritable("1.0"))
.end()
.build();
+ MessageType schema = MessageTypeParser.parseMessageType("message test {" +
+ " required int32 x; required binary y; required binary z;}");
assertEquals("lteq(y, Binary{\"hi \"})",
- ParquetFilterPredicateConverter.toFilterPredicate(sarg).toString());
+ ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema).toString());
sarg = SearchArgumentFactory.newBuilder()
.startNot()
.startOr()
- .isNull("x", PredicateLeaf.Type.INTEGER)
+ .isNull("x", PredicateLeaf.Type.LONG)
.between("y", PredicateLeaf.Type.DECIMAL,
new HiveDecimalWritable("10"), new HiveDecimalWritable("20.0"))
- .in("z", PredicateLeaf.Type.INTEGER, 1, 2, 3)
+ .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L)
.nullSafeEquals("a", PredicateLeaf.Type.STRING,
new HiveVarchar("stinger", 100).toString())
.end()
.end()
.build();
-
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ schema = MessageTypeParser.parseMessageType("message test {" +
+ " optional int32 x; required binary y; required int32 z;" +
+ " optional binary a;}");
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected =
"and(and(not(eq(x, null)), not(or(or(eq(z, 1), eq(z, 2)), eq(z, 3)))), " +
"not(eq(a, Binary{\"stinger\"})))";
@@ -110,23 +120,28 @@ public class TestParquetRecordReaderWrapper {
new HiveDecimalWritable("1.0"))
.end()
.build();
+ MessageType schema = MessageTypeParser.parseMessageType("message test {" +
+ " required int32 x; required binary y; required binary z;}");
assertEquals("lteq(y, Binary{\"hi \"})",
- ParquetFilterPredicateConverter.toFilterPredicate(sarg).toString());
+ ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema).toString());
sarg = SearchArgumentFactory.newBuilder()
.startNot()
.startOr()
- .isNull("x", PredicateLeaf.Type.INTEGER)
+ .isNull("x", PredicateLeaf.Type.LONG)
.between("y", PredicateLeaf.Type.DECIMAL, new HiveDecimalWritable("10"),
new HiveDecimalWritable("20.0"))
- .in("z", PredicateLeaf.Type.INTEGER, 1, 2, 3)
+ .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L)
.nullSafeEquals("a", PredicateLeaf.Type.STRING,
new HiveVarchar("stinger", 100).toString())
.end()
.end()
.build();
+ schema = MessageTypeParser.parseMessageType("message test {" +
+ " optional int32 x; required binary y; required int32 z;" +
+ " optional binary a;}");
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected = "and(and(not(eq(x, null)), not(or(or(eq(z, 1), eq(z, 2)), eq(z, 3)))), " +
"not(eq(a, Binary{\"stinger\"})))";
assertEquals(expected, p.toString());
@@ -137,16 +152,19 @@ public class TestParquetRecordReaderWrapper {
SearchArgument sarg =
SearchArgumentFactory.newBuilder()
.startAnd()
- .lessThan("x", PredicateLeaf.Type.INTEGER, new Integer((short) 22))
- .lessThan("x1", PredicateLeaf.Type.INTEGER, new Integer(22))
+ .lessThan("x", PredicateLeaf.Type.LONG, 22L)
+ .lessThan("x1", PredicateLeaf.Type.LONG, 22L)
.lessThanEquals("y", PredicateLeaf.Type.STRING,
new HiveChar("hi", 10).toString())
.equals("z", PredicateLeaf.Type.FLOAT, new Double(0.22))
.equals("z1", PredicateLeaf.Type.FLOAT, new Double(0.22))
.end()
.build();
+ MessageType schema = MessageTypeParser.parseMessageType("message test {" +
+ " required int32 x; required int32 x1;" +
+ " required binary y; required float z; required float z1;}");
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected = "and(and(and(and(lt(x, 22), lt(x1, 22))," +
" lteq(y, Binary{\"hi \"})), eq(z, " +
"0.22)), eq(z1, 0.22))";
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/read/TestParquetFilterPredicate.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/read/TestParquetFilterPredicate.java b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/read/TestParquetFilterPredicate.java
index 847a02b..ac5c1a0 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/read/TestParquetFilterPredicate.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/io/parquet/read/TestParquetFilterPredicate.java
@@ -35,9 +35,9 @@ public class TestParquetFilterPredicate {
SearchArgument sarg = SearchArgumentFactory.newBuilder()
.startNot()
.startOr()
- .isNull("a", PredicateLeaf.Type.INTEGER)
- .between("y", PredicateLeaf.Type.INTEGER, 10, 20) // Column will be removed from filter
- .in("z", PredicateLeaf.Type.INTEGER, 1, 2, 3) // Column will be removed from filter
+ .isNull("a", PredicateLeaf.Type.LONG)
+ .between("y", PredicateLeaf.Type.LONG, 10L, 20L) // Column will be removed from filter
+ .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L) // Column will be removed from filter
.nullSafeEquals("a", PredicateLeaf.Type.STRING, "stinger")
.end()
.end()
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestConvertAstToSearchArg.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestConvertAstToSearchArg.java b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestConvertAstToSearchArg.java
index 9e8425a..e72789d 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestConvertAstToSearchArg.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestConvertAstToSearchArg.java
@@ -28,6 +28,8 @@ import org.apache.hadoop.hive.ql.exec.Utilities;
import org.apache.hadoop.hive.ql.io.parquet.read.ParquetFilterPredicateConverter;
import org.apache.hadoop.hive.ql.io.sarg.SearchArgument.TruthValue;
import org.apache.hadoop.hive.ql.plan.ExprNodeGenericFuncDesc;
+import org.apache.parquet.schema.MessageType;
+import org.apache.parquet.schema.MessageTypeParser;
import org.junit.Test;
import java.beans.XMLDecoder;
@@ -550,7 +552,11 @@ public class TestConvertAstToSearchArg {
List<PredicateLeaf> leaves = sarg.getLeaves();
assertEquals(9, leaves.size());
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ MessageType schema =
+ MessageTypeParser.parseMessageType("message test { required int32 id;" +
+ " required binary first_name; }");
+
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String[] conditions = new String[]{
"eq(first_name, Binary{\"john\"})", /* first_name = 'john' */
"not(lteq(first_name, Binary{\"greg\"}))", /* 'greg' < first_name */
@@ -586,34 +592,34 @@ public class TestConvertAstToSearchArg {
assertEquals("alan", leaf.getLiteral());
leaf = leaves.get(3);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN_EQUALS, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(12, leaf.getLiteral());
+ assertEquals(12L, leaf.getLiteral());
leaf = leaves.get(4);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN_EQUALS, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(13, leaf.getLiteral());
+ assertEquals(13L, leaf.getLiteral());
leaf = leaves.get(5);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(15, leaf.getLiteral());
+ assertEquals(15L, leaf.getLiteral());
leaf = leaves.get(6);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(16, leaf.getLiteral());
+ assertEquals(16L, leaf.getLiteral());
leaf = leaves.get(7);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.NULL_SAFE_EQUALS, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(30, leaf.getLiteral());
+ assertEquals(30L, leaf.getLiteral());
leaf = leaves.get(8);
assertEquals(PredicateLeaf.Type.STRING, leaf.getType());
@@ -842,7 +848,10 @@ public class TestConvertAstToSearchArg {
"lteq(id, 4)" /* id <= 4 */
};
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ MessageType schema =
+ MessageTypeParser.parseMessageType("message test { required int32 id;" +
+ " required binary first_name; }");
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected = String.format("or(or(or(%1$s, %2$s), %3$s), %4$s)", conditions);
assertEquals(expected, p.toString());
@@ -860,16 +869,16 @@ public class TestConvertAstToSearchArg {
assertEquals("sue", leaf.getLiteral());
leaf = leaves.get(2);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(12, leaf.getLiteral());
+ assertEquals(12L, leaf.getLiteral());
leaf = leaves.get(3);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN_EQUALS, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(4, leaf.getLiteral());
+ assertEquals(4L, leaf.getLiteral());
assertEquals("(or leaf-0 (not leaf-1) (not leaf-2) leaf-3)",
sarg.getExpression().toString());
@@ -1271,18 +1280,21 @@ public class TestConvertAstToSearchArg {
"eq(first_name, Binary{\"alan\"})", /* first_name = 'alan' */
"eq(last_name, Binary{\"smith\"})" /* 'smith' = last_name */
};
+ MessageType schema =
+ MessageTypeParser.parseMessageType("message test { required int32 id;" +
+ " required binary first_name; required binary last_name;}");
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected = String.format("and(and(and(%1$s, %2$s), %3$s), %4$s)", conditions);
assertEquals(expected, p.toString());
PredicateLeaf leaf = leaves.get(0);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.BETWEEN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
assertEquals(null, leaf.getLiteral());
- assertEquals(23, leaf.getLiteralList().get(0));
- assertEquals(45, leaf.getLiteralList().get(1));
+ assertEquals(23L, leaf.getLiteralList().get(0));
+ assertEquals(45L, leaf.getLiteralList().get(1));
leaf = leaves.get(1);
assertEquals(PredicateLeaf.Type.STRING, leaf.getType());
@@ -1493,15 +1505,19 @@ public class TestConvertAstToSearchArg {
"or(eq(id, 34), eq(id, 50))" /* id in (34,50) */
};
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ MessageType schema =
+ MessageTypeParser.parseMessageType("message test { required int32 id;" +
+ " required binary first_name; }");
+ FilterPredicate p =
+ ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected = String.format("and(and(%1$s, %2$s), %3$s)", conditions);
assertEquals(expected, p.toString());
PredicateLeaf leaf = leaves.get(0);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.EQUALS, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(12, leaf.getLiteral());
+ assertEquals(12L, leaf.getLiteral());
leaf = leaves.get(1);
assertEquals(PredicateLeaf.Type.STRING, leaf.getType());
@@ -1511,11 +1527,11 @@ public class TestConvertAstToSearchArg {
assertEquals("sue", leaf.getLiteralList().get(1));
leaf = leaves.get(2);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.IN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(34, leaf.getLiteralList().get(0));
- assertEquals(50, leaf.getLiteralList().get(1));
+ assertEquals(34L, leaf.getLiteralList().get(0));
+ assertEquals(50L, leaf.getLiteralList().get(1));
assertEquals("(and (not leaf-0) leaf-1 leaf-2)",
sarg.getExpression().toString());
@@ -1752,7 +1768,10 @@ public class TestConvertAstToSearchArg {
List<PredicateLeaf> leaves = sarg.getLeaves();
assertEquals(1, leaves.size());
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ MessageType schema =
+ MessageTypeParser.parseMessageType("message test { required int32 id;" +
+ " required binary first_name; }");
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected =
"and(lt(first_name, Binary{\"greg\"}), not(lteq(first_name, Binary{\"david\"})))";
assertEquals(p.toString(), expected);
@@ -2232,7 +2251,10 @@ public class TestConvertAstToSearchArg {
List<PredicateLeaf> leaves = sarg.getLeaves();
assertEquals(9, leaves.size());
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ MessageType schema =
+ MessageTypeParser.parseMessageType("message test { required int32 id;" +
+ " required binary first_name; }");
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected = "and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(" +
"or(or(or(lt(id, 18), lt(id, 10)), lt(id, 13)), lt(id, 16)), " +
"or(or(or(lt(id, 18), lt(id, 11)), lt(id, 13)), lt(id, 16))), " +
@@ -2255,58 +2277,58 @@ public class TestConvertAstToSearchArg {
assertEquals(p.toString(), expected);
PredicateLeaf leaf = leaves.get(0);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(18, leaf.getLiteral());
+ assertEquals(18L, leaf.getLiteral());
leaf = leaves.get(1);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(10, leaf.getLiteral());
+ assertEquals(10L, leaf.getLiteral());
leaf = leaves.get(2);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(13, leaf.getLiteral());
+ assertEquals(13L, leaf.getLiteral());
leaf = leaves.get(3);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(16, leaf.getLiteral());
+ assertEquals(16L, leaf.getLiteral());
leaf = leaves.get(4);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(11, leaf.getLiteral());
+ assertEquals(11L, leaf.getLiteral());
leaf = leaves.get(5);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(12, leaf.getLiteral());
+ assertEquals(12L, leaf.getLiteral());
leaf = leaves.get(6);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(14, leaf.getLiteral());
+ assertEquals(14L, leaf.getLiteral());
leaf = leaves.get(7);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(15, leaf.getLiteral());
+ assertEquals(15L, leaf.getLiteral());
leaf = leaves.get(8);
- assertEquals(PredicateLeaf.Type.INTEGER, leaf.getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaf.getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN, leaf.getOperator());
assertEquals("id", leaf.getColumnName());
- assertEquals(17, leaf.getLiteral());
+ assertEquals(17L, leaf.getLiteral());
assertEquals("(and" +
" (or leaf-0 leaf-1 leaf-2 leaf-3)" +
@@ -2388,7 +2410,10 @@ public class TestConvertAstToSearchArg {
List<PredicateLeaf> leaves = sarg.getLeaves();
assertEquals(0, leaves.size());
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ MessageType schema =
+ MessageTypeParser.parseMessageType("message test { required int32 id;" +
+ " required binary first_name; }");
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
assertNull(p);
assertEquals("YES_NO_NULL",
@@ -2643,15 +2668,18 @@ public class TestConvertAstToSearchArg {
List<PredicateLeaf> leaves = sarg.getLeaves();
assertEquals(1, leaves.size());
- FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg);
+ MessageType schema =
+ MessageTypeParser.parseMessageType("message test { required int32 id;" +
+ " required binary first_name; }");
+ FilterPredicate p = ParquetFilterPredicateConverter.toFilterPredicate(sarg, schema);
String expected = "and(not(lt(id, 10)), not(lt(id, 10)))";
assertEquals(expected, p.toString());
- assertEquals(PredicateLeaf.Type.INTEGER, leaves.get(0).getType());
+ assertEquals(PredicateLeaf.Type.LONG, leaves.get(0).getType());
assertEquals(PredicateLeaf.Operator.LESS_THAN,
leaves.get(0).getOperator());
assertEquals("id", leaves.get(0).getColumnName());
- assertEquals(10, leaves.get(0).getLiteral());
+ assertEquals(10L, leaves.get(0).getLiteral());
assertEquals("(and (not leaf-0) (not leaf-0))",
sarg.getExpression().toString());
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java
index 20de846..573d5c6 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/io/sarg/TestSearchArgumentImpl.java
@@ -330,7 +330,7 @@ public class TestSearchArgumentImpl {
SearchArgument sarg =
SearchArgumentFactory.newBuilder()
.startAnd()
- .lessThan("x", PredicateLeaf.Type.INTEGER, 10)
+ .lessThan("x", PredicateLeaf.Type.LONG, 10L)
.lessThanEquals("y", PredicateLeaf.Type.STRING, "hi")
.equals("z", PredicateLeaf.Type.FLOAT, 1.0)
.end()
@@ -342,9 +342,9 @@ public class TestSearchArgumentImpl {
sarg = SearchArgumentFactory.newBuilder()
.startNot()
.startOr()
- .isNull("x", PredicateLeaf.Type.INTEGER)
- .between("y", PredicateLeaf.Type.INTEGER, 10, 20)
- .in("z", PredicateLeaf.Type.INTEGER, 1, 2, 3)
+ .isNull("x", PredicateLeaf.Type.LONG)
+ .between("y", PredicateLeaf.Type.LONG, 10L, 20L)
+ .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L)
.nullSafeEquals("a", PredicateLeaf.Type.STRING, "stinger")
.end()
.end()
@@ -376,10 +376,10 @@ public class TestSearchArgumentImpl {
sarg = SearchArgumentFactory.newBuilder()
.startNot()
.startOr()
- .isNull("x", PredicateLeaf.Type.INTEGER)
+ .isNull("x", PredicateLeaf.Type.LONG)
.between("y", PredicateLeaf.Type.DECIMAL,
new HiveDecimalWritable("10"), new HiveDecimalWritable("20.0"))
- .in("z", PredicateLeaf.Type.INTEGER, 1, 2, 3)
+ .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L)
.nullSafeEquals("a", PredicateLeaf.Type.STRING,
new HiveVarchar("stinger", 100).toString())
.end()
@@ -413,10 +413,10 @@ public class TestSearchArgumentImpl {
sarg = SearchArgumentFactory.newBuilder()
.startNot()
.startOr()
- .isNull("x", PredicateLeaf.Type.INTEGER)
+ .isNull("x", PredicateLeaf.Type.LONG)
.between("y", PredicateLeaf.Type.DECIMAL, new HiveDecimalWritable("10"),
new HiveDecimalWritable("20.0"))
- .in("z", PredicateLeaf.Type.INTEGER, 1, 2, 3)
+ .in("z", PredicateLeaf.Type.LONG, 1L, 2L, 3L)
.nullSafeEquals("a", PredicateLeaf.Type.STRING,
new HiveVarchar("stinger", 100).toString())
.end()
@@ -435,8 +435,8 @@ public class TestSearchArgumentImpl {
SearchArgument sarg =
SearchArgumentFactory.newBuilder()
.startAnd()
- .lessThan("x", PredicateLeaf.Type.INTEGER, new Integer((short) 22))
- .lessThan("x1", PredicateLeaf.Type.INTEGER, new Integer(22))
+ .lessThan("x", PredicateLeaf.Type.LONG, 22L)
+ .lessThan("x1", PredicateLeaf.Type.LONG, 22L)
.lessThanEquals("y", PredicateLeaf.Type.STRING,
new HiveChar("hi", 10).toString())
.equals("z", PredicateLeaf.Type.FLOAT, new Double(0.22))
@@ -480,7 +480,7 @@ public class TestSearchArgumentImpl {
SearchArgument sarg =
SearchArgumentFactory.newBuilder()
.startAnd()
- .lessThan("x", PredicateLeaf.Type.INTEGER, "hi")
+ .lessThan("x", PredicateLeaf.Type.LONG, "hi")
.end()
.build();
}
http://git-wip-us.apache.org/repos/asf/hive/blob/97bf32a1/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java
----------------------------------------------------------------------
diff --git a/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java b/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java
index 3a92565..dc71db4 100644
--- a/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java
+++ b/storage-api/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java
@@ -47,8 +47,7 @@ public interface PredicateLeaf {
* The possible types for sargs.
*/
public static enum Type {
- INTEGER(Integer.class), // all of the integer types except long
- LONG(Long.class),
+ LONG(Long.class), // all of the integer types
FLOAT(Double.class), // float and double
STRING(String.class), // string, char, varchar
DATE(Date.class),