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..15ecc57 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,12 +7464,13 @@ 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); + String name = inputRR.getRowSchema().getSignature().get(i).getAlias(); rowResolver.put("", name, new ColumnInfo(name, expressions.get(i) .getTypeInfo(), "", false)); colNames.add(name);