[ https://issues.apache.org/jira/browse/HIVE-26817?focusedWorklogId=832040&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-832040 ]
ASF GitHub Bot logged work on HIVE-26817: ----------------------------------------- Author: ASF GitHub Bot Created on: 08/Dec/22 12:44 Start Date: 08/Dec/22 12:44 Worklog Time Spent: 10m Work Description: zabetak commented on code in PR #3843: URL: https://github.com/apache/hive/pull/3843#discussion_r1043287199 ########## ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java: ########## @@ -71,7 +73,10 @@ public class PlanModifierForASTConv { public static RelNode convertOpTree(RelNode rel, List<FieldSchema> resultSchema, boolean alignColumns) throws CalciteSemanticException { if (rel instanceof HiveValues) { - return rel; + RelDataTypeFactory typeFactory = rel.getCluster().getTypeFactory(); + List<String> fieldNames = resultSchema.stream().map(FieldSchema::getName).collect(Collectors.toList()); + fieldNames = SqlValidatorUtil.uniquify(fieldNames, typeFactory.getTypeSystem().isSchemaCaseSensitive()); Review Comment: Is it necessary to create uniq field names? I am asking cause it seems that due to this the CLI header in some existing tests change. ########## ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveValues.java: ########## @@ -43,4 +45,18 @@ public HiveValues(RelOptCluster cluster, RelDataType rowType, ImmutableList<Immu public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) { return new HiveValues(getCluster(), getRowType(), tuples, getTraitSet()); } + + public RelNode copy(List<String> newColumnNames) throws CalciteSemanticException { + if (newColumnNames.size() != getRowType().getFieldCount()) { + throw new CalciteSemanticException("The number of new column names and columns in the schema does not match!"); + } + + RelDataTypeFactory.Builder builder = getCluster().getTypeFactory().builder(); Review Comment: Maybe you can exploit the `builder.uniquify()` method to make the code slightly more readable. ########## ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/PlanModifierForASTConv.java: ########## @@ -71,7 +73,10 @@ public class PlanModifierForASTConv { public static RelNode convertOpTree(RelNode rel, List<FieldSchema> resultSchema, boolean alignColumns) throws CalciteSemanticException { if (rel instanceof HiveValues) { - return rel; + RelDataTypeFactory typeFactory = rel.getCluster().getTypeFactory(); + List<String> fieldNames = resultSchema.stream().map(FieldSchema::getName).collect(Collectors.toList()); + fieldNames = SqlValidatorUtil.uniquify(fieldNames, typeFactory.getTypeSystem().isSchemaCaseSensitive()); + return ((HiveValues) rel).copy(fieldNames); Review Comment: I suppose the intention is to make something similar to `renameTopLevelSelectInResultSchema` but in that case shouldn't be the logic of naming the columns the same? Issue Time Tracking ------------------- Worklog Id: (was: 832040) Time Spent: 20m (was: 10m) > Set column names in result schema when plan has Values root > ----------------------------------------------------------- > > Key: HIVE-26817 > URL: https://issues.apache.org/jira/browse/HIVE-26817 > Project: Hive > Issue Type: Improvement > Components: CBO > Reporter: Krisztian Kasa > Assignee: Krisztian Kasa > Priority: Major > Labels: pull-request-available > Time Spent: 20m > Remaining Estimate: 0h > > The query > {code} > select b1, count(a1) count1 from (select a1, b1 from t1) s where 1=0 group by > b1; > {code} > should have a result with column names > {code} > b1 count1 > {code} > but it is > {code} > $f0 $f1 > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)