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 @@ private static void convertOpTree(RelNode rel, RelNode parent) { } } - private static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel, + public static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel, Pair topSelparentPair, List resultSchema) throws CalciteSemanticException { RelNode parentOforiginalProjRel = topSelparentPair.getKey(); 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 @@ public class PlanModifierForReturnPath { - public static RelNode convertOpTree(RelNode rel, List resultSchema) + public static RelNode convertOpTree(RelNode rel, List resultSchema, boolean isCTAS) throws CalciteSemanticException { RelNode newTopNode = rel; Pair topSelparentPair = HiveCalciteUtil.getTopLevelSelect(newTopNode); PlanModifierUtil.fixTopOBSchema(newTopNode, topSelparentPair, resultSchema, false); + if (isCTAS) { + newTopNode = PlanModifierForASTConv.renameTopLevelSelectInResultSchema(newTopNode, + topSelparentPair, resultSchema); + } return newTopNode; } 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 fd6d7b0..a07b1a1 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 @@ -645,7 +645,8 @@ Operator getOptimizedHiveOPDag() throws SemanticException { } 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,