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 5e8a994..24149a7 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 @@ -205,7 +205,8 @@ public static RelNode renameTopLevelSelectInResultSchema(final RelNode rootRel, List newSelAliases = new ArrayList(); String colAlias; for (int i = 0; i < rootChildExps.size(); i++) { - colAlias = resultSchema.get(i).getName(); + colAlias = resultSchema.get(i).getComment() == null ? resultSchema.get(i).getName() + : resultSchema.get(i).getComment(); colAlias = getNewColAlias(newSelAliases, colAlias); newSelAliases.add(colAlias); } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index bdc5bef..5836f1a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -7079,23 +7079,7 @@ protected Operator genFileSinkPlan(String dest, QB qb, Operator input) first = false; cols = cols.concat(colName); - // Replace VOID type with string when the output is a temp table or - // local files. - // A VOID type can be generated under the query: - // - // select NULL from tt; - // or - // insert overwrite local directory "abc" select NULL from tt; - // - // where there is no column type to which the NULL value should be - // converted. - // - String tName = colInfo.getType().getTypeName(); - if (tName.equals(serdeConstants.VOID_TYPE_NAME)) { - colTypes = colTypes.concat(serdeConstants.STRING_TYPE_NAME); - } else { - colTypes = colTypes.concat(tName); - } + colTypes = colTypes.concat(colInfo.getType().getTypeName()); } // update the create table descriptor with the resulting schema. @@ -7423,8 +7407,6 @@ Operator genConversionSelectOperator(String dest, QB qb, Operator input, // does the conversion to String by itself. boolean isMetaDataSerDe = table_desc.getDeserializerClass().equals( MetadataTypedColumnsetSerDe.class); - boolean isLazySimpleSerDe = table_desc.getDeserializerClass().equals( - LazySimpleSerDe.class); if (!isMetaDataSerDe && !deleting(dest)) { // If we're updating, add the ROW__ID expression, then make the following column accesses @@ -7482,16 +7464,18 @@ Operator genConversionSelectOperator(String dest, QB qb, Operator input, } if (converted) { + RowResolver inputRR = opParseCtx.get(input).getRowResolver(); // add the select operator RowResolver rowResolver = new RowResolver(); ArrayList colNames = new ArrayList(); Map colExprMap = new HashMap(); for (int i = 0; i < expressions.size(); i++) { - String name = getColumnInternalName(i); - rowResolver.put("", name, new ColumnInfo(name, expressions.get(i) + String tab_alias = inputRR.getRowSchema().getSignature().get(i).getTabAlias(); + String col_alias = inputRR.getRowSchema().getSignature().get(i).getAlias(); + rowResolver.put(tab_alias, col_alias, new ColumnInfo(col_alias, expressions.get(i) .getTypeInfo(), "", false)); - colNames.add(name); - colExprMap.put(name, expressions.get(i)); + colNames.add(col_alias); + colExprMap.put(col_alias, expressions.get(i)); } input = putOpInsertMap(OperatorFactory.getAndMakeChild( new SelectDesc(expressions, colNames), new RowSchema(rowResolver @@ -11486,12 +11470,14 @@ protected void saveViewDefinition() throws SemanticException { } qualifiedColName = rr.reverseLookup(colInfo.getInternalName()); + String comment = null; if (useTabAliasIfAvailable && qualifiedColName[0] != null && !qualifiedColName[0].isEmpty()) { colName = qualifiedColName[0] + "." + qualifiedColName[1]; + comment = qualifiedColName[1]; } else { colName = qualifiedColName[1]; } - fieldSchemas.add(new FieldSchema(colName, colInfo.getType().getTypeName(), null)); + fieldSchemas.add(new FieldSchema(colName, colInfo.getType().getTypeName(), comment)); } return fieldSchemas; } diff --git a/ql/src/test/results/clientpositive/bucket3.q.out b/ql/src/test/results/clientpositive/bucket3.q.out index b1173e7..601ce15 100644 --- a/ql/src/test/results/clientpositive/bucket3.q.out +++ b/ql/src/test/results/clientpositive/bucket3.q.out @@ -94,7 +94,7 @@ STAGE PLANS: Reduce Operator Tree: Select Operator expressions: UDFToInteger(VALUE._col0) (type: int), VALUE._col1 (type: string) - outputColumnNames: _col0, _col1 + outputColumnNames: key, value Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false