Author: jpullokk
Date: Fri Jan 16 23:13:58 2015
New Revision: 1652542

URL: http://svn.apache.org/r1652542
Log:
HIVE-9224:  Inline Table, Properties (Laljo John Pullokkaran via Ashutosh 
Chauhan)

Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractBucketJoinProc.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AvgPartitionSizeBasedBigTableSelectorForAutoSMJ.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketingSortingReduceSinkOptimizer.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GlobalLimitOptimizer.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SkewJoinOptimizer.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/TableSizeBasedBigTableSelectorForAutoSMJ.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteGBUsingIndex.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/OpProcFactory.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/listbucketingpruner/LBPartitionProcFactory.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/metainfo/annotation/OpTraitsRulesProcFactory.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TableAccessAnalyzer.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AbstractOperatorDesc.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/OperatorDesc.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java
    hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestGenTezWork.java

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/Driver.java Fri Jan 16 
23:13:58 2015
@@ -699,15 +699,13 @@ public class Driver implements CommandPr
         || op.equals(HiveOperation.QUERY)) {
       SemanticAnalyzer querySem = (SemanticAnalyzer) sem;
       ParseContext parseCtx = querySem.getParseContext();
-      Map<TableScanOperator, Table> tsoTopMap = parseCtx.getTopToTable();
 
       for (Map.Entry<String, Operator<? extends OperatorDesc>> topOpMap : 
querySem
           .getParseContext().getTopOps().entrySet()) {
         Operator<? extends OperatorDesc> topOp = topOpMap.getValue();
-        if (topOp instanceof TableScanOperator
-            && tsoTopMap.containsKey(topOp)) {
+        if (topOp instanceof TableScanOperator) {
           TableScanOperator tableScanOp = (TableScanOperator) topOp;
-          Table tbl = tsoTopMap.get(tableScanOp);
+          Table tbl = tableScanOp.getConf().getTableMetadata();
           List<Integer> neededColumnIds = tableScanOp.getNeededColumnIDs();
           List<FieldSchema> columns = tbl.getCols();
           List<String> cols = new ArrayList<String>();

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractBucketJoinProc.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractBucketJoinProc.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractBucketJoinProc.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractBucketJoinProc.java
 Fri Jan 16 23:13:58 2015
@@ -203,7 +203,6 @@ abstract public class AbstractBucketJoin
         new LinkedHashMap<String, List<List<String>>>();
 
     HashMap<String, Operator<? extends OperatorDesc>> topOps = 
pGraphContext.getTopOps();
-    Map<TableScanOperator, Table> topToTable = pGraphContext.getTopToTable();
 
     HashMap<String, String> aliasToNewAliasMap = new HashMap<String, String>();
 
@@ -270,7 +269,7 @@ abstract public class AbstractBucketJoin
         joinKeyOrder = new Integer[keys.size()];
       }
 
-      Table tbl = topToTable.get(tso);
+      Table tbl = tso.getConf().getTableMetadata();
       if (tbl.isPartitioned()) {
         PrunedPartitionList prunedParts = 
pGraphContext.getPrunedPartitions(alias, tso);
         List<Partition> partitions = prunedParts.getNotDeniedPartns();

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AbstractSMBJoinProc.java
 Fri Jan 16 23:13:58 2015
@@ -249,8 +249,6 @@ abstract public class AbstractSMBJoinPro
     int pos,
     List<Order> sortColumnsFirstTable) throws SemanticException {
     String alias = aliases[pos];
-    Map<TableScanOperator, Table> topToTable = this.pGraphContext
-      .getTopToTable();
 
     /*
      * Consider a query like:
@@ -313,7 +311,7 @@ abstract public class AbstractSMBJoinPro
       return false;
     }
 
-    Table tbl = topToTable.get(tso);
+    Table tbl = tso.getConf().getTableMetadata();
     if (tbl.isPartitioned()) {
       PrunedPartitionList prunedParts = 
pGraphContext.getPrunedPartitions(alias, tso);
       List<Partition> partitions = prunedParts.getNotDeniedPartns();

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AvgPartitionSizeBasedBigTableSelectorForAutoSMJ.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AvgPartitionSizeBasedBigTableSelectorForAutoSMJ.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AvgPartitionSizeBasedBigTableSelectorForAutoSMJ.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/AvgPartitionSizeBasedBigTableSelectorForAutoSMJ.java
 Fri Jan 16 23:13:58 2015
@@ -71,7 +71,7 @@ public class AvgPartitionSizeBasedBigTab
 
         int numPartitions = 1; // in case the sizes match, preference is
                                // given to the table with fewer partitions
-        Table table = parseCtx.getTopToTable().get(topOp);
+        Table table = topOp.getConf().getTableMetadata();
         long averageSize = 0;
 
         if (!table.isPartitioned()) {

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketingSortingReduceSinkOptimizer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketingSortingReduceSinkOptimizer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketingSortingReduceSinkOptimizer.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketingSortingReduceSinkOptimizer.java
 Fri Jan 16 23:13:58 2015
@@ -465,7 +465,7 @@ public class BucketingSortingReduceSinkO
           if (op instanceof TableScanOperator) {
             assert !useBucketSortPositions;
             TableScanOperator ts = (TableScanOperator) op;
-            Table srcTable = pGraphContext.getTopToTable().get(ts);
+            Table srcTable = ts.getConf().getTableMetadata();
 
             // Find the positions of the bucketed columns in the table 
corresponding
             // to the select list.

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
 Fri Jan 16 23:13:58 2015
@@ -186,7 +186,7 @@ public class DynamicPartitionPruningOpti
       String column = extractColName(ctx.parent);
 
       if (ts != null && column != null) {
-        Table table = parseContext.getTopToTable().get(ts);
+        Table table = ts.getConf().getTableMetadata();
 
         if (table != null && table.isPartitionKey(column)) {
           String alias = ts.getConf().getAlias();

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java 
Fri Jan 16 23:13:58 2015
@@ -70,7 +70,7 @@ public class GenMRTableScan1 implements
     TableScanOperator op = (TableScanOperator) nd;
     GenMRProcContext ctx = (GenMRProcContext) opProcCtx;
     ParseContext parseCtx = ctx.getParseCtx();
-    Class<? extends InputFormat> inputFormat = parseCtx.getTopToTable().get(op)
+    Class<? extends InputFormat> inputFormat = op.getConf().getTableMetadata()
         .getInputFormatClass();
     Map<Operator<? extends OperatorDesc>, GenMapRedCtx> mapCurrCtx = 
ctx.getMapCurrCtx();
 

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java 
Fri Jan 16 23:13:58 2015
@@ -521,12 +521,11 @@ public final class GenMapRedUtils {
 
     // The table does not have any partitions
     if (aliasPartnDesc == null) {
-      aliasPartnDesc = new PartitionDesc(Utilities.getTableDesc(parseCtx
-          .getTopToTable().get(topOp)), null);
-
+      aliasPartnDesc = new 
PartitionDesc(Utilities.getTableDesc(((TableScanOperator) topOp)
+          .getConf().getTableMetadata()), null);
     }
 
-    Map<String, String> props = parseCtx.getTopToProps().get(topOp);
+    Map<String, String> props = topOp.getConf().getOpProps();
     if (props != null) {
       Properties target = aliasPartnDesc.getProperties();
       if (target == null) {
@@ -955,7 +954,7 @@ public final class GenMapRedUtils {
 
   public static TableScanOperator createTemporaryTableScanOperator(RowSchema 
rowSchema) {
     TableScanOperator tableScanOp =
-        (TableScanOperator) OperatorFactory.get(new TableScanDesc(), 
rowSchema);
+        (TableScanOperator) OperatorFactory.get(new TableScanDesc(null), 
rowSchema);
     // Set needed columns for this dummy TableScanOperator
     List<Integer> neededColumnIds = new ArrayList<Integer>();
     List<String> neededColumnNames = new ArrayList<String>();

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GlobalLimitOptimizer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GlobalLimitOptimizer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GlobalLimitOptimizer.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GlobalLimitOptimizer.java
 Fri Jan 16 23:13:58 2015
@@ -62,10 +62,8 @@ public class GlobalLimitOptimizer implem
     GlobalLimitCtx globalLimitCtx = pctx.getGlobalLimitCtx();
     Map<TableScanOperator, ExprNodeDesc> opToPartPruner = 
pctx.getOpToPartPruner();
     Map<String, SplitSample> nameToSplitSample = pctx.getNameToSplitSample();
-    Map<TableScanOperator, Table> topToTable = pctx.getTopToTable();
 
     QB qb = pctx.getQB();
-    HiveConf conf = pctx.getConf();
     QBParseInfo qbParseInfo = qb.getParseInfo();
 
     // determine the query qualifies reduce input size for LIMIT
@@ -93,7 +91,7 @@ public class GlobalLimitOptimizer implem
       // query qualify for the optimization
       if (tempGlobalLimit != null && tempGlobalLimit != 0) {
         TableScanOperator ts = (TableScanOperator) 
topOps.values().toArray()[0];
-        Table tab = topToTable.get(ts);
+        Table tab = ts.getConf().getTableMetadata();
 
         if (!tab.isPartitioned()) {
           if (qbParseInfo.getDestToWhereExpr().isEmpty()) {

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java
 Fri Jan 16 23:13:58 2015
@@ -304,7 +304,7 @@ public class GroupByOptimizer implements
       // Create a mapping from the group by columns to the table columns
       Map<String, String> tableColsMapping = new HashMap<String, String>();
       Set<String> constantCols = new HashSet<String>();
-      Table table = pGraphContext.getTopToTable().get(currOp);
+      Table table = tableScanOp.getConf().getTableMetadata();
       for (FieldSchema col : table.getAllCols()) {
         tableColsMapping.put(col.getName(), col.getName());
       }

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchOptimizer.java
 Fri Jan 16 23:13:58 2015
@@ -176,7 +176,7 @@ public class SimpleFetchOptimizer implem
     if (!aggressive && qb.hasTableSample(alias)) {
       return null;
     }
-    Table table = pctx.getTopToTable().get(ts);
+    Table table = ts.getConf().getTableMetadata();
     if (table == null) {
       return null;
     }

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SkewJoinOptimizer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SkewJoinOptimizer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SkewJoinOptimizer.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SkewJoinOptimizer.java
 Fri Jan 16 23:13:58 2015
@@ -202,9 +202,7 @@ public class SkewJoinOptimizer implement
 
       for (Entry<String, Operator<? extends OperatorDesc>> topOp : 
topOps.entrySet()) {
         TableScanOperator tso = (TableScanOperator) topOp.getValue();
-        Table origTable = 
parseContext.getTopToTable().get(ctx.getCloneTSOpMap().get(tso));
         String tabAlias = tso.getConf().getAlias();
-        parseContext.getTopToTable().put(tso, origTable);
         int initCnt = 1;
         String newAlias = "subquery" + initCnt + ":" + tabAlias;
         while (origTopOps.containsKey(newAlias)) {
@@ -410,7 +408,7 @@ public class SkewJoinOptimizer implement
         if (op instanceof TableScanOperator) {
           TableScanOperator tsOp = (TableScanOperator)op;
           if (tableScanOpsForJoin.contains(tsOp)) {
-            return parseContext.getTopToTable().get(tsOp);
+            return tsOp.getConf().getTableMetadata();
           }
         }
         if ((op.getParentOperators() == null) || 
(op.getParentOperators().isEmpty()) || 

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/StatsOptimizer.java 
Fri Jan 16 23:13:58 2015
@@ -228,7 +228,7 @@ public class StatsOptimizer implements T
           return null;
         }
 
-        Table tbl = pctx.getTopToTable().get(tsOp);
+        Table tbl = tsOp.getConf().getTableMetadata();
         List<Object> oneRow = new ArrayList<Object>();
         List<ObjectInspector> ois = new ArrayList<ObjectInspector>();
 

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/TableSizeBasedBigTableSelectorForAutoSMJ.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/TableSizeBasedBigTableSelectorForAutoSMJ.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/TableSizeBasedBigTableSelectorForAutoSMJ.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/TableSizeBasedBigTableSelectorForAutoSMJ.java
 Fri Jan 16 23:13:58 2015
@@ -60,7 +60,7 @@ implements BigTableSelectorForAutoSMJ {
           currentPos++;
           continue;
         }
-        Table table = parseCtx.getTopToTable().get(topOp);
+        Table table = topOp.getConf().getTableMetadata();
         long currentSize = 0;
 
         if (!table.isPartitioned()) {

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationOptimizer.java
 Fri Jan 16 23:13:58 2015
@@ -124,7 +124,7 @@ public class CorrelationOptimizer implem
 
         Set<String> aliases = new LinkedHashSet<String>();
         for (TableScanOperator tsop : topOps) {
-          Table table = pCtx.getTopToTable().get(tsop);
+          Table table = tsop.getConf().getTableMetadata();
           if (table == null) {
             // table should not be null.
             throw new SemanticException("The table of " +

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteGBUsingIndex.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteGBUsingIndex.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteGBUsingIndex.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteGBUsingIndex.java
 Fri Jan 16 23:13:58 2015
@@ -161,11 +161,10 @@ public class RewriteGBUsingIndex impleme
      * if the optimization can be applied. If yes, we add the name of the top 
table to
      * the tsOpToProcess to apply rewrite later on.
      * */
-    Map<TableScanOperator, Table> topToTable = parseContext.getTopToTable();
     for (Map.Entry<String, Operator<?>> entry : 
parseContext.getTopOps().entrySet()) {
       String alias = entry.getKey();
       TableScanOperator topOp = (TableScanOperator) entry.getValue();
-      Table table = topToTable.get(topOp);
+      Table table = topOp.getConf().getTableMetadata();
       List<Index> indexes = tableToIndex.get(table);
       if (indexes.isEmpty()) {
         continue;
@@ -232,12 +231,16 @@ public class RewriteGBUsingIndex impleme
     supportedIndexes.add(AggregateIndexHandler.class.getName());
 
     // query the metastore to know what columns we have indexed
-    Collection<Table> topTables = parseContext.getTopToTable().values();
+    Collection<Operator<? extends OperatorDesc>> topTables = 
parseContext.getTopOps().values();
     Map<Table, List<Index>> indexes = new HashMap<Table, List<Index>>();
-    for (Table tbl : topTables){
-      List<Index> tblIndexes = IndexUtils.getIndexes(tbl, supportedIndexes);
-      if (tblIndexes.size() > 0) {
-        indexes.put(tbl, tblIndexes);
+    for (Operator<? extends OperatorDesc> op : topTables) {
+      if (op instanceof TableScanOperator) {
+        TableScanOperator tsOP = (TableScanOperator) op;
+        List<Index> tblIndexes = 
IndexUtils.getIndexes(tsOP.getConf().getTableMetadata(),
+            supportedIndexes);
+        if (tblIndexes.size() > 0) {
+          indexes.put(tsOP.getConf().getTableMetadata(), tblIndexes);
+        }
       }
     }
 

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java
 Fri Jan 16 23:13:58 2015
@@ -170,7 +170,6 @@ public final class RewriteQueryUsingAggr
 
     // Need to remove the original TableScanOperators from these data 
structures
     // and add new ones
-    Map<TableScanOperator, Table> topToTable = 
rewriteQueryCtx.getParseContext().getTopToTable();
     Map<String, Operator<? extends OperatorDesc>> topOps = 
rewriteQueryCtx.getParseContext()
         .getTopOps();
     Map<Operator<? extends OperatorDesc>, OpParseContext> opParseContext = 
rewriteQueryCtx
@@ -181,13 +180,8 @@ public final class RewriteQueryUsingAggr
 
     // remove original TableScanOperator
     topOps.remove(alias);
-    topToTable.remove(scanOperator);
     opParseContext.remove(scanOperator);
 
-    // construct a new descriptor for the index table scan
-    TableScanDesc indexTableScanDesc = new TableScanDesc();
-    indexTableScanDesc.setGatherStats(false);
-
     String indexTableName = rewriteQueryCtx.getIndexName();
     Table indexTableHandle = null;
     try {
@@ -198,6 +192,10 @@ public final class RewriteQueryUsingAggr
       throw new SemanticException(e.getMessage(), e);
     }
 
+    // construct a new descriptor for the index table scan
+    TableScanDesc indexTableScanDesc = new TableScanDesc(indexTableHandle);
+    indexTableScanDesc.setGatherStats(false);
+
     String k = indexTableName + Path.SEPARATOR;
     indexTableScanDesc.setStatsAggPrefix(k);
     scanOperator.setConf(indexTableScanDesc);
@@ -227,12 +225,10 @@ public final class RewriteQueryUsingAggr
     }
 
     // Scan operator now points to other table
-    topToTable.put(scanOperator, indexTableHandle);
     scanOperator.getConf().setAlias(newAlias);
     scanOperator.setAlias(indexTableName);
     topOps.put(newAlias, scanOperator);
     opParseContext.put(scanOperator, operatorContext);
-    
rewriteQueryCtx.getParseContext().setTopToTable((HashMap<TableScanOperator, 
Table>) topToTable);
     rewriteQueryCtx.getParseContext().setTopOps(
         (HashMap<String, Operator<? extends OperatorDesc>>) topOps);
     rewriteQueryCtx.getParseContext().setOpParseCtx(

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/OpProcFactory.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/OpProcFactory.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/OpProcFactory.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/OpProcFactory.java
 Fri Jan 16 23:13:58 2015
@@ -139,7 +139,7 @@ public class OpProcFactory {
 
       // Table scan operator.
       TableScanOperator top = (TableScanOperator)nd;
-      org.apache.hadoop.hive.ql.metadata.Table t = 
pctx.getTopToTable().get(top);
+      org.apache.hadoop.hive.ql.metadata.Table t = 
top.getConf().getTableMetadata();
       Table tab = t.getTTable();
 
       // Generate the mappings

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/listbucketingpruner/LBPartitionProcFactory.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/listbucketingpruner/LBPartitionProcFactory.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/listbucketingpruner/LBPartitionProcFactory.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/listbucketingpruner/LBPartitionProcFactory.java
 Fri Jan 16 23:13:58 2015
@@ -52,7 +52,7 @@ public class LBPartitionProcFactory exte
     protected void generatePredicate(NodeProcessorCtx procCtx, FilterOperator 
fop,
         TableScanOperator top) throws SemanticException, UDFArgumentException {
       LBOpPartitionWalkerCtx owc = (LBOpPartitionWalkerCtx) procCtx;
-      Table tbl = owc.getParseContext().getTopToTable().get(top);
+      Table tbl = top.getConf().getTableMetadata();
       if (tbl.isPartitioned()) {
         // Run partition pruner to get partitions
         ParseContext parseCtx = owc.getParseContext();

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/metainfo/annotation/OpTraitsRulesProcFactory.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/metainfo/annotation/OpTraitsRulesProcFactory.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/metainfo/annotation/OpTraitsRulesProcFactory.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/metainfo/annotation/OpTraitsRulesProcFactory.java
 Fri Jan 16 23:13:58 2015
@@ -161,7 +161,7 @@ public class OpTraitsRulesProcFactory {
         Object... nodeOutputs) throws SemanticException {
       TableScanOperator ts = (TableScanOperator)nd;
       AnnotateOpTraitsProcCtx opTraitsCtx = (AnnotateOpTraitsProcCtx)procCtx;
-      Table table = opTraitsCtx.getParseContext().getTopToTable().get(ts);
+      Table table = ts.getConf().getTableMetadata();
       PrunedPartitionList prunedPartList = null;
       try {
         prunedPartList =

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java
 Fri Jan 16 23:13:58 2015
@@ -28,6 +28,7 @@ import java.util.Map;
 import java.util.Stack;
 
 import org.apache.hadoop.hive.metastore.api.Index;
+import org.apache.hadoop.hive.ql.exec.Operator;
 import org.apache.hadoop.hive.ql.exec.TableScanOperator;
 import org.apache.hadoop.hive.ql.exec.Task;
 import org.apache.hadoop.hive.ql.index.bitmap.BitmapIndexHandler;
@@ -47,6 +48,7 @@ import org.apache.hadoop.hive.ql.optimiz
 import org.apache.hadoop.hive.ql.parse.ParseContext;
 import org.apache.hadoop.hive.ql.parse.SemanticException;
 import org.apache.hadoop.hive.ql.plan.MapredWork;
+import org.apache.hadoop.hive.ql.plan.OperatorDesc;
 
 /**
  *
@@ -115,12 +117,14 @@ public class IndexWhereTaskDispatcher im
     supportedIndexes.add(BitmapIndexHandler.class.getName());
 
     // query the metastore to know what columns we have indexed
-    Collection<Table> topTables = pctx.getTopToTable().values();
     Map<TableScanOperator, List<Index>> indexes = new 
HashMap<TableScanOperator, List<Index>>();
-    for (Map.Entry<TableScanOperator, Table> entry : 
pctx.getTopToTable().entrySet()) {
-      List<Index> tblIndexes = IndexUtils.getIndexes(entry.getValue(), 
supportedIndexes);
-      if (tblIndexes.size() > 0) {
-        indexes.put(entry.getKey(), tblIndexes);
+    for (Operator<? extends OperatorDesc> op : pctx.getTopOps().values()) {
+      if (op instanceof TableScanOperator) {
+        List<Index> tblIndexes = IndexUtils.getIndexes(((TableScanOperator) 
op).getConf()
+            .getTableMetadata(), supportedIndexes);
+        if (tblIndexes.size() > 0) {
+          indexes.put((TableScanOperator) op, tblIndexes);
+        }
       }
     }
 

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java
 Fri Jan 16 23:13:58 2015
@@ -138,7 +138,7 @@ public class PartitionPruner implements
    */
   public static PrunedPartitionList prune(TableScanOperator ts, ParseContext 
parseCtx,
       String alias) throws SemanticException {
-    return prune(parseCtx.getTopToTable().get(ts), 
parseCtx.getOpToPartPruner().get(ts),
+    return prune(ts.getConf().getTableMetadata(), 
parseCtx.getOpToPartPruner().get(ts),
         parseCtx.getConf(), alias, parseCtx.getPrunedPartitions());
   }
 

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
 Fri Jan 16 23:13:58 2015
@@ -103,7 +103,7 @@ public class StatsRulesProcFactory {
       AnnotateStatsProcCtx aspCtx = (AnnotateStatsProcCtx) procCtx;
       PrunedPartitionList partList =
           aspCtx.getParseContext().getPrunedPartitions(tsop.getName(), tsop);
-      Table table = aspCtx.getParseContext().getTopToTable().get(tsop);
+      Table table = tsop.getConf().getTableMetadata();
 
       try {
         // gather statistics for the first time and the attach it to table 
scan operator

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnAccessAnalyzer.java
 Fri Jan 16 23:13:58 2015
@@ -17,16 +17,20 @@
  */
 package org.apache.hadoop.hive.ql.parse;
 
+import java.util.Collection;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.ql.exec.Operator;
 import org.apache.hadoop.hive.ql.exec.TableScanOperator;
 import org.apache.hadoop.hive.ql.metadata.Table;
+import org.apache.hadoop.hive.ql.plan.OperatorDesc;
 
 public class ColumnAccessAnalyzer {
-  private static final Log LOG = 
LogFactory.getLog(ColumnAccessAnalyzer.class.getName());
+  private static final Log   LOG = 
LogFactory.getLog(ColumnAccessAnalyzer.class.getName());
   private final ParseContext pGraphContext;
 
   public ColumnAccessAnalyzer() {
@@ -39,19 +43,22 @@ public class ColumnAccessAnalyzer {
 
   public ColumnAccessInfo analyzeColumnAccess() throws SemanticException {
     ColumnAccessInfo columnAccessInfo = new ColumnAccessInfo();
-    Map<TableScanOperator, Table> topOps = pGraphContext.getTopToTable();
-    for (TableScanOperator op : topOps.keySet()) {
-      Table table = topOps.get(op);
-      String tableName = table.getCompleteName();
-      List<String> referenced = op.getReferencedColumns();
-      for (String column : referenced) {
-        columnAccessInfo.add(tableName, column);
-      }
-      if (table.isPartitioned()) {
-        PrunedPartitionList parts = 
pGraphContext.getPrunedPartitions(table.getTableName(), op);
-        if (parts.getReferredPartCols() != null) {
-          for (String partKey : parts.getReferredPartCols()) {
-            columnAccessInfo.add(tableName, partKey);
+    Collection<Operator<? extends OperatorDesc>> topOps = 
pGraphContext.getTopOps().values();
+    for (Operator<? extends OperatorDesc> op : topOps) {
+      if (op instanceof TableScanOperator) {
+        TableScanOperator top = (TableScanOperator) op;
+        Table table = top.getConf().getTableMetadata();
+        String tableName = table.getCompleteName();
+        List<String> referenced = top.getReferencedColumns();
+        for (String column : referenced) {
+          columnAccessInfo.add(tableName, column);
+        }
+        if (table.isPartitioned()) {
+          PrunedPartitionList parts = 
pGraphContext.getPrunedPartitions(table.getTableName(), top);
+          if (parts.getReferredPartCols() != null) {
+            for (String partKey : parts.getReferredPartCols()) {
+              columnAccessInfo.add(tableName, partKey);
+            }
           }
         }
       }

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java Fri 
Jan 16 23:13:58 2015
@@ -191,10 +191,7 @@ public class GenTezUtils {
 
     setupMapWork(mapWork, context, partitions, root, alias);
 
-    if (context.parseContext != null
-        && context.parseContext.getTopToTable() != null
-        && context.parseContext.getTopToTable().containsKey(ts)
-        && context.parseContext.getTopToTable().get(ts).isDummyTable()) {
+    if (ts.getConf().getTableMetadata() != null && 
ts.getConf().getTableMetadata().isDummyTable()) {
       mapWork.setDummyTableScan(true);
     }
 

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ParseContext.java 
Fri Jan 16 23:13:58 2015
@@ -42,7 +42,6 @@ import org.apache.hadoop.hive.ql.exec.Ta
 import org.apache.hadoop.hive.ql.exec.Task;
 import org.apache.hadoop.hive.ql.hooks.LineageInfo;
 import org.apache.hadoop.hive.ql.hooks.ReadEntity;
-import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.optimizer.ppr.PartitionPruner;
 import org.apache.hadoop.hive.ql.optimizer.unionproc.UnionProcContext;
 import org.apache.hadoop.hive.ql.plan.ExprNodeDesc;
@@ -71,14 +70,11 @@ public class ParseContext {
   private HashMap<TableScanOperator, sampleDesc> opToSamplePruner;
   private Map<TableScanOperator, Map<String, ExprNodeDesc>> 
opToPartToSkewedPruner;
   private HashMap<String, Operator<? extends OperatorDesc>> topOps;
-  private HashMap<String, Operator<? extends OperatorDesc>> topSelOps;
   private LinkedHashMap<Operator<? extends OperatorDesc>, OpParseContext> 
opParseCtx;
   private Map<JoinOperator, QBJoinTree> joinContext;
   private Map<MapJoinOperator, QBJoinTree> mapJoinContext;
   private Map<SMBMapJoinOperator, QBJoinTree> smbMapJoinContext;
-  private HashMap<TableScanOperator, Table> topToTable;
   private List<ReduceSinkOperator> 
reduceSinkOperatorsAddedByEnforceBucketingSorting;
-  private HashMap<TableScanOperator, Map<String, String>> topToProps;
   private HashMap<String, SplitSample> nameToSplitSample;
   private List<LoadTableDesc> loadTableWork;
   private List<LoadFileDesc> loadFileWork;
@@ -125,15 +121,11 @@ public class ParseContext {
    * @param opToPartList
    * @param topOps
    *          list of operators for the top query
-   * @param topSelOps
-   *          list of operators for the selects introduced for column pruning
    * @param opParseCtx
    *          operator parse context - contains a mapping from operator to
    *          operator parse state (row resolver etc.)
    * @param joinContext
    *          context needed join processing (map join specifically)
-   * @param topToTable
-   *          the top tables being processed
    * @param loadTableWork
    *          list of destination tables being loaded
    * @param loadFileWork
@@ -160,12 +152,9 @@ public class ParseContext {
       HashMap<TableScanOperator, ExprNodeDesc> opToPartPruner,
       HashMap<TableScanOperator, PrunedPartitionList> opToPartList,
       HashMap<String, Operator<? extends OperatorDesc>> topOps,
-      HashMap<String, Operator<? extends OperatorDesc>> topSelOps,
       LinkedHashMap<Operator<? extends OperatorDesc>, OpParseContext> 
opParseCtx,
       Map<JoinOperator, QBJoinTree> joinContext,
       Map<SMBMapJoinOperator, QBJoinTree> smbMapJoinContext,
-      HashMap<TableScanOperator, Table> topToTable,
-      HashMap<TableScanOperator, Map<String, String>> topToProps,
       List<LoadTableDesc> loadTableWork, List<LoadFileDesc> loadFileWork,
       Context ctx, HashMap<String, String> idToTableNameMap, int destTableId,
       UnionProcContext uCtx, List<AbstractMapJoinOperator<? extends 
MapJoinDesc>> listMapJoinOpsNoReducer,
@@ -186,13 +175,10 @@ public class ParseContext {
     this.opToPartList = opToPartList;
     this.joinContext = joinContext;
     this.smbMapJoinContext = smbMapJoinContext;
-    this.topToTable = topToTable;
-    this.topToProps = topToProps;
     this.loadFileWork = loadFileWork;
     this.loadTableWork = loadTableWork;
     this.opParseCtx = opParseCtx;
     this.topOps = topOps;
-    this.topSelOps = topSelOps;
     this.ctx = ctx;
     this.idToTableNameMap = idToTableNameMap;
     this.destTableId = destTableId;
@@ -292,21 +278,6 @@ public class ParseContext {
     return opToPartList;
   }
 
-  /**
-   * @return the topToTable
-   */
-  public HashMap<TableScanOperator, Table> getTopToTable() {
-    return topToTable;
-  }
-
-  /**
-   * @param topToTable
-   *          the topToTable to set
-   */
-  public void setTopToTable(HashMap<TableScanOperator, Table> topToTable) {
-    this.topToTable = topToTable;
-  }
-
   public List<ReduceSinkOperator> 
getReduceSinkOperatorsAddedByEnforceBucketingSorting() {
     return reduceSinkOperatorsAddedByEnforceBucketingSorting;
   }
@@ -318,21 +289,6 @@ public class ParseContext {
   }
 
   /**
-   * @return the topToProps
-   */
-  public HashMap<TableScanOperator, Map<String, String>> getTopToProps() {
-    return topToProps;
-  }
-
-  /**
-   * @param topToProps
-   *          the topToProps to set
-   */
-  public void setTopToProps(HashMap<TableScanOperator, Map<String, String>> 
topToProps) {
-    this.topToProps = topToProps;
-  }
-
-  /**
    * @return the topOps
    */
   public HashMap<String, Operator<? extends OperatorDesc>> getTopOps() {
@@ -348,22 +304,6 @@ public class ParseContext {
   }
 
   /**
-   * @return the topSelOps
-   */
-  public HashMap<String, Operator<? extends OperatorDesc>> getTopSelOps() {
-    return topSelOps;
-  }
-
-  /**
-   * @param topSelOps
-   *          the topSelOps to set
-   */
-  public void setTopSelOps(
-      HashMap<String, Operator<? extends OperatorDesc>> topSelOps) {
-    this.topSelOps = topSelOps;
-  }
-
-  /**
    * @return the opParseCtx
    */
   public LinkedHashMap<Operator<? extends OperatorDesc>, OpParseContext> 
getOpParseCtx() {

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/ProcessAnalyzeTable.java 
Fri Jan 16 23:13:58 2015
@@ -75,7 +75,7 @@ public class ProcessAnalyzeTable impleme
     TableScanOperator tableScan = (TableScanOperator) nd;
 
     ParseContext parseContext = context.parseContext;
-    Class<? extends InputFormat> inputFormat = 
parseContext.getTopToTable().get(tableScan)
+    Class<? extends InputFormat> inputFormat = 
tableScan.getConf().getTableMetadata()
         .getInputFormatClass();
     QB queryBlock = parseContext.getQB();
     QBParseInfo parseInfo = parseContext.getQB().getParseInfo();

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java 
Fri Jan 16 23:13:58 2015
@@ -375,7 +375,6 @@ public class SemanticAnalyzer extends Ba
     opToPartList = pctx.getOpToPartList();
     opToSamplePruner = pctx.getOpToSamplePruner();
     topOps = pctx.getTopOps();
-    topSelOps = pctx.getTopSelOps();
     opParseCtx = pctx.getOpParseCtx();
     loadTableWork = pctx.getLoadTableWork();
     loadFileWork = pctx.getLoadFileWork();
@@ -394,14 +393,13 @@ public class SemanticAnalyzer extends Ba
   }
 
   public ParseContext getParseContext() {
-    return new ParseContext(conf, qb, ast, opToPartPruner, opToPartList, 
topOps,
-        topSelOps, opParseCtx, joinContext, smbMapJoinContext, topToTable, 
topToTableProps,
-        loadTableWork, loadFileWork, ctx, idToTableNameMap, destTableId, uCtx,
+    return new ParseContext(conf, qb, ast, opToPartPruner, opToPartList,
+        topOps, opParseCtx, joinContext, smbMapJoinContext, loadTableWork,
+        loadFileWork, ctx, idToTableNameMap, destTableId, uCtx,
         listMapJoinOpsNoReducer, groupOpToInputTables, prunedPartitions,
         opToSamplePruner, globalLimitCtx, nameToSplitSample, inputs, rootTasks,
         opToPartToSkewedPruner, viewAliasToInput,
-        reduceSinkOperatorsAddedByEnforceBucketingSorting,
-        queryProperties);
+        reduceSinkOperatorsAddedByEnforceBucketingSorting, queryProperties);
   }
 
   @SuppressWarnings("nls")
@@ -9273,7 +9271,7 @@ public class SemanticAnalyzer extends Ba
       }
 
       // Create the root of the operator tree
-      TableScanDesc tsDesc = new TableScanDesc(alias, vcList);
+      TableScanDesc tsDesc = new TableScanDesc(alias, vcList, tab);
       setupStats(tsDesc, qb.getParseInfo(), tab, alias, rwsch);
 
       SplitSample sample = nameToSplitSample.get(alias_id);
@@ -9295,6 +9293,7 @@ public class SemanticAnalyzer extends Ba
       Map<String, String> props = qb.getTabPropsForAlias(alias);
       if (props != null) {
         topToTableProps.put((TableScanOperator) top, props);
+        tsDesc.setOpProps(props);
       }
     } else {
       rwsch = opParseCtx.get(top).getRowResolver();
@@ -9988,12 +9987,13 @@ public class SemanticAnalyzer extends Ba
     }
 
     // 4. Generate Parse Context for Optimizer & Physical compiler
-    ParseContext pCtx = new ParseContext(conf, qb, plannerCtx.child, 
opToPartPruner, opToPartList,
-        topOps, topSelOps, opParseCtx, joinContext, smbMapJoinContext, 
topToTable, topToTableProps,
-        loadTableWork, loadFileWork, ctx, idToTableNameMap, destTableId, uCtx,
-        listMapJoinOpsNoReducer, groupOpToInputTables, prunedPartitions, 
opToSamplePruner,
-        globalLimitCtx, nameToSplitSample, inputs, rootTasks, 
opToPartToSkewedPruner,
-        viewAliasToInput, reduceSinkOperatorsAddedByEnforceBucketingSorting, 
queryProperties);
+    ParseContext pCtx = new ParseContext(conf, qb, plannerCtx.child,
+        opToPartPruner, opToPartList, topOps, opParseCtx, joinContext,
+        smbMapJoinContext, loadTableWork, loadFileWork, ctx, idToTableNameMap,
+        destTableId, uCtx, listMapJoinOpsNoReducer, groupOpToInputTables,
+        prunedPartitions, opToSamplePruner, globalLimitCtx, nameToSplitSample,
+        inputs, rootTasks, opToPartToSkewedPruner, viewAliasToInput,
+        reduceSinkOperatorsAddedByEnforceBucketingSorting, queryProperties);
 
     // 5. Take care of view creation
     if (createVwDesc != null) {

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TableAccessAnalyzer.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TableAccessAnalyzer.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TableAccessAnalyzer.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TableAccessAnalyzer.java 
Fri Jan 16 23:13:58 2015
@@ -143,7 +143,7 @@ public class TableAccessAnalyzer {
 
       // Must be deterministic order map for consistent q-test output across 
Java versions
       Map<String, List<String>> tableToKeysMap = new LinkedHashMap<String, 
List<String>>();
-      Table tbl = pGraphContext.getTopToTable().get(tso);
+      Table tbl = tso.getConf().getTableMetadata();
       tableToKeysMap.put(tbl.getCompleteName(), keyColNames);
       tableAccessCtx.addOperatorTableAccess(op, tableToKeysMap);
 
@@ -203,7 +203,7 @@ public class TableAccessAnalyzer {
             return null;
           }
 
-          Table tbl = pGraphContext.getTopToTable().get(tso);
+          Table tbl = tso.getConf().getTableMetadata();
           tableToKeysMap.put(tbl.getCompleteName(), keyColNames);
         } else {
           return null;

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/TaskCompiler.java 
Fri Jan 16 23:13:58 2015
@@ -387,8 +387,8 @@ public abstract class TaskCompiler {
     ParseContext clone = new ParseContext(conf,
         pCtx.getQB(), pCtx.getParseTree(),
         pCtx.getOpToPartPruner(), pCtx.getOpToPartList(), pCtx.getTopOps(),
-        pCtx.getTopSelOps(), pCtx.getOpParseCtx(), pCtx.getJoinContext(),
-        pCtx.getSmbMapJoinContext(), pCtx.getTopToTable(), 
pCtx.getTopToProps(),
+        pCtx.getOpParseCtx(), pCtx.getJoinContext(),
+        pCtx.getSmbMapJoinContext(),
         pCtx.getLoadTableWork(), pCtx.getLoadFileWork(), pCtx.getContext(),
         pCtx.getIdToTableNameMap(), pCtx.getDestTableId(), pCtx.getUCtx(),
         pCtx.getListMapJoinOpsNoReducer(), pCtx.getGroupOpToInputTables(),

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/spark/SparkProcessAnalyzeTable.java
 Fri Jan 16 23:13:58 2015
@@ -82,7 +82,7 @@ public class SparkProcessAnalyzeTable im
     ParseContext parseContext = context.parseContext;
 
     @SuppressWarnings("rawtypes")
-    Class<? extends InputFormat> inputFormat = 
parseContext.getTopToTable().get(tableScan)
+    Class<? extends InputFormat> inputFormat = 
tableScan.getConf().getTableMetadata()
         .getInputFormatClass();
     QB queryBlock = parseContext.getQB();
     QBParseInfo parseInfo = parseContext.getQB().getParseInfo();

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AbstractOperatorDesc.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AbstractOperatorDesc.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AbstractOperatorDesc.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/AbstractOperatorDesc.java 
Fri Jan 16 23:13:58 2015
@@ -18,12 +18,22 @@
 
 package org.apache.hadoop.hive.ql.plan;
 
+
+import java.util.Map;
+
+import org.apache.hadoop.hive.ql.exec.PTFUtils;
+
 public class AbstractOperatorDesc implements OperatorDesc {
 
   protected boolean vectorMode = false;
   protected transient Statistics statistics;
   protected transient OpTraits opTraits;
+  protected transient Map<String, String> opProps;
 
+  static {
+    PTFUtils.makeTransient(AbstractOperatorDesc.class, "opProps");
+  }
+  
   @Override
   @Explain(skipHeader = true, displayName = "Statistics")
   public Statistics getStatistics() {
@@ -51,4 +61,12 @@ public class AbstractOperatorDesc implem
   public void setOpTraits(OpTraits opTraits) {
     this.opTraits = opTraits;
   }
+
+  public Map<String, String> getOpProps() {
+    return opProps;
+  }
+
+  public void setOpProps(Map<String, String> props) {
+    this.opProps = props;
+  }
 }

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/OperatorDesc.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/OperatorDesc.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/OperatorDesc.java 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/OperatorDesc.java Fri 
Jan 16 23:13:58 2015
@@ -19,6 +19,7 @@
 package org.apache.hadoop.hive.ql.plan;
 
 import java.io.Serializable;
+import java.util.Map;
 
 public interface OperatorDesc extends Serializable, Cloneable {
   public Object clone() throws CloneNotSupportedException;
@@ -26,4 +27,5 @@ public interface OperatorDesc extends Se
   public void setStatistics(Statistics statistics);
   public OpTraits getOpTraits();
   public void setOpTraits(OpTraits opTraits);
+  public Map<String, String> getOpProps();
 }

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java Fri 
Jan 16 23:13:58 2015
@@ -956,7 +956,7 @@ public final class PlanUtils {
       ReadEntity parentViewInfo = getParentViewInfo(alias, 
parseCtx.getViewAliasToInput());
 
       // Adds tables only for create view (PPD filter can be appended by outer 
query)
-      Table table = parseCtx.getTopToTable().get(topOp);
+      Table table = topOp.getConf().getTableMetadata();
       PlanUtils.addInput(inputs, new ReadEntity(table, parentViewInfo));
     }
   }

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/plan/TableScanDesc.java 
Fri Jan 16 23:13:58 2015
@@ -24,6 +24,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.hadoop.hive.ql.exec.PTFUtils;
+import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.metadata.VirtualColumn;
 
 /**
@@ -36,7 +37,7 @@ public class TableScanDesc extends Abstr
   private static final long serialVersionUID = 1L;
 
   static {
-    PTFUtils.makeTransient(TableScanDesc.class, "filterObject", 
"referencedColumns");
+    PTFUtils.makeTransient(TableScanDesc.class, "filterObject", 
"referencedColumns", "tableMetadata");
   }
 
   private String alias;
@@ -93,23 +94,32 @@ public class TableScanDesc extends Abstr
   
   private boolean isMetadataOnly = false;
 
-  @SuppressWarnings("nls")
+  private transient final Table tableMetadata;
+
+
   public TableScanDesc() {
+    this(null, null);
   }
 
-  public TableScanDesc(final String alias) {
-    this.alias = alias;
+  @SuppressWarnings("nls")
+  public TableScanDesc(Table tblMetadata) {
+    this(null, tblMetadata);
   }
 
-  public TableScanDesc(final String alias, List<VirtualColumn> vcs) {
+  public TableScanDesc(final String alias, Table tblMetadata) {
+    this(alias, null, tblMetadata);
+  }
+
+  public TableScanDesc(final String alias, List<VirtualColumn> vcs, Table 
tblMetadata) {
     this.alias = alias;
     this.virtualCols = vcs;
+    this.tableMetadata = tblMetadata;
   }
 
   @Override
   public Object clone() {
     List<VirtualColumn> vcs = new ArrayList<VirtualColumn>(getVirtualCols());
-    return new TableScanDesc(getAlias(), vcs);
+    return new TableScanDesc(getAlias(), vcs, this.tableMetadata);
   }
 
   @Explain(displayName = "alias")
@@ -250,8 +260,12 @@ public class TableScanDesc extends Abstr
   public void setIsMetadataOnly(boolean metadata_only) {
     isMetadataOnly = metadata_only;
   }
-  
+
   public boolean getIsMetadataOnly() {
     return isMetadataOnly;
   }
+
+  public Table getTableMetadata() {
+    return tableMetadata;
+  }
 }

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java 
(original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/OpProcFactory.java Fri 
Jan 16 23:13:58 2015
@@ -897,7 +897,7 @@ public final class OpProcFactory {
     HiveConf hiveConf) {
 
     TableScanDesc tableScanDesc = tableScanOp.getConf();
-    Table tbl = owi.getParseContext().getTopToTable().get(tableScanOp);
+    Table tbl = tableScanDesc.getTableMetadata();
     if (HiveConf.getBoolVar(hiveConf, HiveConf.ConfVars.HIVEOPTINDEXFILTER)) {
       // attach the original predicate to the table scan operator for index
       // optimizations that require the pushed predicate before pcr & later

Modified: 
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestGenTezWork.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestGenTezWork.java?rev=1652542&r1=1652541&r2=1652542&view=diff
==============================================================================
--- hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestGenTezWork.java 
(original)
+++ hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/parse/TestGenTezWork.java 
Fri Jan 16 23:13:58 2015
@@ -95,7 +95,7 @@ public class TestGenTezWork {
     rs = new ReduceSinkOperator();
     rs.setConf(new ReduceSinkDesc());
     ts = new TableScanOperator();
-    ts.setConf(new TableScanDesc());
+    ts.setConf(new TableScanDesc(null));
     ts.getChildOperators().add(rs);
     rs.getParentOperators().add(ts);
     rs.getChildOperators().add(fs);


Reply via email to