hadoop-hive-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From zs...@apache.org
Subject svn commit: r765753 [1/5] - in /hadoop/hive/branches/branch-0.3: ./ ql/src/java/org/apache/hadoop/hive/ql/optimizer/ ql/src/java/org/apache/hadoop/hive/ql/parse/ ql/src/java/org/apache/hadoop/hive/ql/plan/ ql/src/test/org/apache/hadoop/hive/ql/exec/ ql...
Date Thu, 16 Apr 2009 20:41:10 GMT
Author: zshao
Date: Thu Apr 16 20:41:08 2009
New Revision: 765753

URL: http://svn.apache.org/viewvc?rev=765753&view=rev
Log:
HIVE-421. Fix union followed by multi-table insert. (Namit Jain via zshao).

Added:
    hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/groupby9.q
    hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union17.q
    hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union18.q
    hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union19.q
    hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union20.q
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/groupby9.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union17.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union18.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union19.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union20.q.out
Modified:
    hadoop/hive/branches/branch-0.3/CHANGES.txt
    hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java
    hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java
    hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java
    hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java
    hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
    hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
    hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
    hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/mapredWork.java
    hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java
    hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestPlan.java
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join18.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join2.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join4.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join5.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join6.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join7.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join8.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union16.q.out
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/case_sensitivity.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/cast1.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/groupby1.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/groupby2.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/groupby3.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/groupby4.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/groupby5.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/groupby6.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input1.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input2.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input20.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input3.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input4.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input5.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input6.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input7.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input8.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input9.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input_part1.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input_testsequencefile.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input_testxpath.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/input_testxpath2.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/join1.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/join2.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/join3.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/join4.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/join5.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/join6.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/join7.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/join8.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/sample1.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/sample2.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/sample3.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/sample4.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/sample5.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/sample6.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/sample7.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/subq.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/udf1.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/udf4.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/udf6.q.xml
    hadoop/hive/branches/branch-0.3/ql/src/test/results/compiler/plan/union.q.xml

Modified: hadoop/hive/branches/branch-0.3/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/CHANGES.txt?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/CHANGES.txt (original)
+++ hadoop/hive/branches/branch-0.3/CHANGES.txt Thu Apr 16 20:41:08 2009
@@ -147,6 +147,8 @@
     HIVE-423. Change launch templates to use hive_model.jar.
     (Raghotham Murthy via zshao)
 
+    HIVE-421. Fix union followed by multi-table insert. (Namit Jain via zshao).
+
 Release 0.2.0 - Unreleased
 
   INCOMPATIBLE CHANGES

Modified: hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java Thu Apr 16 20:41:08 2009
@@ -24,6 +24,7 @@
 import java.io.Serializable;
 
 import org.apache.hadoop.hive.ql.exec.Operator;
+import org.apache.hadoop.hive.ql.exec.UnionOperator;
 import org.apache.hadoop.hive.ql.exec.Task;
 import org.apache.hadoop.hive.ql.plan.mapredWork;
 import org.apache.hadoop.hive.ql.lib.Node;
@@ -51,6 +52,7 @@
     Task<? extends Serializable> mvTask = ctx.getMvTask();
     Task<? extends Serializable> currTask = ctx.getCurrTask();
     Operator<? extends Serializable> currTopOp = ctx.getCurrTopOp();
+    UnionOperator currUnionOp = ctx.getCurrUnionOp();
     String currAliasId = ctx.getCurrAliasId();
     HashMap<Operator<? extends Serializable>, Task<? extends Serializable>> opTaskMap = ctx.getOpTaskMap();
     List<Operator<? extends Serializable>> seenOps = ctx.getSeenOps();
@@ -81,6 +83,11 @@
           currTask.removeDependentTask(mvTask);
       }
     }
+    else if (currUnionOp != null) {
+      opTaskMap.put(null, currTask);
+      GenMapRedUtils.initUnionPlan(ctx, currTask);
+    }
+
     return null;
   }
 }

Modified: hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java Thu Apr 16 20:41:08 2009
@@ -29,6 +29,7 @@
 import org.apache.hadoop.hive.ql.exec.Task;
 import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx;
 import org.apache.hadoop.hive.ql.parse.ParseContext;
+import org.apache.hadoop.hive.ql.plan.tableDesc;
 
 /**
  * Processor Context for creating map reduce task. Walk the tree in a DFS manner and process the nodes. Some state is 
@@ -79,8 +80,44 @@
     }
   }
 
+  public static class GenMRUnionCtx {
+    Task<? extends Serializable>         uTask;
+    List<String>                         taskTmpDir;
+    List<tableDesc>                      tt_desc; 
+
+    public GenMRUnionCtx() { 
+      uTask = null;
+      taskTmpDir = new ArrayList<String>();
+      tt_desc = new ArrayList<tableDesc>(); 
+    }
+
+    public Task<? extends Serializable> getUTask() { 
+      return uTask;
+    }
+
+    public void setUTask(Task<? extends Serializable> uTask) { 
+      this.uTask = uTask;
+    }
+    
+    public void addTaskTmpDir(String taskTmpDir) {
+      this.taskTmpDir.add(taskTmpDir);
+    }
+
+    public List<String> getTaskTmpDir() {
+      return taskTmpDir;
+    }
+
+    public void addTTDesc(tableDesc tt_desc) {
+      this.tt_desc.add(tt_desc);
+    }
+
+    public List<tableDesc> getTTDesc() {
+      return tt_desc;
+    }
+  }
+
   private HashMap<Operator<? extends Serializable>, Task<? extends Serializable>> opTaskMap;
-  private HashMap<UnionOperator, Task<? extends Serializable>>   unionTaskMap;
+  private HashMap<UnionOperator, GenMRUnionCtx>  unionTaskMap;
   private List<Operator<? extends Serializable>> seenOps;
 
   private ParseContext                          parseCtx;
@@ -93,6 +130,7 @@
   private Map<Operator<? extends Serializable>, GenMapRedCtx> mapCurrCtx; 
   private Task<? extends Serializable>         currTask;
   private Operator<? extends Serializable>     currTopOp;
+  private UnionOperator                        currUnionOp;
   private String                               currAliasId;
   private List<Operator<? extends Serializable>> rootOps;
 
@@ -126,10 +164,11 @@
     this.mapCurrCtx = mapCurrCtx;
     currTask        = null;
     currTopOp       = null;
+    currUnionOp     = null;
     currAliasId     = null;
     rootOps         = new ArrayList<Operator<? extends Serializable>>();
     rootOps.addAll(parseCtx.getTopOps().values());
-    unionTaskMap = new HashMap<UnionOperator, Task<? extends Serializable>>();
+    unionTaskMap = new HashMap<UnionOperator, GenMRUnionCtx>();
   }
 
   /**
@@ -300,6 +339,17 @@
     this.currTopOp = currTopOp;
   }      
 
+  public UnionOperator getCurrUnionOp() {
+    return currUnionOp;
+  }   
+   
+  /**
+   * @param currUnionOp current union operator
+   */
+  public void setCurrUnionOp(UnionOperator currUnionOp) {
+    this.currUnionOp = currUnionOp;
+  }      
+
   /**
    * @return current top alias
    */
@@ -314,11 +364,11 @@
     this.currAliasId = currAliasId;
   }
 
-  public Task<? extends Serializable> getUnionTask(UnionOperator op) {
+  public GenMRUnionCtx getUnionTask(UnionOperator op) {
     return unionTaskMap.get(op);
   }
 
-  public void setUnionTask(UnionOperator op, Task<? extends Serializable> uTask) {
+  public void setUnionTask(UnionOperator op, GenMRUnionCtx uTask) {
     unionTaskMap.put(op, uTask);
   }
 }

Modified: hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java Thu Apr 16 20:41:08 2009
@@ -70,19 +70,34 @@
     Task<? extends Serializable> currTask    = mapredCtx.getCurrTask();
     mapredWork plan = (mapredWork) currTask.getWork();
     HashMap<Operator<? extends Serializable>, Task<? extends Serializable>> opTaskMap = ctx.getOpTaskMap();
-    
-    opTaskMap.put(reducer, currTask);
-    plan.setReducer(reducer);
-    reduceSinkDesc desc = (reduceSinkDesc)op.getConf();
-    
-    plan.setNumReduceTasks(desc.getNumReducers());
-    
-    if (reducer.getClass() == JoinOperator.class)
-      plan.setNeedsTagging(true);
+    Task<? extends Serializable> opMapTask = opTaskMap.get(reducer);
     
     ctx.setCurrTask(currTask);
-    ctx.setCurrTopOp(null);
-    ctx.setCurrAliasId(null);
+
+    // If the plan for this reducer does not exist, initialize the plan
+    if (opMapTask == null) {
+      // When the reducer is encountered for the first time
+      if (plan.getReducer() == null)
+        GenMapRedUtils.initUnionPlan(op, ctx);
+      // When union is followed by a multi-table insert
+      else
+        GenMapRedUtils.splitPlan(op, ctx);
+    }
+    // The union is already initialized. However, the union is walked from another input
+    // initUnionPlan is idempotent
+    else if (plan.getReducer() == reducer)
+      GenMapRedUtils.initUnionPlan(op, ctx);
+    // There is a join after union. One of the branches of union has already been initialized.
+    // Initialize the current branch, and join with the original plan.
+    else {
+      GenMapRedUtils.initUnionPlan(ctx, currTask);
+      GenMapRedUtils.joinPlan(op, currTask, opMapTask, ctx);
+    }
+
+    mapCurrCtx.put(op, new GenMapRedCtx(ctx.getCurrTask(), ctx.getCurrTopOp(), ctx.getCurrAliasId()));
+    
+    // the union operator has been processed
+    ctx.setCurrUnionOp(null);
     return null;
   }
 }

