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