You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by gu...@apache.org on 2014/03/05 00:08:58 UTC
svn commit: r1574237 [1/2] - in /hive/trunk/ql/src:
java/org/apache/hadoop/hive/ql/io/orc/
java/org/apache/hadoop/hive/ql/io/sarg/
test/org/apache/hadoop/hive/ql/io/orc/ test/queries/clientpositive/
test/results/clientpositive/
Author: gunther
Date: Tue Mar 4 23:08:57 2014
New Revision: 1574237
URL: http://svn.apache.org/r1574237
Log:
HIVE-5950: ORC SARG creation fails with NPE for predicate conditions with decimal/date/char/varchar datatypes (Prasanth J via Gunther Hagleitner)
Added:
hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_char.q
hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_date.q
hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_decimal.q
hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_varchar.q
hive/trunk/ql/src/test/results/clientpositive/orc_ppd_char.q.out
hive/trunk/ql/src/test/results/clientpositive/orc_ppd_date.q.out
hive/trunk/ql/src/test/results/clientpositive/orc_ppd_decimal.q.out
hive/trunk/ql/src/test/results/clientpositive/orc_ppd_varchar.q.out
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java?rev=1574237&r1=1574236&r2=1574237&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java Tue Mar 4 23:08:57 2014
@@ -848,10 +848,10 @@ public class OrcInputFormat implements
// column statistics at index 0 contains only the number of rows
ColumnStatistics stats = stripeStatistics.getColumnStatistics()[filterColumns[pred] + 1];
- Object minValue = getMin(stats);
- Object maxValue = getMax(stats);
- truthValues[pred] = RecordReaderImpl.evaluatePredicateRange(predLeaves.get(pred),
- minValue, maxValue);
+ Object minValue = RecordReaderImpl.getMin(stats);
+ Object maxValue = RecordReaderImpl.getMax(stats);
+ PredicateLeaf predLeaf = predLeaves.get(pred);
+ truthValues[pred] = RecordReaderImpl.evaluatePredicateRange(predLeaf, minValue, maxValue);
} else {
// parition column case.
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java?rev=1574237&r1=1574236&r2=1574237&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java Tue Mar 4 23:08:57 2014
@@ -31,16 +31,25 @@ import java.util.Map;
import java.util.TreeMap;
import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.common.type.HiveChar;
import org.apache.hadoop.hive.common.type.HiveDecimal;
import org.apache.hadoop.hive.conf.HiveConf;
import static org.apache.hadoop.hive.conf.HiveConf.ConfVars.HIVE_ORC_ZEROCOPY;
import org.apache.hadoop.hive.ql.exec.vector.*;
+import org.apache.hadoop.hive.common.type.HiveVarchar;
+import org.apache.hadoop.hive.ql.exec.vector.BytesColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.ColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.DecimalColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.DoubleColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.LongColumnVector;
+import org.apache.hadoop.hive.ql.exec.vector.VectorizedRowBatch;
import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf;
import org.apache.hadoop.hive.ql.io.sarg.SearchArgument;
import org.apache.hadoop.hive.ql.io.sarg.SearchArgument.TruthValue;
@@ -2165,57 +2174,47 @@ class RecordReaderImpl implements Record
}
/**
- * Get the minimum value out of an index entry.
- * @param index the index entry
- * @return the object for the minimum value or null if there isn't one
+ * Get the maximum value out of an index entry.
+ * @param index
+ * the index entry
+ * @return the object for the maximum value or null if there isn't one
*/
- static Object getMin(OrcProto.ColumnStatistics index) {
- if (index.hasIntStatistics()) {
- OrcProto.IntegerStatistics stat = index.getIntStatistics();
- if (stat.hasMinimum()) {
- return stat.getMinimum();
- }
- }
- if (index.hasStringStatistics()) {
- OrcProto.StringStatistics stat = index.getStringStatistics();
- if (stat.hasMinimum()) {
- return stat.getMinimum();
- }
- }
- if (index.hasDoubleStatistics()) {
- OrcProto.DoubleStatistics stat = index.getDoubleStatistics();
- if (stat.hasMinimum()) {
- return stat.getMinimum();
- }
+ static Object getMax(ColumnStatistics index) {
+ if (index instanceof IntegerColumnStatistics) {
+ return ((IntegerColumnStatistics) index).getMaximum();
+ } else if (index instanceof DoubleColumnStatistics) {
+ return ((DoubleColumnStatistics) index).getMaximum();
+ } else if (index instanceof StringColumnStatistics) {
+ return ((StringColumnStatistics) index).getMaximum();
+ } else if (index instanceof DateColumnStatistics) {
+ return ((DateColumnStatistics) index).getMaximum();
+ } else if (index instanceof DecimalColumnStatistics) {
+ return ((DecimalColumnStatistics) index).getMaximum();
+ } else {
+ return null;
}
- return null;
}
/**
- * Get the maximum value out of an index entry.
- * @param index the index entry
- * @return the object for the maximum value or null if there isn't one
+ * Get the minimum value out of an index entry.
+ * @param index
+ * the index entry
+ * @return the object for the minimum value or null if there isn't one
*/
- static Object getMax(OrcProto.ColumnStatistics index) {
- if (index.hasIntStatistics()) {
- OrcProto.IntegerStatistics stat = index.getIntStatistics();
- if (stat.hasMaximum()) {
- return stat.getMaximum();
- }
- }
- if (index.hasStringStatistics()) {
- OrcProto.StringStatistics stat = index.getStringStatistics();
- if (stat.hasMaximum()) {
- return stat.getMaximum();
- }
- }
- if (index.hasDoubleStatistics()) {
- OrcProto.DoubleStatistics stat = index.getDoubleStatistics();
- if (stat.hasMaximum()) {
- return stat.getMaximum();
- }
+ static Object getMin(ColumnStatistics index) {
+ if (index instanceof IntegerColumnStatistics) {
+ return ((IntegerColumnStatistics) index).getMinimum();
+ } else if (index instanceof DoubleColumnStatistics) {
+ return ((DoubleColumnStatistics) index).getMinimum();
+ } else if (index instanceof StringColumnStatistics) {
+ return ((StringColumnStatistics) index).getMinimum();
+ } else if (index instanceof DateColumnStatistics) {
+ return ((DateColumnStatistics) index).getMinimum();
+ } else if (index instanceof DecimalColumnStatistics) {
+ return ((DecimalColumnStatistics) index).getMinimum();
+ } else {
+ return null;
}
- return null;
}
/**
@@ -2228,7 +2227,8 @@ class RecordReaderImpl implements Record
*/
static TruthValue evaluatePredicate(OrcProto.ColumnStatistics index,
PredicateLeaf predicate) {
- Object minValue = getMin(index);
+ ColumnStatistics cs = ColumnStatisticsImpl.deserialize(index);
+ Object minValue = getMin(cs);
// if we didn't have any values, everything must have been null
if (minValue == null) {
if (predicate.getOperator() == PredicateLeaf.Operator.IS_NULL) {
@@ -2237,13 +2237,20 @@ class RecordReaderImpl implements Record
return TruthValue.NULL;
}
}
- Object maxValue = getMax(index);
+ Object maxValue = getMax(cs);
return evaluatePredicateRange(predicate, minValue, maxValue);
}
- static TruthValue evaluatePredicateRange(PredicateLeaf predicate, Object minValue,
- Object maxValue) {
+ static TruthValue evaluatePredicateRange(PredicateLeaf predicate, Object min,
+ Object max) {
Location loc;
+
+ // column statistics for char/varchar columns are stored as strings, so convert char/varchar
+ // type predicates to string
+ Object predObj = predicate.getLiteral();
+ Object minValue = getPrimitiveObject(predObj, min);
+ Object maxValue = getPrimitiveObject(predObj, max);
+
switch (predicate.getOperator()) {
case NULL_SAFE_EQUALS:
loc = compareToRange((Comparable) predicate.getLiteral(),
@@ -2288,6 +2295,8 @@ class RecordReaderImpl implements Record
// for a single value, look through to see if that value is in the
// set
for(Object arg: predicate.getLiteralList()) {
+ minValue = getPrimitiveObject(arg, min);
+ maxValue = getPrimitiveObject(arg, max);
loc = compareToRange((Comparable) arg, minValue, maxValue);
if (loc == Location.MIN) {
return TruthValue.YES_NULL;
@@ -2297,6 +2306,8 @@ class RecordReaderImpl implements Record
} else {
// are all of the values outside of the range?
for(Object arg: predicate.getLiteralList()) {
+ minValue = getPrimitiveObject(arg, min);
+ maxValue = getPrimitiveObject(arg, max);
loc = compareToRange((Comparable) arg, minValue, maxValue);
if (loc == Location.MIN || loc == Location.MIDDLE ||
loc == Location.MAX) {
@@ -2307,9 +2318,16 @@ class RecordReaderImpl implements Record
}
case BETWEEN:
List<Object> args = predicate.getLiteralList();
+ minValue = getPrimitiveObject(args.get(0), min);
+ maxValue = getPrimitiveObject(args.get(0), max);
+
loc = compareToRange((Comparable) args.get(0), minValue, maxValue);
if (loc == Location.BEFORE || loc == Location.MIN) {
- Location loc2 = compareToRange((Comparable) args.get(1), minValue,
+ Object predObj2 = args.get(1);
+ minValue = getPrimitiveObject(predObj2, min);
+ maxValue = getPrimitiveObject(predObj2, max);
+
+ Location loc2 = compareToRange((Comparable) predObj2, minValue,
maxValue);
if (loc2 == Location.AFTER || loc2 == Location.MAX) {
return TruthValue.YES_NULL;
@@ -2330,6 +2348,38 @@ class RecordReaderImpl implements Record
}
}
+ private static Object getPrimitiveObject(Object predObj, Object obj) {
+ if (obj instanceof DateWritable) {
+ DateWritable dobj = (DateWritable) obj;
+ if (predObj instanceof String || predObj instanceof HiveChar
+ || predObj instanceof HiveVarchar) {
+ return dobj.toString();
+ }
+ } else if (obj instanceof HiveDecimal) {
+ HiveDecimal hdObj = (HiveDecimal) obj;
+ if (predObj instanceof Float) {
+ return hdObj.floatValue();
+ } else if (predObj instanceof Double) {
+ return hdObj.doubleValue();
+ } else if (predObj instanceof Short) {
+ return hdObj.shortValue();
+ } else if (predObj instanceof Integer) {
+ return hdObj.intValue();
+ } else if (predObj instanceof Long) {
+ return hdObj.longValue();
+ } else if (predObj instanceof String || predObj instanceof HiveChar
+ || predObj instanceof HiveVarchar) {
+ // primitive type of char/varchar is Text (i.e trailing white spaces trimmed string)
+ return StringUtils.stripEnd(hdObj.toString(), null);
+ }
+ } else if (obj instanceof String || obj instanceof HiveChar || obj instanceof HiveVarchar) {
+ // primitive type of char/varchar is Text (i.e trailing white spaces trimmed string)
+ return StringUtils.stripEnd(obj.toString(), null);
+ }
+
+ return obj;
+ }
+
/**
* Pick the row groups that we need to load from the current stripe.
* @return an array with a boolean for each row group or null if all of the
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java?rev=1574237&r1=1574236&r2=1574237&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/PredicateLeaf.java Tue Mar 4 23:08:57 2014
@@ -45,7 +45,11 @@ public interface PredicateLeaf {
public static enum Type {
INTEGER, // all of the integer types
FLOAT, // float and double
- STRING
+ STRING,
+ DATE,
+ DECIMAL,
+ CHAR,
+ VARCHAR
}
/**
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java?rev=1574237&r1=1574236&r2=1574237&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/SearchArgumentImpl.java Tue Mar 4 23:08:57 2014
@@ -283,11 +283,19 @@ final class SearchArgumentImpl implement
case INT:
case LONG:
return PredicateLeaf.Type.INTEGER;
+ case CHAR:
+ return PredicateLeaf.Type.CHAR;
+ case VARCHAR:
+ return PredicateLeaf.Type.VARCHAR;
case STRING:
return PredicateLeaf.Type.STRING;
case FLOAT:
case DOUBLE:
return PredicateLeaf.Type.FLOAT;
+ case DATE:
+ return PredicateLeaf.Type.DATE;
+ case DECIMAL:
+ return PredicateLeaf.Type.DECIMAL;
default:
}
}
Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java?rev=1574237&r1=1574236&r2=1574237&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java (original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java Tue Mar 4 23:08:57 2014
@@ -18,21 +18,21 @@
package org.apache.hadoop.hive.ql.io.orc;
-import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf;
-import org.apache.hadoop.hive.ql.io.sarg.SearchArgument.TruthValue;
-import org.apache.hadoop.hive.ql.io.sarg.TestSearchArgumentImpl;
-import org.junit.Test;
-
-import org.apache.hadoop.hive.ql.io.orc.RecordReaderImpl.Location;
-
-import java.util.ArrayList;
-import java.util.List;
-
import static junit.framework.Assert.assertEquals;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.ql.io.orc.RecordReaderImpl.Location;
+import org.apache.hadoop.hive.ql.io.sarg.PredicateLeaf;
+import org.apache.hadoop.hive.ql.io.sarg.SearchArgument.TruthValue;
+import org.apache.hadoop.hive.ql.io.sarg.TestSearchArgumentImpl;
+import org.junit.Test;
+
public class TestRecordReaderImpl {
@Test
@@ -76,25 +76,44 @@ public class TestRecordReaderImpl {
}
@Test
+ public void testCompareToCharNeedConvert() throws Exception {
+ assertEquals(Location.BEFORE,
+ RecordReaderImpl.compareToRange("apple", "hello", "world"));
+ assertEquals(Location.AFTER,
+ RecordReaderImpl.compareToRange("zombie", "hello", "world"));
+ assertEquals(Location.MIN,
+ RecordReaderImpl.compareToRange("hello", "hello", "world"));
+ assertEquals(Location.MIDDLE,
+ RecordReaderImpl.compareToRange("pilot", "hello", "world"));
+ assertEquals(Location.MAX,
+ RecordReaderImpl.compareToRange("world", "hello", "world"));
+ assertEquals(Location.BEFORE,
+ RecordReaderImpl.compareToRange("apple", "hello", "hello"));
+ assertEquals(Location.MIN,
+ RecordReaderImpl.compareToRange("hello", "hello", "hello"));
+ assertEquals(Location.AFTER,
+ RecordReaderImpl.compareToRange("zombie", "hello", "hello"));
+ }
+
+ @Test
public void testGetMin() throws Exception {
- assertEquals(null, RecordReaderImpl.getMin(createIntStats(null, null)));
- assertEquals(10L, RecordReaderImpl.getMin(createIntStats(10L, 100L)));
- assertEquals(null, RecordReaderImpl.getMin(
- OrcProto.ColumnStatistics.newBuilder()
- .setDoubleStatistics(OrcProto.DoubleStatistics.newBuilder().build())
- .build()));
- assertEquals(10.0d, RecordReaderImpl.getMin(
+ assertEquals(10L, RecordReaderImpl.getMin(ColumnStatisticsImpl.deserialize(createIntStats(10L, 100L))));
+ assertEquals(10.0d, RecordReaderImpl.getMin(ColumnStatisticsImpl.deserialize(
OrcProto.ColumnStatistics.newBuilder()
.setDoubleStatistics(OrcProto.DoubleStatistics.newBuilder()
- .setMinimum(10.0d).setMaximum(100.0d).build()).build()));
- assertEquals(null, RecordReaderImpl.getMin(
+ .setMinimum(10.0d).setMaximum(100.0d).build()).build())));
+ assertEquals(null, RecordReaderImpl.getMin(ColumnStatisticsImpl.deserialize(
OrcProto.ColumnStatistics.newBuilder()
.setStringStatistics(OrcProto.StringStatistics.newBuilder().build())
- .build()));
- assertEquals("a", RecordReaderImpl.getMin(
+ .build())));
+ assertEquals("a", RecordReaderImpl.getMin(ColumnStatisticsImpl.deserialize(
OrcProto.ColumnStatistics.newBuilder()
.setStringStatistics(OrcProto.StringStatistics.newBuilder()
- .setMinimum("a").setMaximum("b").build()).build()));
+ .setMinimum("a").setMaximum("b").build()).build())));
+ assertEquals("hello", RecordReaderImpl.getMin(ColumnStatisticsImpl
+ .deserialize(createStringStats("hello", "world"))));
+ assertEquals(HiveDecimal.create("111.1"), RecordReaderImpl.getMin(ColumnStatisticsImpl
+ .deserialize(createDecimalStats("111.1", "112.1"))));
}
private static OrcProto.ColumnStatistics createIntStats(Long min,
@@ -111,26 +130,39 @@ public class TestRecordReaderImpl {
.setIntStatistics(intStats.build()).build();
}
+ private static OrcProto.ColumnStatistics createStringStats(String min, String max) {
+ OrcProto.StringStatistics.Builder strStats = OrcProto.StringStatistics.newBuilder();
+ strStats.setMinimum(min);
+ strStats.setMaximum(max);
+ return OrcProto.ColumnStatistics.newBuilder().setStringStatistics(strStats.build()).build();
+ }
+
+ private static OrcProto.ColumnStatistics createDecimalStats(String min, String max) {
+ OrcProto.DecimalStatistics.Builder decStats = OrcProto.DecimalStatistics.newBuilder();
+ decStats.setMinimum(min);
+ decStats.setMaximum(max);
+ return OrcProto.ColumnStatistics.newBuilder().setDecimalStatistics(decStats.build()).build();
+ }
+
@Test
public void testGetMax() throws Exception {
- assertEquals(null, RecordReaderImpl.getMax(createIntStats(null, null)));
- assertEquals(100L, RecordReaderImpl.getMax(createIntStats(10L, 100L)));
- assertEquals(null, RecordReaderImpl.getMax(
- OrcProto.ColumnStatistics.newBuilder()
- .setDoubleStatistics(OrcProto.DoubleStatistics.newBuilder().build())
- .build()));
- assertEquals(100.0d, RecordReaderImpl.getMax(
+ assertEquals(100L, RecordReaderImpl.getMax(ColumnStatisticsImpl.deserialize(createIntStats(10L, 100L))));
+ assertEquals(100.0d, RecordReaderImpl.getMax(ColumnStatisticsImpl.deserialize(
OrcProto.ColumnStatistics.newBuilder()
.setDoubleStatistics(OrcProto.DoubleStatistics.newBuilder()
- .setMinimum(10.0d).setMaximum(100.0d).build()).build()));
- assertEquals(null, RecordReaderImpl.getMax(
+ .setMinimum(10.0d).setMaximum(100.0d).build()).build())));
+ assertEquals(null, RecordReaderImpl.getMax(ColumnStatisticsImpl.deserialize(
OrcProto.ColumnStatistics.newBuilder()
.setStringStatistics(OrcProto.StringStatistics.newBuilder().build())
- .build()));
- assertEquals("b", RecordReaderImpl.getMax(
+ .build())));
+ assertEquals("b", RecordReaderImpl.getMax(ColumnStatisticsImpl.deserialize(
OrcProto.ColumnStatistics.newBuilder()
.setStringStatistics(OrcProto.StringStatistics.newBuilder()
- .setMinimum("a").setMaximum("b").build()).build()));
+ .setMinimum("a").setMaximum("b").build()).build())));
+ assertEquals("world", RecordReaderImpl.getMax(ColumnStatisticsImpl
+ .deserialize(createStringStats("hello", "world"))));
+ assertEquals(HiveDecimal.create("112.1"), RecordReaderImpl.getMax(ColumnStatisticsImpl
+ .deserialize(createDecimalStats("111.1", "112.1"))));
}
@Test
@@ -150,6 +182,37 @@ public class TestRecordReaderImpl {
RecordReaderImpl.evaluatePredicate(createIntStats(0L, 10L), pred));
assertEquals(TruthValue.YES_NULL,
RecordReaderImpl.evaluatePredicate(createIntStats(15L, 15L), pred));
+
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.EQUALS,
+ PredicateLeaf.Type.CHAR, "x", "b", null);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
+
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.EQUALS,
+ PredicateLeaf.Type.VARCHAR, "x", "b", null);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
+
}
@Test
@@ -169,6 +232,36 @@ public class TestRecordReaderImpl {
RecordReaderImpl.evaluatePredicate(createIntStats(0L, 10L), pred));
assertEquals(TruthValue.YES_NO,
RecordReaderImpl.evaluatePredicate(createIntStats(15L, 15L), pred));
+
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.NULL_SAFE_EQUALS,
+ PredicateLeaf.Type.CHAR, "x", "hello", null);
+ assertEquals(TruthValue.NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("world", "zombie"), pred));
+ assertEquals(TruthValue.YES_NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("hello", "zombie"), pred));
+ assertEquals(TruthValue.YES_NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("apple", "zombie"), pred));
+ assertEquals(TruthValue.YES_NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("apple", "hello"), pred));
+ assertEquals(TruthValue.NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("apple", "banana"), pred));
+ assertEquals(TruthValue.YES_NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("hello", "hello"), pred));
+
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.NULL_SAFE_EQUALS,
+ PredicateLeaf.Type.VARCHAR, "x", "hello", null);
+ assertEquals(TruthValue.NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("world", "zombie"), pred));
+ assertEquals(TruthValue.YES_NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("hello", "zombie"), pred));
+ assertEquals(TruthValue.YES_NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("apple", "zombie"), pred));
+ assertEquals(TruthValue.YES_NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("apple", "hello"), pred));
+ assertEquals(TruthValue.NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("apple", "banana"), pred));
+ assertEquals(TruthValue.YES_NO,
+ RecordReaderImpl.evaluatePredicate(createStringStats("hello", "hello"), pred));
}
@Test
@@ -186,6 +279,36 @@ public class TestRecordReaderImpl {
RecordReaderImpl.evaluatePredicate(createIntStats(10L, 15L), lessThan));
assertEquals(TruthValue.YES_NULL,
RecordReaderImpl.evaluatePredicate(createIntStats(0L, 10L), lessThan));
+
+ PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf(
+ PredicateLeaf.Operator.LESS_THAN, PredicateLeaf.Type.CHAR, "x", "b", null);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
+
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.LESS_THAN,
+ PredicateLeaf.Type.VARCHAR, "x", "b", null);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
}
@Test
@@ -203,6 +326,36 @@ public class TestRecordReaderImpl {
RecordReaderImpl.evaluatePredicate(createIntStats(10L, 15L), pred));
assertEquals(TruthValue.YES_NULL,
RecordReaderImpl.evaluatePredicate(createIntStats(0L, 10L), pred));
+
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.LESS_THAN_EQUALS,
+ PredicateLeaf.Type.CHAR, "x", "b", null);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
+
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.LESS_THAN_EQUALS,
+ PredicateLeaf.Type.VARCHAR, "x", "b", null);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
}
@Test
@@ -221,6 +374,39 @@ public class TestRecordReaderImpl {
RecordReaderImpl.evaluatePredicate(createIntStats(10L, 30L), pred));
assertEquals(TruthValue.NO_NULL,
RecordReaderImpl.evaluatePredicate(createIntStats(12L, 18L), pred));
+
+ args.clear();
+ args.add("a");
+ args.add("b");
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.IN,
+ PredicateLeaf.Type.CHAR, "x", null, args);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
+
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.IN,
+ PredicateLeaf.Type.VARCHAR, "x", null, args);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
}
@Test
@@ -245,6 +431,39 @@ public class TestRecordReaderImpl {
RecordReaderImpl.evaluatePredicate(createIntStats(10L, 20L), pred));
assertEquals(TruthValue.YES_NULL,
RecordReaderImpl.evaluatePredicate(createIntStats(12L, 18L), pred));
+
+ args.clear();
+ args.add("a");
+ args.add("b");
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.BETWEEN,
+ PredicateLeaf.Type.CHAR, "x", null, args);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
+
+ pred = TestSearchArgumentImpl.createPredicateLeaf(PredicateLeaf.Operator.BETWEEN,
+ PredicateLeaf.Type.VARCHAR, "x", null, args);
+ assertEquals(TruthValue.NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("c", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "d"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "d"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "b"), pred));
+ assertEquals(TruthValue.YES_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("a", "a"), pred));
+ assertEquals(TruthValue.YES_NO_NULL,
+ RecordReaderImpl.evaluatePredicate(createStringStats("b", "b"), pred));
}
@Test
Added: hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_char.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_char.q?rev=1574237&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_char.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_char.q Tue Mar 4 23:08:57 2014
@@ -0,0 +1,76 @@
+SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
+SET mapred.min.split.size=1000;
+SET mapred.max.split.size=5000;
+
+create table newtypesorc(c char(10), v varchar(10), d decimal(5,3), da date) stored as orc tblproperties("orc.stripe.size"="16777216");
+
+insert overwrite table newtypesorc select * from (select cast("apple" as char(10)), cast("bee" as varchar(10)), 0.22, cast("1970-02-20" as date) from src src1 union all select cast("hello" as char(10)), cast("world" as varchar(10)), 11.22, cast("1970-02-27" as date) from src src2) uniontbl;
+
+set hive.optimize.index.filter=false;
+
+-- char data types (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_EQUALS, IN, BETWEEN tests)
+select sum(hash(*)) from newtypesorc where c="apple";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c="apple";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c!="apple";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c!="apple";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c<"hello";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c<"hello";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c<="hello";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c<="hello";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c="apple ";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c="apple ";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c in ("apple", "carrot");
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c in ("apple", "carrot");
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c in ("apple", "hello");
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c in ("apple", "hello");
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c in ("carrot");
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c in ("carrot");
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c between "apple" and "carrot";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c between "apple" and "carrot";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c between "apple" and "zombie";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c between "apple" and "zombie";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where c between "carrot" and "carrot1";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where c between "carrot" and "carrot1";
+
Added: hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_date.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_date.q?rev=1574237&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_date.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_date.q Tue Mar 4 23:08:57 2014
@@ -0,0 +1,97 @@
+SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
+SET mapred.min.split.size=1000;
+SET mapred.max.split.size=5000;
+
+create table newtypesorc(c char(10), v varchar(10), d decimal(5,3), da date) stored as orc tblproperties("orc.stripe.size"="16777216");
+
+insert overwrite table newtypesorc select * from (select cast("apple" as char(10)), cast("bee" as varchar(10)), 0.22, cast("1970-02-20" as date) from src src1 union all select cast("hello" as char(10)), cast("world" as varchar(10)), 11.22, cast("1970-02-27" as date) from src src2) uniontbl;
+
+-- date data types (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_EQUALS, IN, BETWEEN tests)
+select sum(hash(*)) from newtypesorc where da='1970-02-20';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da='1970-02-20';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as date);
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as date);
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as varchar(20));
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as varchar(20));
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da!='1970-02-20';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da!='1970-02-20';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da<'1970-02-27';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da<'1970-02-27';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da<'1970-02-29';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da<'1970-02-29';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da<'1970-02-15';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da<'1970-02-15';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da<='1970-02-20';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da<='1970-02-20';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da<='1970-02-27';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da<='1970-02-27';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-27' as date));
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-27' as date));
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da in (cast('1970-02-20' as date), cast('1970-02-27' as date));
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da in (cast('1970-02-20' as date), cast('1970-02-27' as date));
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-22' as date));
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-22' as date));
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-22';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-22';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-28';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-28';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where da between '1970-02-18' and '1970-02-19';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where da between '1970-02-18' and '1970-02-19';
Added: hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_decimal.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_decimal.q?rev=1574237&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_decimal.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_decimal.q Tue Mar 4 23:08:57 2014
@@ -0,0 +1,151 @@
+SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
+SET mapred.min.split.size=1000;
+SET mapred.max.split.size=5000;
+
+create table newtypesorc(c char(10), v varchar(10), d decimal(5,3), da date) stored as orc tblproperties("orc.stripe.size"="16777216");
+
+insert overwrite table newtypesorc select * from (select cast("apple" as char(10)), cast("bee" as varchar(10)), 0.22, cast("1970-02-20" as date) from src src1 union all select cast("hello" as char(10)), cast("world" as varchar(10)), 11.22, cast("1970-02-27" as date) from src src2) uniontbl;
+
+-- decimal data types (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_EQUALS, IN, BETWEEN tests)
+select sum(hash(*)) from newtypesorc where d=0.22;
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d=0.22;
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d='0.22';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d='0.22';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d=cast('0.22' as float);
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d=cast('0.22' as float);
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d!=0.22;
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d!=0.22;
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d!='0.22';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d!='0.22';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d!=cast('0.22' as float);
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d!=cast('0.22' as float);
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d<11.22;
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d<11.22;
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d<'11.22';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d<'11.22';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d<cast('11.22' as float);
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d<cast('11.22' as float);
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d<1;
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d<1;
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d<=11.22;
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d<=11.22;
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d<='11.22';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d<='11.22';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d<=cast('11.22' as float);
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d<=cast('11.22' as float);
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d<=12;
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d<=12;
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d in ('0.22', '1.0');
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d in ('0.22', '1.0');
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d in ('0.22', '11.22');
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d in ('0.22', '11.22');
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d in ('0.9', '1.0');
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d in ('0.9', '1.0');
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d in ('0.9', 0.22);
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d in ('0.9', 0.22);
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d in ('0.9', 0.22, cast('11.22' as float));
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d in ('0.9', 0.22, cast('11.22' as float));
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d between 0 and 1;
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d between 0 and 1;
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d between 0 and 1000;
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d between 0 and 1000;
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d between 0 and '2.0';
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d between 0 and '2.0';
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d between 0 and cast(3 as float);
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d between 0 and cast(3 as float);
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where d between 1 and cast(30 as char(10));
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where d between 1 and cast(30 as char(10));
Added: hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_varchar.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_varchar.q?rev=1574237&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_varchar.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/orc_ppd_varchar.q Tue Mar 4 23:08:57 2014
@@ -0,0 +1,76 @@
+SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
+SET mapred.min.split.size=1000;
+SET mapred.max.split.size=5000;
+
+create table newtypesorc(c char(10), v varchar(10), d decimal(5,3), da date) stored as orc tblproperties("orc.stripe.size"="16777216");
+
+insert overwrite table newtypesorc select * from (select cast("apple" as char(10)), cast("bee" as varchar(10)), 0.22, cast("1970-02-20" as date) from src src1 union all select cast("hello" as char(10)), cast("world" as varchar(10)), 11.22, cast("1970-02-27" as date) from src src2) uniontbl;
+
+set hive.optimize.index.filter=false;
+
+-- varchar data types (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_EQUALS, IN, BETWEEN tests)
+select sum(hash(*)) from newtypesorc where v="bee";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v="bee";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v!="bee";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v!="bee";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v<"world";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v<"world";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v<="world";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v<="world";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v="bee ";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v="bee ";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v in ("bee", "orange");
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v in ("bee", "orange");
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v in ("bee", "world");
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v in ("bee", "world");
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v in ("orange");
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v in ("orange");
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v between "bee" and "orange";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v between "bee" and "orange";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v between "bee" and "zombie";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v between "bee" and "zombie";
+
+set hive.optimize.index.filter=false;
+select sum(hash(*)) from newtypesorc where v between "orange" and "pine";
+
+set hive.optimize.index.filter=true;
+select sum(hash(*)) from newtypesorc where v between "orange" and "pine";
+
Added: hive/trunk/ql/src/test/results/clientpositive/orc_ppd_char.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/orc_ppd_char.q.out?rev=1574237&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/orc_ppd_char.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/orc_ppd_char.q.out Tue Mar 4 23:08:57 2014
@@ -0,0 +1,307 @@
+PREHOOK: query: create table newtypesorc(c char(10), v varchar(10), d decimal(5,3), da date) stored as orc tblproperties("orc.stripe.size"="16777216")
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+POSTHOOK: query: create table newtypesorc(c char(10), v varchar(10), d decimal(5,3), da date) stored as orc tblproperties("orc.stripe.size"="16777216")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@newtypesorc
+PREHOOK: query: insert overwrite table newtypesorc select * from (select cast("apple" as char(10)), cast("bee" as varchar(10)), 0.22, cast("1970-02-20" as date) from src src1 union all select cast("hello" as char(10)), cast("world" as varchar(10)), 11.22, cast("1970-02-27" as date) from src src2) uniontbl
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@newtypesorc
+POSTHOOK: query: insert overwrite table newtypesorc select * from (select cast("apple" as char(10)), cast("bee" as varchar(10)), 0.22, cast("1970-02-20" as date) from src src1 union all select cast("hello" as char(10)), cast("world" as varchar(10)), 11.22, cast("1970-02-27" as date) from src src2) uniontbl
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@newtypesorc
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+PREHOOK: query: -- char data types (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_EQUALS, IN, BETWEEN tests)
+select sum(hash(*)) from newtypesorc where c="apple"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: -- char data types (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_EQUALS, IN, BETWEEN tests)
+select sum(hash(*)) from newtypesorc where c="apple"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c="apple"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c="apple"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c!="apple"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c!="apple"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+334427804500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c!="apple"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c!="apple"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+334427804500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c<"hello"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c<"hello"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c<"hello"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c<"hello"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c<="hello"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c<="hello"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c<="hello"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c<="hello"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c="apple "
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c="apple "
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c="apple "
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c="apple "
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c in ("apple", "carrot")
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c in ("apple", "carrot")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c in ("apple", "carrot")
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c in ("apple", "carrot")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c in ("apple", "hello")
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c in ("apple", "hello")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c in ("apple", "hello")
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c in ("apple", "hello")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c in ("carrot")
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c in ("carrot")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c in ("carrot")
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c in ("carrot")
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c between "apple" and "carrot"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c between "apple" and "carrot"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c between "apple" and "carrot"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c between "apple" and "carrot"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c between "apple" and "zombie"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c between "apple" and "zombie"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c between "apple" and "zombie"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c between "apple" and "zombie"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c between "carrot" and "carrot1"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c between "carrot" and "carrot1"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where c between "carrot" and "carrot1"
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where c between "carrot" and "carrot1"
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
Added: hive/trunk/ql/src/test/results/clientpositive/orc_ppd_date.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/orc_ppd_date.q.out?rev=1574237&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/orc_ppd_date.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/orc_ppd_date.q.out Tue Mar 4 23:08:57 2014
@@ -0,0 +1,411 @@
+PREHOOK: query: create table newtypesorc(c char(10), v varchar(10), d decimal(5,3), da date) stored as orc tblproperties("orc.stripe.size"="16777216")
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+POSTHOOK: query: create table newtypesorc(c char(10), v varchar(10), d decimal(5,3), da date) stored as orc tblproperties("orc.stripe.size"="16777216")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@newtypesorc
+PREHOOK: query: insert overwrite table newtypesorc select * from (select cast("apple" as char(10)), cast("bee" as varchar(10)), 0.22, cast("1970-02-20" as date) from src src1 union all select cast("hello" as char(10)), cast("world" as varchar(10)), 11.22, cast("1970-02-27" as date) from src src2) uniontbl
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@newtypesorc
+POSTHOOK: query: insert overwrite table newtypesorc select * from (select cast("apple" as char(10)), cast("bee" as varchar(10)), 0.22, cast("1970-02-20" as date) from src src1 union all select cast("hello" as char(10)), cast("world" as varchar(10)), 11.22, cast("1970-02-27" as date) from src src2) uniontbl
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@newtypesorc
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+PREHOOK: query: -- date data types (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_EQUALS, IN, BETWEEN tests)
+select sum(hash(*)) from newtypesorc where da='1970-02-20'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: -- date data types (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_EQUALS, IN, BETWEEN tests)
+select sum(hash(*)) from newtypesorc where da='1970-02-20'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da='1970-02-20'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da='1970-02-20'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as date)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as date)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as date)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as date)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as varchar(20))
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as varchar(20))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as varchar(20))
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da=cast('1970-02-20' as varchar(20))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da!='1970-02-20'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da!='1970-02-20'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+334427804500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da!='1970-02-20'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da!='1970-02-20'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+334427804500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-27'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-27'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-27'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-27'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-29'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-29'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-29'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-29'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-15'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-15'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-15'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<'1970-02-15'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<='1970-02-20'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<='1970-02-20'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<='1970-02-20'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<='1970-02-20'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<='1970-02-27'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<='1970-02-27'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da<='1970-02-27'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da<='1970-02-27'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-27' as date))
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-27' as date))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+334427804500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-27' as date))
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-27' as date))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+334427804500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-20' as date), cast('1970-02-27' as date))
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-20' as date), cast('1970-02-27' as date))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-20' as date), cast('1970-02-27' as date))
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-20' as date), cast('1970-02-27' as date))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-22' as date))
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-22' as date))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-22' as date))
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da in (cast('1970-02-21' as date), cast('1970-02-22' as date))
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-22'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-22'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-22'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-22'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+-252951929000
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-28'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-28'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-28'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-19' and '1970-02-28'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+81475875500
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-18' and '1970-02-19'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-18' and '1970-02-19'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL
+PREHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-18' and '1970-02-19'
+PREHOOK: type: QUERY
+PREHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(hash(*)) from newtypesorc where da between '1970-02-18' and '1970-02-19'
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@newtypesorc
+#### A masked pattern was here ####
+POSTHOOK: Lineage: newtypesorc.c EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.d EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.da EXPRESSION []
+POSTHOOK: Lineage: newtypesorc.v EXPRESSION []
+NULL