Modified: hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java Thu Apr 16 20:41:08 2009
@@ -43,6 +43,7 @@
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.ql.exec.OperatorFactory;
 import org.apache.hadoop.hive.ql.optimizer.GenMRProcContext.GenMapRedCtx;
+import org.apache.hadoop.hive.ql.optimizer.GenMRProcContext.GenMRUnionCtx;
 import org.apache.hadoop.hive.ql.optimizer.unionproc.UnionProcFactory;
 import org.apache.hadoop.hive.ql.optimizer.unionproc.UnionProcContext;
 import org.apache.hadoop.hive.ql.optimizer.unionproc.UnionProcContext.UnionParseContext;
@@ -80,6 +81,8 @@
       return null;
     }
 
+    ctx.setCurrUnionOp(union);
+
     UnionParseContext uPrsCtx = uCtx.getUnionParseContext(union);
     assert uPrsCtx != null;
 
@@ -90,21 +93,26 @@
     if (uPrsCtx.getRootTask(pos) && (!ctx.getRootTasks().contains(currTask)))
       ctx.getRootTasks().add(currTask);
     
-    Task<? extends Serializable> uTask = ctx.getUnionTask(union);
+    GenMRUnionCtx uCtxTask = ctx.getUnionTask(union);
+    Task<? extends Serializable> uTask = null;
 
     pos = UnionProcFactory.getPositionParent(union, stack);
     Operator<? extends Serializable> parent = union.getParentOperators().get(pos);   
     mapredWork uPlan = null;
 
     // union is encountered for the first time
