You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/11/27 17:27:22 UTC

svn commit: r1546090 - in /hive/trunk/ql/src: java/org/apache/hadoop/hive/ql/io/ java/org/apache/hadoop/hive/ql/io/orc/ test/org/apache/hadoop/hive/ql/io/orc/ test/queries/clientpositive/ test/results/clientpositive/

Author: hashutosh
Date: Wed Nov 27 16:27:22 2013
New Revision: 1546090

URL: http://svn.apache.org/r1546090
Log:
HIVE-5876 : Split elimination in ORC breaks for partitioned tables (Prasanth J via Ashutosh Chauhan)

Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java
    hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSplitElimination.java
    hive/trunk/ql/src/test/queries/clientpositive/orc_split_elimination.q
    hive/trunk/ql/src/test/results/clientpositive/orc_split_elimination.q.out

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java?rev=1546090&r1=1546089&r2=1546090&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/HiveInputFormat.java Wed Nov 27 16:27:22 2013
@@ -280,6 +280,10 @@ public class HiveInputFormat<K extends W
         Operator op = mrwork.getAliasToWork().get(aliases.get(0));
         if ((op != null) && (op instanceof TableScanOperator)) {
           TableScanOperator tableScan = (TableScanOperator) op;
+          // push down projections.
+          ColumnProjectionUtils.appendReadColumns(
+              newjob, tableScan.getNeededColumnIDs(), tableScan.getNeededColumns());
+          // push down filters
           pushFilters(newjob, tableScan);
         }
       }

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=1546090&r1=1546089&r2=1546090&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 Wed Nov 27 16:27:22 2013
@@ -168,8 +168,7 @@ public class OrcInputFormat  implements 
   public static SearchArgument createSarg(List<OrcProto.Type> types, Configuration conf) {
     String serializedPushdown = conf.get(TableScanDesc.FILTER_EXPR_CONF_STR);
     if (serializedPushdown == null
-        || (conf.get(ColumnProjectionUtils.READ_COLUMN_NAMES_CONF_STR) == null
-        && conf.get(serdeConstants.LIST_COLUMNS) == null)) {
+        || conf.get(ColumnProjectionUtils.READ_COLUMN_NAMES_CONF_STR) == null) {
       LOG.info("No ORC pushdown predicate");
       return null;
     }
@@ -542,15 +541,21 @@ public class OrcInputFormat  implements 
         int[] filterColumns = null;
         if (sarg != null) {
           List<PredicateLeaf> sargLeaves = null;
-          String[] columnNames = conf.get(serdeConstants.LIST_COLUMNS).split(",");
-          if (columnNames == null) {
-            columnNames = conf.get(ColumnProjectionUtils.READ_COLUMN_NAMES_CONF_STR).split(",");
-          }
+          String[] allColumns = conf.get(serdeConstants.LIST_COLUMNS).split(",");
+          String[] neededColumns = conf.get(ColumnProjectionUtils.READ_COLUMN_NAMES_CONF_STR).split(",");
           sargLeaves = sarg.getLeaves();
           filterColumns = new int[sargLeaves.size()];
           for (int i = 0; i < filterColumns.length; ++i) {
             String colName = sargLeaves.get(i).getColumnName();
-            filterColumns[i] = RecordReaderImpl.findColumns(columnNames, colName);
+
+            // if needed columns does not contain the column specified in filter expression then
+            // it must be partition column. There will not be columns within ORC file for partitioned
+            // column, so we can ignore them
+            if (containsColumn(neededColumns, colName)) {
+              filterColumns[i] = RecordReaderImpl.findColumns(allColumns, colName);
+            } else {
+              filterColumns[i] = -1;
+            }
           }
 
           Metadata metadata = orcReader.getMetadata();
@@ -609,6 +614,15 @@ public class OrcInputFormat  implements 
       }
     }
 
+    private boolean containsColumn(String[] neededColumns, String colName) {
+      for (String col : neededColumns) {
+        if (colName.equalsIgnoreCase(col)) {
+          return true;
+        }
+      }
+      return false;
+    }
+
     private boolean isStripeSatisfyPredicate(StripeStatistics stripeStatistics,
         SearchArgument sarg, int[] filterColumns) {
       if (sarg != null && filterColumns != null) {
@@ -623,6 +637,12 @@ public class OrcInputFormat  implements 
             Object maxValue = getMax(stats);
             truthValues[pred] = RecordReaderImpl.evaluatePredicateRange(predLeaves.get(pred),
                 minValue, maxValue);
+          } else {
+
+            // parition column case.
+            // partition filter will be evaluated by partition pruner so
+            // we will not evaluate partition filter here.
+            truthValues[pred] = TruthValue.YES_NO_NULL;
           }
         }
         return sarg.evaluate(truthValues).isNeeded();

