You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2015/07/31 02:43:24 UTC

[24/43] hive git commit: HIVE-11347: CBO: Calcite Operator To Hive Operator (Calcite Return Path): fix CTAS (Pengcheng Xiong, via Jesus Camacho Rodriguez)

HIVE-11347: CBO: Calcite Operator To Hive Operator (Calcite Return Path): fix CTAS (Pengcheng Xiong, via Jesus Camacho Rodriguez)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/65396f04
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/65396f04
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/65396f04

Branch: refs/heads/spark
Commit: 65396f04fec331bd6ec8227e864f2600f0f7e925
Parents: 8dcead4
Author: Pengcheng Xiong <px...@hortonworks.com>
Authored: Tue Jul 28 09:03:54 2015 +0100
Committer: Jesus Camacho Rodriguez <jc...@apache.org>
Committed: Tue Jul 28 09:03:54 2015 +0100

----------------------------------------------------------------------
 .../optimizer/calcite/translator/PlanModifierForASTConv.java   | 2 +-
 .../calcite/translator/PlanModifierForReturnPath.java          | 6 +++++-
 .../java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java   | 3 ++-
 3 files changed, 8 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/65396f04/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java
index 5f6be9e..5cd3a06 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java
@@ -169,7 +169,7 @@ public class PlanModifierForASTConv {
     }
   }
 
-  private static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel,
+  public static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel,
       Pair<RelNode, RelNode> topSelparentPair, List<FieldSchema> resultSchema)
       throws CalciteSemanticException {
     RelNode parentOforiginalProjRel = topSelparentPair.getKey();

http://git-wip-us.apache.org/repos/asf/hive/blob/65396f04/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForReturnPath.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForReturnPath.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForReturnPath.java
index 06cf69d..81cc474 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForReturnPath.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForReturnPath.java
@@ -28,12 +28,16 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.HiveCalciteUtil;
 public class PlanModifierForReturnPath {
 
 
-  public static RelNode convertOpTree(RelNode rel, List<FieldSchema> resultSchema)
+  public static RelNode convertOpTree(RelNode rel, List<FieldSchema> resultSchema, boolean isCTAS)
           throws CalciteSemanticException {
     RelNode newTopNode = rel;
 
     Pair<RelNode, RelNode> topSelparentPair = HiveCalciteUtil.getTopLevelSelect(newTopNode);
     PlanModifierUtil.fixTopOBSchema(newTopNode, topSelparentPair, resultSchema, false);
+    if (isCTAS) {
+      newTopNode = PlanModifierForASTConv.renameTopLevelSelectInResultSchema(newTopNode,
+          topSelparentPair, resultSchema);
+    }
 
     return newTopNode;
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/65396f04/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
index 5b469e3..5cbc428 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
@@ -641,7 +641,8 @@ public class CalcitePlanner extends SemanticAnalyzer {
     }
 
     RelNode modifiedOptimizedOptiqPlan = PlanModifierForReturnPath.convertOpTree(
-            introduceProjectIfNeeded(optimizedOptiqPlan), topLevelFieldSchema);
+        introduceProjectIfNeeded(optimizedOptiqPlan), topLevelFieldSchema, this.getQB()
+            .getTableDesc() != null);
 
     LOG.debug("Translating the following plan:\n" + RelOptUtil.toString(modifiedOptimizedOptiqPlan));
     Operator<?> hiveRoot = new HiveOpConverter(this, conf, unparseTranslator, topOps,