-    if (uTask == null) {
+    if (uCtxTask == null) {
+      uCtxTask = new GenMRUnionCtx();
       uPlan = GenMapRedUtils.getMapRedWork();
       uTask = TaskFactory.get(uPlan, parseCtx.getConf());
-      ctx.setUnionTask(union, uTask);
+      uCtxTask.setUTask(uTask);
+      ctx.setUnionTask(union, uCtxTask);
     }
-    else 
+    else {
+      uTask = uCtxTask.getUTask();
       uPlan = (mapredWork)uTask.getWork();
-    
+    }
+
     tableDesc tt_desc = 
       PlanUtils.getBinaryTableDesc(PlanUtils.getFieldSchemasFromRowSchema(parent.getSchema(), "temporarycol")); 
     
@@ -119,12 +127,11 @@
     ctx.setPathId(pathid);
     
     // Add the path to alias mapping
-    assert uPlan.getPathToAliases().get(taskTmpDir) == null;
-    uPlan.getPathToAliases().put(taskTmpDir, new ArrayList<String>());
-    uPlan.getPathToAliases().get(taskTmpDir).add(taskTmpDir);
-    uPlan.getPathToPartitionInfo().put(taskTmpDir, new partitionDesc(tt_desc, null));
-    uPlan.getAliasToWork().put(taskTmpDir, union);
-    GenMapRedUtils.setKeyAndValueDesc(uPlan, union);
+    uCtxTask.addTaskTmpDir(taskTmpDir);
+    uCtxTask.addTTDesc(tt_desc);
+
+    // The union task is empty. The files created for all the inputs are assembled in the
+    // union context and later used to initialize the union plan
     
     // Create a file sink operator for this file name
     Operator<? extends Serializable> fs_op =

Modified: hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java Thu Apr 16 20:41:08 2009
@@ -36,6 +36,7 @@
 import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
 import org.apache.hadoop.hive.ql.exec.TableScanOperator;
 import org.apache.hadoop.hive.ql.exec.JoinOperator;
+import org.apache.hadoop.hive.ql.exec.UnionOperator;
 import org.apache.hadoop.hive.ql.exec.Task;
 import org.apache.hadoop.hive.ql.exec.TaskFactory;
 import org.apache.hadoop.hive.ql.exec.OperatorFactory;
@@ -50,6 +51,7 @@
 import org.apache.hadoop.hive.ql.exec.Utilities;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.ql.optimizer.GenMRProcContext.GenMapRedCtx;
+import org.apache.hadoop.hive.ql.optimizer.GenMRProcContext.GenMRUnionCtx;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -106,6 +108,64 @@
   }
 
   /**
+   * Initialize the current union plan.
+   * 
+   * @param op the reduce sink operator encountered
+   * @param opProcCtx processing context
+   */
+  public static void initUnionPlan(ReduceSinkOperator op, GenMRProcContext opProcCtx) throws SemanticException {
+    Operator<? extends Serializable> reducer = op.getChildOperators().get(0);
+    Map<Operator<? extends Serializable>, GenMapRedCtx> mapCurrCtx = opProcCtx.getMapCurrCtx();
+    GenMapRedCtx mapredCtx = mapCurrCtx.get(op.getParentOperators().get(0));
+    Task<? extends Serializable> currTask    = mapredCtx.getCurrTask();
+    mapredWork plan = (mapredWork) currTask.getWork();
+    HashMap<Operator<? extends Serializable>, Task<? extends Serializable>> opTaskMap = opProcCtx.getOpTaskMap();
+
+    opTaskMap.put(reducer, currTask);
+    plan.setReducer(reducer);
+    reduceSinkDesc desc = (reduceSinkDesc)op.getConf();
+    
+    plan.setNumReduceTasks(desc.getNumReducers());
+
+    List<Task<? extends Serializable>> rootTasks = opProcCtx.getRootTasks();
+
+    //    rootTasks.add(currTask);
+    if (reducer.getClass() == JoinOperator.class)
+      plan.setNeedsTagging(true);
+
+    initUnionPlan(opProcCtx, currTask); 
+  }
+
+  /*
+   * It is a idempotent function to add various intermediate files as the source for the
+   * union. The plan has already been created.
+   */
+  public static void initUnionPlan(GenMRProcContext opProcCtx, Task<? extends Serializable> currTask) {
+    mapredWork plan = (mapredWork) currTask.getWork();
+    UnionOperator currUnionOp = opProcCtx.getCurrUnionOp();
+    assert currUnionOp != null;
+    GenMRUnionCtx uCtx = opProcCtx.getUnionTask(currUnionOp);
+    assert uCtx != null;
+
+    List<String>    taskTmpDirLst = uCtx.getTaskTmpDir();
+    List<tableDesc> tt_descLst    = uCtx.getTTDesc(); 
+    assert !taskTmpDirLst.isEmpty() && !tt_descLst.isEmpty();
+    assert taskTmpDirLst.size() == tt_descLst.size();
+    int size = taskTmpDirLst.size();
+
+    for (int pos = 0; pos < size; pos++) {
+      String taskTmpDir = taskTmpDirLst.get(pos);
+      tableDesc tt_desc = tt_descLst.get(pos); 
+      if (plan.getPathToAliases().get(taskTmpDir) == null) {
+        plan.getPathToAliases().put(taskTmpDir, new ArrayList<String>());
+        plan.getPathToAliases().get(taskTmpDir).add(taskTmpDir);
+        plan.getPathToPartitionInfo().put(taskTmpDir, new partitionDesc(tt_desc, null));
+        plan.getAliasToWork().put(taskTmpDir, currUnionOp);
+      }
+    }
+  }
+
+  /**
    * Merge the current task with the task for the current reducer
    * @param task for the old task for the current reducer
    * @param opProcCtx processing context
@@ -218,7 +278,6 @@
         }
       }
       plan.getAliasToWork().put(alias_id, topOp);
-      setKeyAndValueDesc(plan, topOp);
       LOG.debug("Created Map Work for " + alias_id);
     }
     else {
@@ -261,7 +320,7 @@
     mapredWork work = new mapredWork();
     work.setPathToAliases(new LinkedHashMap<String, ArrayList<String>>());
     work.setPathToPartitionInfo(new LinkedHashMap<String, partitionDesc>());
-    work.setAliasToWork(new HashMap<String, Operator<? extends Serializable>>());
+    work.setAliasToWork(new LinkedHashMap<String, Operator<? extends Serializable>>());
     work.setTagToValueDesc(new ArrayList<tableDesc>());
     work.setReducer(null);
     return work;
@@ -361,7 +420,6 @@
     cplan.getPathToAliases().get(taskTmpDir).add(streamDesc);
     cplan.getPathToPartitionInfo().put(taskTmpDir, new partitionDesc(tt_desc, null));
     cplan.getAliasToWork().put(streamDesc, op);
-    setKeyAndValueDesc(cplan, op);
 
     // TODO: Allocate work to remove the temporary files and make that
     // dependent on the redTask

Modified: hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Thu Apr 16 20:41:08 2009
@@ -63,6 +63,7 @@
 import org.apache.hadoop.hive.ql.optimizer.GenMRFileSink1;
 import org.apache.hadoop.hive.ql.optimizer.GenMRRedSink1;
 import org.apache.hadoop.hive.ql.optimizer.GenMRRedSink2;
+import org.apache.hadoop.hive.ql.optimizer.GenMapRedUtils;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.mapred.InputFormat;
 import org.apache.hadoop.mapred.OutputFormat;
@@ -3372,6 +3373,10 @@
     // For each task, go over all operators recursively
     for(Task<? extends Serializable> rootTask: rootTasks)
       breakTaskTree(rootTask);
+
+    // For each task, set the key descriptor for the reducer
+    for(Task<? extends Serializable> rootTask: rootTasks)
+      setKeyDescTaskTree(rootTask);
   }
 
   // loop over all the tasks recursviely
@@ -3403,6 +3408,23 @@
       breakOperatorTree(op);
   }
 
+  // loop over all the tasks recursviely
+  private void setKeyDescTaskTree(Task<? extends Serializable> task) { 
+    
+    if ((task instanceof MapRedTask) || (task instanceof ExecDriver)) {
+      mapredWork work = (mapredWork)task.getWork();
+      HashMap<String, Operator<? extends Serializable>> opMap = work.getAliasToWork();
+      if (!opMap.isEmpty())
+        for (Operator<? extends Serializable> op: opMap.values())
+          GenMapRedUtils.setKeyAndValueDesc(work, op);
+    }
+
+    if (task.getChildTasks() == null)
+      return;
+    
+    for (Task<? extends Serializable> childTask :  task.getChildTasks())
+      setKeyDescTaskTree(childTask);
+  }
 
   @SuppressWarnings("nls")
   public Phase1Ctx initPhase1Ctx() {

Modified: hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java Thu Apr 16 20:41:08 2009
@@ -49,7 +49,7 @@
     return new mapredWork("", 
                           new LinkedHashMap<String, ArrayList<String>> (),
                           new LinkedHashMap<String, partitionDesc> (),
-                          new HashMap<String, Operator<? extends Serializable>> (),
+                          new LinkedHashMap<String, Operator<? extends Serializable>> (),
                           new tableDesc(),
                           new ArrayList<tableDesc> (),
                           null,
@@ -251,4 +251,4 @@
   
   
 }
-  
\ No newline at end of file
+  

Modified: hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/mapredWork.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/mapredWork.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/mapredWork.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/java/org/apache/hadoop/hive/ql/plan/mapredWork.java Thu Apr 16 20:41:08 2009
@@ -35,7 +35,7 @@
   
   private LinkedHashMap<String,partitionDesc> pathToPartitionInfo;
   
-  private HashMap<String,Operator<? extends Serializable>> aliasToWork;
+  private LinkedHashMap<String,Operator<? extends Serializable>> aliasToWork;
 
   // map<->reduce interface
   // schema of the map-reduce 'key' object - this is homogeneous
@@ -55,7 +55,7 @@
     final String command,
     final LinkedHashMap<String,ArrayList<String>> pathToAliases,
     final LinkedHashMap<String,partitionDesc> pathToPartitionInfo,
-    final HashMap<String,Operator<? extends Serializable>> aliasToWork,
+    final LinkedHashMap<String,Operator<? extends Serializable>> aliasToWork,
     final tableDesc keyDesc,
     List<tableDesc> tagToValueDesc,
     final Operator<?> reducer,
@@ -93,10 +93,10 @@
   }
   
   @explain(displayName="Alias -> Map Operator Tree")
-  public HashMap<String, Operator<? extends Serializable>> getAliasToWork() {
+  public LinkedHashMap<String, Operator<? extends Serializable>> getAliasToWork() {
     return this.aliasToWork;
   }
-  public void setAliasToWork(final HashMap<String,Operator<? extends Serializable>> aliasToWork) {
+  public void setAliasToWork(final LinkedHashMap<String,Operator<? extends Serializable>> aliasToWork) {
     this.aliasToWork=aliasToWork;
   }
   public tableDesc getKeyDesc() {

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestOperators.java Thu Apr 16 20:41:08 2009
@@ -259,7 +259,7 @@
       cdop1.setConf(cd);
       CollectOperator cdop2 = (CollectOperator) OperatorFactory.get(collectDesc.class);
       cdop2.setConf(cd);
-      HashMap<String,Operator<? extends Serializable>> aliasToWork = new HashMap<String,Operator<? extends Serializable>> ();
+      LinkedHashMap<String,Operator<? extends Serializable>> aliasToWork = new LinkedHashMap<String,Operator<? extends Serializable>> ();
       aliasToWork.put("a", cdop1);
       aliasToWork.put("b", cdop2);
 

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestPlan.java
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestPlan.java?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestPlan.java (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/org/apache/hadoop/hive/ql/exec/TestPlan.java Thu Apr 16 20:41:08 2009
@@ -61,7 +61,7 @@
       LinkedHashMap<String, partitionDesc> pt = new LinkedHashMap<String, partitionDesc> ();
       pt.put("/tmp/testfolder", partDesc);
 
-      HashMap<String, Operator<? extends Serializable>> ao = new HashMap<String, Operator<? extends Serializable>> ();
+      LinkedHashMap<String, Operator<? extends Serializable>> ao = new LinkedHashMap<String, Operator<? extends Serializable>> ();
       ao.put("a", op);
 
       mapredWork mrwork = new mapredWork();

Added: hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/groupby9.q
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/groupby9.q?rev=765753&view=auto
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/groupby9.q (added)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/groupby9.q Thu Apr 16 20:41:08 2009
@@ -0,0 +1,20 @@
+drop table DEST1;
+drop table DEST2;
+
+CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE;
+CREATE TABLE DEST2(key INT, val1 STRING, val2 STRING) STORED AS TEXTFILE;
+
+EXPLAIN
+FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key
+INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key, SRC.value;
+
+FROM SRC
+INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key
+INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, SRC.value, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key, SRC.value;
+
+SELECT DEST1.* FROM DEST1;
+SELECT DEST2.* FROM DEST2;
+
+drop table DEST1;
+drop table DEST2;

Added: hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union17.q
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union17.q?rev=765753&view=auto
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union17.q (added)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union17.q Thu Apr 16 20:41:08 2009
@@ -0,0 +1,26 @@
+drop table DEST1;
+drop table DEST2;
+
+CREATE TABLE DEST1(key STRING, value STRING) STORED AS TEXTFILE;
+CREATE TABLE DEST2(key STRING, val1 STRING, val2 STRING) STORED AS TEXTFILE;
+
+-- union case:map-reduce sub-queries followed by multi-table insert
+
+explain 
+FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1
+                         UNION  ALL  
+      select s2.key as key, s2.value as value from src s2) unionsrc
+INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, COUNT(DISTINCT SUBSTR(unionsrc.value,5)) GROUP BY unionsrc.key
+INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, COUNT(DISTINCT SUBSTR(unionsrc.value,5)) GROUP BY unionsrc.key, unionsrc.value;
+
+FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1
+                         UNION  ALL  
+      select s2.key as key, s2.value as value from src s2) unionsrc
+INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, COUNT(DISTINCT SUBSTR(unionsrc.value,5)) GROUP BY unionsrc.key
+INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, COUNT(DISTINCT SUBSTR(unionsrc.value,5)) GROUP BY unionsrc.key, unionsrc.value;
+
+SELECT DEST1.* FROM DEST1;
+SELECT DEST2.* FROM DEST2;
+
+drop table DEST1;
+drop table DEST2;

Added: hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union18.q
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union18.q?rev=765753&view=auto
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union18.q (added)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union18.q Thu Apr 16 20:41:08 2009
@@ -0,0 +1,26 @@
+drop table DEST1;
+drop table DEST2;
+
+CREATE TABLE DEST1(key STRING, value STRING) STORED AS TEXTFILE;
+CREATE TABLE DEST2(key STRING, val1 STRING, val2 STRING) STORED AS TEXTFILE;
+
+-- union case:map-reduce sub-queries followed by multi-table insert 
+
+explain 
+FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1
+                         UNION  ALL  
+      select s2.key as key, s2.value as value from src s2) unionsrc
+INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, unionsrc.value
+INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, unionsrc.value;
+
+FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1
+                         UNION  ALL  
+      select s2.key as key, s2.value as value from src s2) unionsrc
+INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, unionsrc.value
+INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, unionsrc.value;
+
+SELECT DEST1.* FROM DEST1;
+SELECT DEST2.* FROM DEST2;
+
+drop table DEST1;
+drop table DEST2;

Added: hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union19.q
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union19.q?rev=765753&view=auto
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union19.q (added)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union19.q Thu Apr 16 20:41:08 2009
@@ -0,0 +1,26 @@
+drop table DEST1;
+drop table DEST2;
+
+CREATE TABLE DEST1(key STRING, value STRING) STORED AS TEXTFILE;
+CREATE TABLE DEST2(key STRING, val1 STRING, val2 STRING) STORED AS TEXTFILE;
+
+-- union case:map-reduce sub-queries followed by multi-table insert
+
+explain 
+FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1
+                         UNION  ALL  
+      select s2.key as key, s2.value as value from src s2) unionsrc
+INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, count(unionsrc.value) group by unionsrc.key
+INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, unionsrc.value;
+
+FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1
+                         UNION  ALL  
+      select s2.key as key, s2.value as value from src s2) unionsrc
+INSERT OVERWRITE TABLE DEST1 SELECT unionsrc.key, count(unionsrc.value) group by unionsrc.key
+INSERT OVERWRITE TABLE DEST2 SELECT unionsrc.key, unionsrc.value, unionsrc.value;
+
+SELECT DEST1.* FROM DEST1;
+SELECT DEST2.* FROM DEST2;
+
+drop table DEST1;
+drop table DEST2;

Added: hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union20.q
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union20.q?rev=765753&view=auto
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union20.q (added)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/queries/clientpositive/union20.q Thu Apr 16 20:41:08 2009
@@ -0,0 +1,22 @@
+-- union :map-reduce sub-queries followed by join
+
+explain 
+SELECT unionsrc1.key, unionsrc1.value, unionsrc2.key, unionsrc2.value
+FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1
+                         UNION  ALL  
+      select s2.key as key, s2.value as value from src s2 where s2.key < 10) unionsrc1 
+JOIN 
+     (select 'tst1' as key, cast(count(1) as string) as value from src s3
+                         UNION  ALL  
+      select s4.key as key, s4.value as value from src s4 where s4.key < 10) unionsrc2
+ON (unionsrc1.key = unionsrc2.key);
+
+SELECT unionsrc1.key, unionsrc1.value, unionsrc2.key, unionsrc2.value
+FROM (select 'tst1' as key, cast(count(1) as string) as value from src s1
+                         UNION  ALL  
+      select s2.key as key, s2.value as value from src s2 where s2.key < 10) unionsrc1 
+JOIN 
+     (select 'tst1' as key, cast(count(1) as string) as value from src s3
+                         UNION  ALL  
+      select s4.key as key, s4.value as value from src s4 where s4.key < 10) unionsrc2
+ON (unionsrc1.key = unionsrc2.key);

Added: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/groupby9.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/groupby9.q.out?rev=765753&view=auto
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/groupby9.q.out (added)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/groupby9.q.out Thu Apr 16 20:41:08 2009
@@ -0,0 +1,776 @@
+ABSTRACT SYNTAX TREE:
+  (TOK_QUERY (TOK_FROM (TOK_TABREF SRC)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB DEST1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF SRC key)) (TOK_SELEXPR (TOK_FUNCTIONDI COUNT (TOK_FUNCTION SUBSTR (TOK_COLREF SRC value) 5)))) (TOK_GROUPBY (TOK_COLREF SRC key))) (TOK_INSERT (TOK_DESTINATION (TOK_TAB DEST2)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF SRC key)) (TOK_SELEXPR (TOK_COLREF SRC value)) (TOK_SELEXPR (TOK_FUNCTIONDI COUNT (TOK_FUNCTION SUBSTR (TOK_COLREF SRC value) 5)))) (TOK_GROUPBY (TOK_COLREF SRC key) (TOK_COLREF SRC value))))
+
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1, Stage-2
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-1, Stage-2
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Alias -> Map Operator Tree:
+        src 
+            Group By Operator
+              aggregations:
+                    expr: count(DISTINCT substr(value, 5))
+              keys:
+                    expr: key
+                    type: string
+                    expr: substr(value, 5)
+                    type: string
+              mode: hash
+              Reduce Output Operator
+                key expressions:
+                      expr: 0
+                      type: string
+                      expr: 1
+                      type: string
+                sort order: ++
+                Map-reduce partition columns:
+                      expr: 0
+                      type: string
+                tag: -1
+                value expressions:
+                      expr: 2
+                      type: bigint
+            Group By Operator
+              aggregations:
+                    expr: count(DISTINCT substr(value, 5))
+              keys:
+                    expr: key
+                    type: string
+                    expr: value
+                    type: string
+                    expr: substr(value, 5)
+                    type: string
+              mode: hash
+              File Output Operator
+                compressed: false
+                GlobalTableId: 0
+                table:
+                    input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                    output format: org.apache.hadoop.mapred.SequenceFileOutputFormat
+                    name: binary_table
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations:
+                expr: count(DISTINCT KEY.1)
+          keys:
+                expr: KEY.0
+                type: string
+          mode: mergepartial
+          Select Operator
+            expressions:
+                  expr: 0
+                  type: string
+                  expr: 1
+                  type: bigint
+            Select Operator
+              expressions:
+                    expr: UDFToInteger(0)
+                    type: int
+                    expr: 1
+                    type: bigint
+              File Output Operator
+                compressed: false
+                GlobalTableId: 1
+                table:
+                    input format: org.apache.hadoop.mapred.TextInputFormat
+                    output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+                    serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                    name: dest1
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+            replace: true
+            table:
+                input format: org.apache.hadoop.mapred.TextInputFormat
+                output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                name: dest1
+            replace: true
+            table:
+                input format: org.apache.hadoop.mapred.TextInputFormat
+                output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                name: dest2
+
+  Stage: Stage-2
+    Map Reduce
+      Alias -> Map Operator Tree:
+        /data/users/njain/hive_branch3/hive_br3/build/ql/tmp/1160382829/665142083.10004 
+          Reduce Output Operator
+            key expressions:
+                  expr: 0
+                  type: string
+                  expr: 1
+                  type: string
+                  expr: 2
+                  type: string
+            sort order: +++
+            Map-reduce partition columns:
+                  expr: 0
+                  type: string
+                  expr: 1
+                  type: string
+            tag: -1
+            value expressions:
+                  expr: 3
+                  type: bigint
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations:
+                expr: count(DISTINCT KEY.2)
+          keys:
+                expr: KEY.0
+                type: string
+                expr: KEY.1
+                type: string
+          mode: mergepartial
+          Select Operator
+            expressions:
+                  expr: 0
+                  type: string
+                  expr: 1
+                  type: string
+                  expr: 2
+                  type: bigint
+            Select Operator
+              expressions:
+                    expr: UDFToInteger(0)
+                    type: int
+                    expr: 1
+                    type: string
+                    expr: 2
+                    type: bigint
+              File Output Operator
+                compressed: false
+                GlobalTableId: 2
+                table:
+                    input format: org.apache.hadoop.mapred.TextInputFormat
+                    output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+                    serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                    name: dest2
+
+
+0	1
+10	1
+100	1
+103	1
+104	1
+105	1
+11	1
+111	1
+113	1
+114	1
+116	1
+118	1
+119	1
+12	1
+120	1
+125	1
+126	1
+128	1
+129	1
+131	1
+133	1
+134	1
+136	1
+137	1
+138	1
+143	1
+145	1
+146	1
+149	1
+15	1
+150	1
+152	1
+153	1
+155	1
+156	1
+157	1
+158	1
+160	1
+162	1
+163	1
+164	1
+165	1
+166	1
+167	1
+168	1
+169	1
+17	1
+170	1
+172	1
+174	1
+175	1
+176	1
+177	1
+178	1
+179	1
+18	1
+180	1
+181	1
+183	1
+186	1
+187	1
+189	1
+19	1
+190	1
+191	1
+192	1
+193	1
+194	1
+195	1
+196	1
+197	1
+199	1
+2	1
+20	1
+200	1
+201	1
+202	1
+203	1
+205	1
+207	1
+208	1
+209	1
+213	1
+214	1
+216	1
+217	1
+218	1
+219	1
+221	1
+222	1
+223	1
+224	1
+226	1
+228	1
+229	1
+230	1
+233	1
+235	1
+237	1
+238	1
+239	1
+24	1
+241	1
+242	1
+244	1
+247	1
+248	1
+249	1
+252	1
+255	1
+256	1
+257	1
+258	1
+26	1
+260	1
+262	1
+263	1
+265	1
+266	1
+27	1
+272	1
+273	1
+274	1
+275	1
+277	1
+278	1
+28	1
+280	1
+281	1
+282	1
+283	1
+284	1
+285	1
+286	1
+287	1
+288	1
+289	1
+291	1
+292	1
+296	1
+298	1
+30	1
+302	1
+305	1
+306	1
+307	1
+308	1
+309	1
+310	1
+311	1
+315	1
+316	1
+317	1
+318	1
+321	1
+322	1
+323	1
+325	1
+327	1
+33	1
+331	1
+332	1
+333	1
+335	1
+336	1
+338	1
+339	1
+34	1
+341	1
+342	1
+344	1
+345	1
+348	1
+35	1
+351	1
+353	1
+356	1
+360	1
+362	1
+364	1
+365	1
+366	1
+367	1
+368	1
+369	1
+37	1
+373	1
+374	1
+375	1
+377	1
+378	1
+379	1
+382	1
+384	1
+386	1
+389	1
+392	1
+393	1
+394	1
+395	1
+396	1
+397	1
+399	1
+4	1
+400	1
+401	1
+402	1
+403	1
+404	1
+406	1
+407	1
+409	1
+41	1
+411	1
+413	1
+414	1
+417	1
+418	1
+419	1
+42	1
+421	1
+424	1
+427	1
+429	1
+43	1
+430	1
+431	1
+432	1
+435	1
+436	1
+437	1
+438	1
+439	1
+44	1
+443	1
+444	1
+446	1
+448	1
+449	1
+452	1
+453	1
+454	1
+455	1
+457	1
+458	1
+459	1
+460	1
+462	1
+463	1
+466	1
+467	1
+468	1
+469	1
+47	1
+470	1
+472	1
+475	1
+477	1
+478	1
+479	1
+480	1
+481	1
+482	1
+483	1
+484	1
+485	1
+487	1
+489	1
+490	1
+491	1
+492	1
+493	1
+494	1
+495	1
+496	1
+497	1
+498	1
+5	1
+51	1
+53	1
+54	1
+57	1
+58	1
+64	1
+65	1
+66	1
+67	1
+69	1
+70	1
+72	1
+74	1
+76	1
+77	1
+78	1
+8	1
+80	1
+82	1
+83	1
+84	1
+85	1
+86	1
+87	1
+9	1
+90	1
+92	1
+95	1
+96	1
+97	1
+98	1
+0	val_0	1
+10	val_10	1
+100	val_100	1
+103	val_103	1
+104	val_104	1
+105	val_105	1
+11	val_11	1
+111	val_111	1
+113	val_113	1
+114	val_114	1
+116	val_116	1
+118	val_118	1
+119	val_119	1
+12	val_12	1
+120	val_120	1
+125	val_125	1
+126	val_126	1
+128	val_128	1
+129	val_129	1
+131	val_131	1
+133	val_133	1
+134	val_134	1
+136	val_136	1
+137	val_137	1
+138	val_138	1
+143	val_143	1
+145	val_145	1
+146	val_146	1
+149	val_149	1
+15	val_15	1
+150	val_150	1
+152	val_152	1
+153	val_153	1
+155	val_155	1
+156	val_156	1
+157	val_157	1
+158	val_158	1
+160	val_160	1
+162	val_162	1
+163	val_163	1
+164	val_164	1
+165	val_165	1
+166	val_166	1
+167	val_167	1
+168	val_168	1
+169	val_169	1
+17	val_17	1
+170	val_170	1
+172	val_172	1
+174	val_174	1
+175	val_175	1
+176	val_176	1
+177	val_177	1
+178	val_178	1
+179	val_179	1
+18	val_18	1
+180	val_180	1
+181	val_181	1
+183	val_183	1
+186	val_186	1
+187	val_187	1
+189	val_189	1
+19	val_19	1
+190	val_190	1
+191	val_191	1
+192	val_192	1
+193	val_193	1
+194	val_194	1
+195	val_195	1
+196	val_196	1
+197	val_197	1
+199	val_199	1
+2	val_2	1
+20	val_20	1
+200	val_200	1
+201	val_201	1
+202	val_202	1
+203	val_203	1
+205	val_205	1
+207	val_207	1
+208	val_208	1
+209	val_209	1
+213	val_213	1
+214	val_214	1
+216	val_216	1
+217	val_217	1
+218	val_218	1
+219	val_219	1
+221	val_221	1
+222	val_222	1
+223	val_223	1
+224	val_224	1
+226	val_226	1
+228	val_228	1
+229	val_229	1
+230	val_230	1
+233	val_233	1
+235	val_235	1
+237	val_237	1
+238	val_238	1
+239	val_239	1
+24	val_24	1
+241	val_241	1
+242	val_242	1
+244	val_244	1
+247	val_247	1
+248	val_248	1
+249	val_249	1
+252	val_252	1
+255	val_255	1
+256	val_256	1
+257	val_257	1
+258	val_258	1
+26	val_26	1
+260	val_260	1
+262	val_262	1
+263	val_263	1
+265	val_265	1
+266	val_266	1
+27	val_27	1
+272	val_272	1
+273	val_273	1
+274	val_274	1
+275	val_275	1
+277	val_277	1
+278	val_278	1
+28	val_28	1
+280	val_280	1
+281	val_281	1
+282	val_282	1
+283	val_283	1
+284	val_284	1
+285	val_285	1
+286	val_286	1
+287	val_287	1
+288	val_288	1
+289	val_289	1
+291	val_291	1
+292	val_292	1
+296	val_296	1
+298	val_298	1
+30	val_30	1
+302	val_302	1
+305	val_305	1
+306	val_306	1
+307	val_307	1
+308	val_308	1
+309	val_309	1
+310	val_310	1
+311	val_311	1
+315	val_315	1
+316	val_316	1
+317	val_317	1
+318	val_318	1
+321	val_321	1
+322	val_322	1
+323	val_323	1
+325	val_325	1
+327	val_327	1
+33	val_33	1
+331	val_331	1
+332	val_332	1
+333	val_333	1
+335	val_335	1
+336	val_336	1
+338	val_338	1
+339	val_339	1
+34	val_34	1
+341	val_341	1
+342	val_342	1
+344	val_344	1
+345	val_345	1
+348	val_348	1
+35	val_35	1
+351	val_351	1
+353	val_353	1
+356	val_356	1
+360	val_360	1
+362	val_362	1
+364	val_364	1
+365	val_365	1
+366	val_366	1
+367	val_367	1
+368	val_368	1
+369	val_369	1
+37	val_37	1
+373	val_373	1
+374	val_374	1
+375	val_375	1
+377	val_377	1
+378	val_378	1
+379	val_379	1
+382	val_382	1
+384	val_384	1
+386	val_386	1
+389	val_389	1
+392	val_392	1
+393	val_393	1
+394	val_394	1
+395	val_395	1
+396	val_396	1
+397	val_397	1
+399	val_399	1
+4	val_4	1
+400	val_400	1
+401	val_401	1
+402	val_402	1
+403	val_403	1
+404	val_404	1
+406	val_406	1
+407	val_407	1
+409	val_409	1
+41	val_41	1
+411	val_411	1
+413	val_413	1
+414	val_414	1
+417	val_417	1
+418	val_418	1
+419	val_419	1
+42	val_42	1
+421	val_421	1
+424	val_424	1
+427	val_427	1
+429	val_429	1
+43	val_43	1
+430	val_430	1
+431	val_431	1
+432	val_432	1
+435	val_435	1
+436	val_436	1
+437	val_437	1
+438	val_438	1
+439	val_439	1
+44	val_44	1
+443	val_443	1
+444	val_444	1
+446	val_446	1
+448	val_448	1
+449	val_449	1
+452	val_452	1
+453	val_453	1
+454	val_454	1
+455	val_455	1
+457	val_457	1
+458	val_458	1
+459	val_459	1
+460	val_460	1
+462	val_462	1
+463	val_463	1
+466	val_466	1
+467	val_467	1
+468	val_468	1
+469	val_469	1
+47	val_47	1
+470	val_470	1
+472	val_472	1
+475	val_475	1
+477	val_477	1
+478	val_478	1
+479	val_479	1
+480	val_480	1
+481	val_481	1
+482	val_482	1
+483	val_483	1
+484	val_484	1
+485	val_485	1
+487	val_487	1
+489	val_489	1
+490	val_490	1
+491	val_491	1
+492	val_492	1
+493	val_493	1
+494	val_494	1
+495	val_495	1
+496	val_496	1
+497	val_497	1
+498	val_498	1
+5	val_5	1
+51	val_51	1
+53	val_53	1
+54	val_54	1
+57	val_57	1
+58	val_58	1
+64	val_64	1
+65	val_65	1
+66	val_66	1
+67	val_67	1
+69	val_69	1
+70	val_70	1
+72	val_72	1
+74	val_74	1
+76	val_76	1
+77	val_77	1
+78	val_78	1
+8	val_8	1
+80	val_80	1
+82	val_82	1
+83	val_83	1
+84	val_84	1
+85	val_85	1
+86	val_86	1
+87	val_87	1
+9	val_9	1
+90	val_90	1
+92	val_92	1
+95	val_95	1
+96	val_96	1
+97	val_97	1
+98	val_98	1

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join18.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join18.q.out?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join18.q.out (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join18.q.out Thu Apr 16 20:41:08 2009
@@ -61,7 +61,7 @@
   Stage: Stage-2
     Map Reduce
       Alias -> Map Operator Tree:
-        $INTNAME1 
+        $INTNAME 
           Reduce Output Operator
             key expressions:
                   expr: 0
@@ -70,13 +70,13 @@
             Map-reduce partition columns:
                   expr: 0
                   type: string
-            tag: 0
+            tag: 1
             value expressions:
                   expr: 0
                   type: string
                   expr: 1
                   type: bigint
-        $INTNAME 
+        $INTNAME1 
           Reduce Output Operator
             key expressions:
                   expr: 0
@@ -85,7 +85,7 @@
             Map-reduce partition columns:
                   expr: 0
                   type: string
-            tag: 1
+            tag: 0
             value expressions:
                   expr: 0
                   type: string

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join2.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join2.q.out?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join2.q.out (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join2.q.out Thu Apr 16 20:41:08 2009
@@ -62,21 +62,6 @@
   Stage: Stage-2
     Map Reduce
       Alias -> Map Operator Tree:
-        src3 
-            Reduce Output Operator
-              key expressions:
-                    expr: UDFToDouble(key)
-                    type: double
-              sort order: +
-              Map-reduce partition columns:
-                    expr: UDFToDouble(key)
-                    type: double
-              tag: 1
-              value expressions:
-                    expr: key
-                    type: string
-                    expr: value
-                    type: string
         $INTNAME 
           Reduce Output Operator
             key expressions:
@@ -92,6 +77,21 @@
                   type: string
                   expr: 0
                   type: string
+        src3 
+            Reduce Output Operator
+              key expressions:
+                    expr: UDFToDouble(key)
+                    type: double
+              sort order: +
+              Map-reduce partition columns:
+                    expr: UDFToDouble(key)
+                    type: double
+              tag: 1
+              value expressions:
+                    expr: key
+                    type: string
+                    expr: value
+                    type: string
       Reduce Operator Tree:
         Join Operator
           condition map:

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join4.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join4.q.out?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join4.q.out (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join4.q.out Thu Apr 16 20:41:08 2009
@@ -9,10 +9,10 @@
   Stage: Stage-1
     Map Reduce
       Alias -> Map Operator Tree:
-        c:b:src2 
+        c:a:src1 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
                   type: boolean
               Select Operator
                 expressions:
@@ -28,16 +28,16 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 1
+                  tag: 0
                   value expressions:
                         expr: 0
                         type: string
                         expr: 1
                         type: string
-        c:a:src1 
+        c:b:src2 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
                   type: boolean
               Select Operator
                 expressions:
@@ -53,7 +53,7 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 0
+                  tag: 1
                   value expressions:
                         expr: 0
                         type: string

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join5.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join5.q.out?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join5.q.out (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join5.q.out Thu Apr 16 20:41:08 2009
@@ -9,10 +9,10 @@
   Stage: Stage-1
     Map Reduce
       Alias -> Map Operator Tree:
-        c:b:src2 
+        c:a:src1 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
                   type: boolean
               Select Operator
                 expressions:
@@ -28,16 +28,16 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 1
+                  tag: 0
                   value expressions:
                         expr: 0
                         type: string
                         expr: 1
                         type: string
-        c:a:src1 
+        c:b:src2 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
                   type: boolean
               Select Operator
                 expressions:
@@ -53,7 +53,7 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 0
+                  tag: 1
                   value expressions:
                         expr: 0
                         type: string

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join6.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join6.q.out?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join6.q.out (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join6.q.out Thu Apr 16 20:41:08 2009
@@ -9,10 +9,10 @@
   Stage: Stage-1
     Map Reduce
       Alias -> Map Operator Tree:
-        c:b:src2 
+        c:a:src1 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
                   type: boolean
               Select Operator
                 expressions:
@@ -28,16 +28,16 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 1
+                  tag: 0
                   value expressions:
                         expr: 0
                         type: string
                         expr: 1
                         type: string
-        c:a:src1 
+        c:b:src2 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
                   type: boolean
               Select Operator
                 expressions:
@@ -53,7 +53,7 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 0
+                  tag: 1
                   value expressions:
                         expr: 0
                         type: string

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join7.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join7.q.out?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join7.q.out (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join7.q.out Thu Apr 16 20:41:08 2009
@@ -9,10 +9,10 @@
   Stage: Stage-1
     Map Reduce
       Alias -> Map Operator Tree:
-        c:b:src2 
+        c:a:src1 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
                   type: boolean
               Select Operator
                 expressions:
@@ -28,16 +28,16 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 1
+                  tag: 0
                   value expressions:
                         expr: 0
                         type: string
                         expr: 1
                         type: string
-        c:a:src1 
+        c:b:src2 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
                   type: boolean
               Select Operator
                 expressions:
@@ -53,7 +53,7 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 0
+                  tag: 1
                   value expressions:
                         expr: 0
                         type: string

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join8.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join8.q.out?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join8.q.out (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/join8.q.out Thu Apr 16 20:41:08 2009
@@ -9,10 +9,10 @@
   Stage: Stage-1
     Map Reduce
       Alias -> Map Operator Tree:
-        c:b:src2 
+        c:a:src1 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
                   type: boolean
               Select Operator
                 expressions:
@@ -28,16 +28,16 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 1
+                  tag: 0
                   value expressions:
                         expr: 0
                         type: string
                         expr: 1
                         type: string
-        c:a:src1 
+        c:b:src2 
             Filter Operator
               predicate:
-                  expr: ((UDFToDouble(key) > UDFToDouble(10)) and (UDFToDouble(key) < UDFToDouble(20)))
+                  expr: ((UDFToDouble(key) > UDFToDouble(15)) and (UDFToDouble(key) < UDFToDouble(25)))
                   type: boolean
               Select Operator
                 expressions:
@@ -53,7 +53,7 @@
                   Map-reduce partition columns:
                         expr: 0
                         type: string
-                  tag: 0
+                  tag: 1
                   value expressions:
                         expr: 0
                         type: string

Modified: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union16.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union16.q.out?rev=765753&r1=765752&r2=765753&view=diff
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union16.q.out (original)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union16.q.out Thu Apr 16 20:41:08 2009
@@ -27,7 +27,7 @@
                     value expressions:
                           expr: 0
                           type: bigint
-        null-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery2:src 
+        null-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src 
             Select Operator
               expressions:
                     expr: key
@@ -45,7 +45,7 @@
                     value expressions:
                           expr: 0
                           type: bigint
-        null-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src 
+        null-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery2:src 
             Select Operator
               expressions:
                     expr: key
@@ -81,7 +81,7 @@
                     value expressions:
                           expr: 0
                           type: bigint
-        null-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src 
+        null-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src 
             Select Operator
               expressions:
                     expr: key
@@ -99,7 +99,7 @@
                     value expressions:
                           expr: 0
                           type: bigint
-        null-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src 
+        null-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src 
             Select Operator
               expressions:
                     expr: key
@@ -207,7 +207,7 @@
                     value expressions:
                           expr: 0
                           type: bigint
-        null-subquery1-subquery2:src-subquery1-subquery2:src 
+        null-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src 
             Select Operator
               expressions:
                     expr: key
@@ -225,7 +225,7 @@
                     value expressions:
                           expr: 0
                           type: bigint
-        null-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery1-subquery2:src 
+        null-subquery1-subquery2:src-subquery1-subquery2:src 
             Select Operator
               expressions:
                     expr: key

Added: hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union17.q.out
URL: http://svn.apache.org/viewvc/hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union17.q.out?rev=765753&view=auto
==============================================================================
--- hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union17.q.out (added)
+++ hadoop/hive/branches/branch-0.3/ql/src/test/results/clientpositive/union17.q.out Thu Apr 16 20:41:08 2009
@@ -0,0 +1,866 @@
+ABSTRACT SYNTAX TREE:
+  (TOK_QUERY (TOK_FROM (TOK_SUBQUERY (TOK_UNION (TOK_QUERY (TOK_FROM (TOK_TABREF src s1)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR 'tst1' key) (TOK_SELEXPR (TOK_FUNCTION TOK_STRING (TOK_FUNCTION count 1)) value)))) (TOK_QUERY (TOK_FROM (TOK_TABREF src s2)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF s2 key) key) (TOK_SELEXPR (TOK_COLREF s2 value) value))))) unionsrc)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB DEST1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF unionsrc key)) (TOK_SELEXPR (TOK_FUNCTIONDI COUNT (TOK_FUNCTION SUBSTR (TOK_COLREF unionsrc value) 5)))) (TOK_GROUPBY (TOK_COLREF unionsrc key))) (TOK_INSERT (TOK_DESTINATION (TOK_TAB DEST2)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF unionsrc key)) (TOK_SELEXPR (TOK_COLREF unionsrc value)) (TOK_SELEXPR (TOK_FUNCTIONDI COUNT (TOK_FUNCTION SUBSTR (TOK_COLREF unionsrc value) 5)))) (TOK_GROUPBY (TOK_COLREF unionsrc key) (TOK_COLREF unionsrc value))))
+
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-2 depends on stages: Stage-1, Stage-4
+  Stage-0 depends on stages: Stage-2, Stage-3
+  Stage-3 depends on stages: Stage-2
+  Stage-0 depends on stages: Stage-2, Stage-3
+  Stage-4 is a root stage
+  Stage-2 depends on stages: Stage-1, Stage-4
+  Stage-0 depends on stages: Stage-2, Stage-3
+  Stage-3 depends on stages: Stage-2
+  Stage-0 depends on stages: Stage-2, Stage-3
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Alias -> Map Operator Tree:
+        null-subquery1:unionsrc-subquery1:s1 
+            Select Operator
+              Group By Operator
+                aggregations:
+                      expr: count(1)
+                mode: hash
+                Reduce Output Operator
+                  sort order: 
+                  tag: -1
+                  value expressions:
+                        expr: 0
+                        type: bigint
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations:
+                expr: count(VALUE.0)
+          mode: mergepartial
+          Select Operator
+            expressions:
+                  expr: 'tst1'
+                  type: string
+                  expr: UDFToString(0)
+                  type: string
+            File Output Operator
+              compressed: false
+              GlobalTableId: 0
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.mapred.SequenceFileOutputFormat
+                  name: binary_table
+
+  Stage: Stage-2
+    Map Reduce
+      Alias -> Map Operator Tree:
+        /data/users/njain/hive_branch3/hive_br3/build/ql/tmp/2066774395/703604338.10006 
+          Union
+            Group By Operator
+              aggregations:
+                    expr: count(DISTINCT substr(1, 5))
+              keys:
+                    expr: 0
+                    type: string
+                    expr: substr(1, 5)
+                    type: string
+              mode: hash
+              Reduce Output Operator
+                key expressions:
+                      expr: 0
+                      type: string
+                      expr: 1
+                      type: string
+                sort order: ++
+                Map-reduce partition columns:
+                      expr: 0
+                      type: string
+                tag: -1
+                value expressions:
+                      expr: 2
+                      type: bigint
+            Group By Operator
+              aggregations:
+                    expr: count(DISTINCT substr(1, 5))
+              keys:
+                    expr: 0
+                    type: string
+                    expr: 1
+                    type: string
+                    expr: substr(1, 5)
+                    type: string
+              mode: hash
+              File Output Operator
+                compressed: false
+                GlobalTableId: 0
+                table:
+                    input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                    output format: org.apache.hadoop.mapred.SequenceFileOutputFormat
+                    name: binary_table
+        /data/users/njain/hive_branch3/hive_br3/build/ql/tmp/2066774395/703604338.10004 
+          Union
+            Group By Operator
+              aggregations:
+                    expr: count(DISTINCT substr(1, 5))
+              keys:
+                    expr: 0
+                    type: string
+                    expr: substr(1, 5)
+                    type: string
+              mode: hash
+              Reduce Output Operator
+                key expressions:
+                      expr: 0
+                      type: string
+                      expr: 1
+                      type: string
+                sort order: ++
+                Map-reduce partition columns:
+                      expr: 0
+                      type: string
+                tag: -1
+                value expressions:
+                      expr: 2
+                      type: bigint
+            Group By Operator
+              aggregations:
+                    expr: count(DISTINCT substr(1, 5))
+              keys:
+                    expr: 0
+                    type: string
+                    expr: 1
+                    type: string
+                    expr: substr(1, 5)
+                    type: string
+              mode: hash
+              File Output Operator
+                compressed: false
+                GlobalTableId: 0
+                table:
+                    input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                    output format: org.apache.hadoop.mapred.SequenceFileOutputFormat
+                    name: binary_table
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations:
+                expr: count(DISTINCT KEY.1)
+          keys:
+                expr: KEY.0
+                type: string
+          mode: mergepartial
+          Select Operator
+            expressions:
+                  expr: 0
+                  type: string
+                  expr: 1
+                  type: bigint
+            File Output Operator
+              compressed: false
+              GlobalTableId: 1
+              table:
+                  input format: org.apache.hadoop.mapred.TextInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                  name: dest1
+
+  Stage: Stage-0
+    Move Operator
+      tables:
+            replace: true
+            table:
+                input format: org.apache.hadoop.mapred.TextInputFormat
+                output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                name: dest1
+            replace: true
+            table:
+                input format: org.apache.hadoop.mapred.TextInputFormat
+                output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                name: dest2
+
+  Stage: Stage-3
+    Map Reduce
+      Alias -> Map Operator Tree:
+        /data/users/njain/hive_branch3/hive_br3/build/ql/tmp/2066774395/703604338.10005 
+          Reduce Output Operator
+            key expressions:
+                  expr: 0
+                  type: string
+                  expr: 1
+                  type: string
+                  expr: 2
+                  type: string
+            sort order: +++
+            Map-reduce partition columns:
+                  expr: 0
+                  type: string
+                  expr: 1
+                  type: string
+            tag: -1
+            value expressions:
+                  expr: 3
+                  type: bigint
+      Reduce Operator Tree:
+        Group By Operator
+          aggregations:
+                expr: count(DISTINCT KEY.2)
+          keys:
+                expr: KEY.0
+                type: string
+                expr: KEY.1
+                type: string
+          mode: mergepartial
+          Select Operator
+            expressions:
+                  expr: 0
+                  type: string
+                  expr: 1
+                  type: string
+                  expr: 2
+                  type: bigint
+            File Output Operator
+              compressed: false
+              GlobalTableId: 2
+              table:
+                  input format: org.apache.hadoop.mapred.TextInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+                  name: dest2
+
+  Stage: Stage-4
+    Map Reduce
+      Alias -> Map Operator Tree:
+        null-subquery2:unionsrc-subquery2:s2 
+            Select Operator
+              expressions:
+                    expr: key
+                    type: string
+                    expr: value
+                    type: string
+              File Output Operator
+                compressed: false
+                GlobalTableId: 0
+                table:
+                    input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                    output format: org.apache.hadoop.mapred.SequenceFileOutputFormat
+                    name: binary_table
+
+
+0	1
+10	1
+100	1
+103	1
+104	1
+105	1
+11	1
+111	1
+113	1
+114	1
+116	1
+118	1
+119	1
+12	1
+120	1
+125	1
+126	1
+128	1
+129	1
+131	1
+133	1
+134	1
+136	1
+137	1
+138	1
+143	1
+145	1
+146	1
+149	1
+15	1
+150	1
+152	1
+153	1
+155	1
+156	1
+157	1
+158	1
+160	1
+162	1
+163	1
+164	1
+165	1
+166	1
+167	1
+168	1
+169	1
+17	1
+170	1
+172	1
+174	1
+175	1
+176	1
+177	1
+178	1
+179	1
+18	1
+180	1
+181	1
+183	1
+186	1
+187	1
+189	1
+19	1
+190	1
+191	1
+192	1
+193	1
+194	1
+195	1
+196	1
+197	1
+199	1
+2	1
+20	1
+200	1
+201	1
+202	1
+203	1
+205	1
+207	1
+208	1
+209	1
+213	1
+214	1
+216	1
+217	1
+218	1
+219	1
+221	1
+222	1
+223	1
+224	1
+226	1
+228	1
+229	1
+230	1
+233	1
+235	1
+237	1
+238	1
+239	1
+24	1
+241	1
+242	1
+244	1
+247	1
+248	1
+249	1
+252	1
+255	1
+256	1
+257	1
+258	1
+26	1
+260	1
+262	1
+263	1
+265	1
+266	1
+27	1
+272	1
+273	1
+274	1
+275	1
+277	1
+278	1
+28	1
+280	1
+281	1
+282	1
+283	1
+284	1
+285	1
+286	1
+287	1
+288	1
+289	1
+291	1
+292	1
+296	1
+298	1
+30	1
+302	1
+305	1
+306	1
+307	1
+308	1
+309	1
+310	1
+311	1
+315	1
+316	1
+317	1
+318	1
+321	1
+322	1
+323	1
+325	1
+327	1
+33	1
+331	1
+332	1
+333	1
+335	1
+336	1
+338	1
+339	1
+34	1
+341	1
+342	1
+344	1
+345	1
+348	1
+35	1
+351	1
+353	1
+356	1
+360	1
+362	1
+364	1
+365	1
+366	1
+367	1
+368	1
+369	1
+37	1
+373	1
+374	1
+375	1
+377	1
+378	1
+379	1
+382	1
+384	1
+386	1
+389	1
+392	1
+393	1
+394	1
+395	1
+396	1
+397	1
+399	1
+4	1
+400	1
+401	1
+402	1
+403	1
+404	1
+406	1
+407	1
+409	1
+41	1
+411	1
+413	1
+414	1
+417	1
+418	1
+419	1
+42	1
+421	1
+424	1
+427	1
+429	1
+43	1
+430	1
+431	1
+432	1
+435	1
+436	1
+437	1
+438	1
+439	1
+44	1
+443	1
+444	1
+446	1
+448	1
+449	1
+452	1
+453	1
+454	1
+455	1
+457	1
+458	1
+459	1
+460	1
+462	1
+463	1
+466	1
+467	1
+468	1
+469	1
+47	1
+470	1
+472	1
+475	1
+477	1
+478	1
+479	1
+480	1
+481	1
+482	1
+483	1
+484	1
+485	1
+487	1
+489	1
+490	1
+491	1
+492	1
+493	1
+494	1
+495	1
+496	1
+497	1
+498	1
+5	1
+51	1
+53	1
+54	1
+57	1
+58	1
+64	1
+65	1
+66	1
+67	1
+69	1
+70	1
+72	1
+74	1
+76	1
+77	1
+78	1
+8	1
+80	1
+82	1
+83	1
+84	1
+85	1
+86	1
+87	1
+9	1
+90	1
+92	1
+95	1
+96	1
+97	1
+98	1
+tst1	0
+0	val_0	1
+10	val_10	1
+100	val_100	1
+103	val_103	1
+104	val_104	1
+105	val_105	1
+11	val_11	1
+111	val_111	1
+113	val_113	1
+114	val_114	1
+116	val_116	1
+118	val_118	1
+119	val_119	1
+12	val_12	1
+120	val_120	1
+125	val_125	1
+126	val_126	1
+128	val_128	1
+129	val_129	1
+131	val_131	1
+133	val_133	1
+134	val_134	1
+136	val_136	1
+137	val_137	1
+138	val_138	1
+143	val_143	1
+145	val_145	1
+146	val_146	1
+149	val_149	1
+15	val_15	1
+150	val_150	1
+152	val_152	1
+153	val_153	1
+155	val_155	1
+156	val_156	1
+157	val_157	1
+158	val_158	1
+160	val_160	1
+162	val_162	1
+163	val_163	1
+164	val_164	1
+165	val_165	1
+166	val_166	1
+167	val_167	1
+168	val_168	1
+169	val_169	1
+17	val_17	1
+170	val_170	1
+172	val_172	1
+174	val_174	1
+175	val_175	1
+176	val_176	1
+177	val_177	1
+178	val_178	1
+179	val_179	1
+18	val_18	1
+180	val_180	1
+181	val_181	1
+183	val_183	1
+186	val_186	1
+187	val_187	1
+189	val_189	1
+19	val_19	1
+190	val_190	1
+191	val_191	1
+192	val_192	1
+193	val_193	1
+194	val_194	1
+195	val_195	1
+196	val_196	1
+197	val_197	1
+199	val_199	1
+2	val_2	1
+20	val_20	1
+200	val_200	1
+201	val_201	1
+202	val_202	1
+203	val_203	1
+205	val_205	1
+207	val_207	1
+208	val_208	1
+209	val_209	1
+213	val_213	1
+214	val_214	1
+216	val_216	1
+217	val_217	1
+218	val_218	1
+219	val_219	1
+221	val_221	1
+222	val_222	1
+223	val_223	1
+224	val_224	1
+226	val_226	1
+228	val_228	1
+229	val_229	1
+230	val_230	1
+233	val_233	1
+235	val_235	1
+237	val_237	1
+238	val_238	1
+239	val_239	1
+24	val_24	1
+241	val_241	1
+242	val_242	1
+244	val_244	1
+247	val_247	1
+248	val_248	1
+249	val_249	1
+252	val_252	1
+255	val_255	1
+256	val_256	1
+257	val_257	1
+258	val_258	1
+26	val_26	1
+260	val_260	1
+262	val_262	1
+263	val_263	1
+265	val_265	1
+266	val_266	1
+27	val_27	1
+272	val_272	1
+273	val_273	1
+274	val_274	1
+275	val_275	1
+277	val_277	1
+278	val_278	1
+28	val_28	1
+280	val_280	1
+281	val_281	1
+282	val_282	1
+283	val_283	1
+284	val_284	1
+285	val_285	1
+286	val_286	1
+287	val_287	1
+288	val_288	1
+289	val_289	1
+291	val_291	1
+292	val_292	1
+296	val_296	1
+298	val_298	1
+30	val_30	1
+302	val_302	1
+305	val_305	1
+306	val_306	1
+307	val_307	1
+308	val_308	1
+309	val_309	1
+310	val_310	1
+311	val_311	1
+315	val_315	1
+316	val_316	1
+317	val_317	1
+318	val_318	1
+321	val_321	1
+322	val_322	1
+323	val_323	1
+325	val_325	1
+327	val_327	1
+33	val_33	1
+331	val_331	1
+332	val_332	1
+333	val_333	1
+335	val_335	1
+336	val_336	1
+338	val_338	1
+339	val_339	1
+34	val_34	1
+341	val_341	1
+342	val_342	1
+344	val_344	1
+345	val_345	1
+348	val_348	1
+35	val_35	1
+351	val_351	1
+353	val_353	1
+356	val_356	1
+360	val_360	1
+362	val_362	1
+364	val_364	1
+365	val_365	1
+366	val_366	1
+367	val_367	1
+368	val_368	1
+369	val_369	1
+37	val_37	1
+373	val_373	1
+374	val_374	1
+375	val_375	1
+377	val_377	1
+378	val_378	1
+379	val_379	1
+382	val_382	1
+384	val_384	1
+386	val_386	1
+389	val_389	1
+392	val_392	1
+393	val_393	1
+394	val_394	1
+395	val_395	1
+396	val_396	1
+397	val_397	1
+399	val_399	1
+4	val_4	1
+400	val_400	1
+401	val_401	1
+402	val_402	1
+403	val_403	1
+404	val_404	1
+406	val_406	1
+407	val_407	1
+409	val_409	1
+41	val_41	1
+411	val_411	1
+413	val_413	1
+414	val_414	1
+417	val_417	1
+418	val_418	1
+419	val_419	1
+42	val_42	1
+421	val_421	1
+424	val_424	1
+427	val_427	1
+429	val_429	1
+43	val_43	1
+430	val_430	1
+431	val_431	1
+432	val_432	1
+435	val_435	1
+436	val_436	1
+437	val_437	1
+438	val_438	1
+439	val_439	1
+44	val_44	1
+443	val_443	1
+444	val_444	1
+446	val_446	1
+448	val_448	1
+449	val_449	1
+452	val_452	1
+453	val_453	1
+454	val_454	1
+455	val_455	1
+457	val_457	1
+458	val_458	1
+459	val_459	1
+460	val_460	1
+462	val_462	1
+463	val_463	1
+466	val_466	1
+467	val_467	1
+468	val_468	1
+469	val_469	1
+47	val_47	1
+470	val_470	1
+472	val_472	1
+475	val_475	1
+477	val_477	1
+478	val_478	1
+479	val_479	1
+480	val_480	1
+481	val_481	1
+482	val_482	1
+483	val_483	1
+484	val_484	1
+485	val_485	1
+487	val_487	1
+489	val_489	1
+490	val_490	1
+491	val_491	1
+492	val_492	1
+493	val_493	1
+494	val_494	1
+495	val_495	1
+496	val_496	1
+497	val_497	1
+498	val_498	1
+5	val_5	1
+51	val_51	1
+53	val_53	1
+54	val_54	1
+57	val_57	1
+58	val_58	1
+64	val_64	1
+65	val_65	1
+66	val_66	1
+67	val_67	1
+69	val_69	1
+70	val_70	1
+72	val_72	1
+74	val_74	1
+76	val_76	1
+77	val_77	1
+78	val_78	1
+8	val_8	1
+80	val_80	1
+82	val_82	1
+83	val_83	1
+84	val_84	1
+85	val_85	1
+86	val_86	1
+87	val_87	1
+9	val_9	1
+90	val_90	1
+92	val_92	1
+95	val_95	1
+96	val_96	1
+97	val_97	1
+98	val_98	1
+tst1	500	0



Mime
View raw message