Modified: hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSplitElimination.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSplitElimination.java?rev=1546090&r1=1546089&r2=1546090&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSplitElimination.java (original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSplitElimination.java Wed Nov 27 16:27:22 2013
@@ -19,6 +19,7 @@ import org.apache.hadoop.hive.ql.udf.gen
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqualOrLessThan;
+import org.apache.hadoop.hive.serde2.ColumnProjectionUtils;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory;
 import org.apache.hadoop.io.Text;
@@ -64,8 +65,11 @@ public class TestOrcSplitElimination {
   @Before
   public void openFileSystem() throws Exception {
     conf = new JobConf();
+    // all columns
     conf.set("columns", "userid,string1,subtype,decimal1,ts");
     conf.set("columns.types", "bigint,string,double,decimal,timestamp");
+    // needed columns
+    conf.set(ColumnProjectionUtils.READ_COLUMN_NAMES_CONF_STR, "userid,subtype");
     fs = FileSystem.getLocal(conf);
     testFilePath = new Path(workDir, "TestOrcFile." +
         testCaseName.getMethodName() + ".orc");

Modified: hive/trunk/ql/src/test/queries/clientpositive/orc_split_elimination.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/orc_split_elimination.q?rev=1546090&r1=1546089&r2=1546090&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/orc_split_elimination.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/orc_split_elimination.q Wed Nov 27 16:27:22 2013
@@ -99,3 +99,70 @@ SET hive.optimize.index.filter=true;
 -- 5 mappers
 select userid,string1,subtype,decimal1,ts from orc_split_elim where userid<=70 order by userid;
 SET hive.optimize.index.filter=false;
+
+-- partitioned table
+create table orc_split_elim_part (userid bigint, string1 string, subtype double, decimal1 decimal, ts timestamp) partitioned by (country string, year int) stored as orc;
+
+alter table orc_split_elim_part add partition(country='us', year=2000);
+alter table orc_split_elim_part add partition(country='us', year=2001);
+
+load data local inpath '../../data/files/orc_split_elim.orc' into table orc_split_elim_part partition(country='us', year=2000);
+load data local inpath '../../data/files/orc_split_elim.orc' into table orc_split_elim_part partition(country='us', year=2001);
+
+-- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us'order by userid;
+
+SET hive.optimize.index.filter=true;
+-- 2 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' order by userid;
+SET hive.optimize.index.filter=false;
+
+-- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and (year=2000 or year=2001) order by userid;
+
+SET hive.optimize.index.filter=true;
+-- 2 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and (year=2000 or year=2001) order by userid;
+SET hive.optimize.index.filter=false;
+
+-- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and year=2000 order by userid;
+
+SET hive.optimize.index.filter=true;
+-- 1 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and year=2000 order by userid;
+SET hive.optimize.index.filter=false;
+
+-- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' order by userid;
+
+SET hive.optimize.index.filter=true;
+-- 4 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' order by userid;
+SET hive.optimize.index.filter=false;
+
+-- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and (year=2000 or year=2001) order by userid;
+
+SET hive.optimize.index.filter=true;
+-- 4 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and (year=2000 or year=2001) order by userid;
+SET hive.optimize.index.filter=false;
+
+-- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and year=2000 order by userid;
+
+SET hive.optimize.index.filter=true;
+-- 2 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and year=2000 order by userid;
+SET hive.optimize.index.filter=false;
+
+-- 0 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='in' order by userid;
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='us' and year=2002 order by userid;
+
+SET hive.optimize.index.filter=true;
+-- 0 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='in' order by userid;
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='us' and year=2002 order by userid;
+SET hive.optimize.index.filter=false;

Modified: hive/trunk/ql/src/test/results/clientpositive/orc_split_elimination.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/orc_split_elimination.q.out?rev=1546090&r1=1546089&r2=1546090&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/orc_split_elimination.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/orc_split_elimination.q.out Wed Nov 27 16:27:22 2013
@@ -255,3 +255,262 @@ POSTHOOK: Input: default@orc_split_elim
 13	bar	80.0	2	1969-12-31 16:00:05
 29	cat	8.0	3	1969-12-31 16:00:10
 70	dog	1.8	4	1969-12-31 16:00:15
+PREHOOK: query: -- partitioned table
+create table orc_split_elim_part (userid bigint, string1 string, subtype double, decimal1 decimal, ts timestamp) partitioned by (country string, year int) stored as orc
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: -- partitioned table
+create table orc_split_elim_part (userid bigint, string1 string, subtype double, decimal1 decimal, ts timestamp) partitioned by (country string, year int) stored as orc
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@orc_split_elim_part
+PREHOOK: query: alter table orc_split_elim_part add partition(country='us', year=2000)
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Input: default@orc_split_elim_part
+POSTHOOK: query: alter table orc_split_elim_part add partition(country='us', year=2000)
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Output: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: query: alter table orc_split_elim_part add partition(country='us', year=2001)
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Input: default@orc_split_elim_part
+POSTHOOK: query: alter table orc_split_elim_part add partition(country='us', year=2001)
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Output: default@orc_split_elim_part@country=us/year=2001
+PREHOOK: query: load data local inpath '../../data/files/orc_split_elim.orc' into table orc_split_elim_part partition(country='us', year=2000)
+PREHOOK: type: LOAD
+PREHOOK: Output: default@orc_split_elim_part@country=us/year=2000
+POSTHOOK: query: load data local inpath '../../data/files/orc_split_elim.orc' into table orc_split_elim_part partition(country='us', year=2000)
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: query: load data local inpath '../../data/files/orc_split_elim.orc' into table orc_split_elim_part partition(country='us', year=2001)
+PREHOOK: type: LOAD
+PREHOOK: Output: default@orc_split_elim_part@country=us/year=2001
+POSTHOOK: query: load data local inpath '../../data/files/orc_split_elim.orc' into table orc_split_elim_part partition(country='us', year=2001)
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@orc_split_elim_part@country=us/year=2001
+PREHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us'order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us'order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+2	foo	0.8	1	1969-12-31 16:00:00
+PREHOOK: query: -- 2 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+POSTHOOK: query: -- 2 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+2	foo	0.8	1	1969-12-31 16:00:00
+PREHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and (year=2000 or year=2001) order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and (year=2000 or year=2001) order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+2	foo	0.8	1	1969-12-31 16:00:00
+PREHOOK: query: -- 2 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and (year=2000 or year=2001) order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+POSTHOOK: query: -- 2 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and (year=2000 or year=2001) order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+2	foo	0.8	1	1969-12-31 16:00:00
+PREHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and year=2000 order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and year=2000 order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+PREHOOK: query: -- 1 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and year=2000 order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+#### A masked pattern was here ####
+POSTHOOK: query: -- 1 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=2 and country='us' and year=2000 order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+PREHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+2	foo	0.8	1	1969-12-31 16:00:00
+5	eat	0.8	6	1969-12-31 16:00:20
+5	eat	0.8	6	1969-12-31 16:00:20
+PREHOOK: query: -- 4 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+POSTHOOK: query: -- 4 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+2	foo	0.8	1	1969-12-31 16:00:00
+5	eat	0.8	6	1969-12-31 16:00:20
+5	eat	0.8	6	1969-12-31 16:00:20
+PREHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and (year=2000 or year=2001) order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and (year=2000 or year=2001) order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+2	foo	0.8	1	1969-12-31 16:00:00
+5	eat	0.8	6	1969-12-31 16:00:20
+5	eat	0.8	6	1969-12-31 16:00:20
+PREHOOK: query: -- 4 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and (year=2000 or year=2001) order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+POSTHOOK: query: -- 4 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and (year=2000 or year=2001) order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2001
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+2	foo	0.8	1	1969-12-31 16:00:00
+5	eat	0.8	6	1969-12-31 16:00:20
+5	eat	0.8	6	1969-12-31 16:00:20
+PREHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and year=2000 order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+#### A masked pattern was here ####
+POSTHOOK: query: -- 10 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and year=2000 order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+5	eat	0.8	6	1969-12-31 16:00:20
+PREHOOK: query: -- 2 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and year=2000 order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+PREHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+#### A masked pattern was here ####
+POSTHOOK: query: -- 2 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=5 and country='us' and year=2000 order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+POSTHOOK: Input: default@orc_split_elim_part@country=us/year=2000
+#### A masked pattern was here ####
+2	foo	0.8	1	1969-12-31 16:00:00
+5	eat	0.8	6	1969-12-31 16:00:20
+PREHOOK: query: -- 0 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='in' order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+#### A masked pattern was here ####
+POSTHOOK: query: -- 0 mapper - no split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='in' order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+#### A masked pattern was here ####
+PREHOOK: query: select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='us' and year=2002 order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+#### A masked pattern was here ####
+POSTHOOK: query: select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='us' and year=2002 order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+#### A masked pattern was here ####
+PREHOOK: query: -- 0 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='in' order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+#### A masked pattern was here ####
+POSTHOOK: query: -- 0 mapper - split elimination
+select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='in' order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+#### A masked pattern was here ####
+PREHOOK: query: select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='us' and year=2002 order by userid
+PREHOOK: type: QUERY
+PREHOOK: Input: default@orc_split_elim_part
+#### A masked pattern was here ####
+POSTHOOK: query: select userid,string1,subtype,decimal1,ts from orc_split_elim_part where userid<=70 and country='us' and year=2002 order by userid
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@orc_split_elim_part
+#### A masked pattern was here ####