konstantinb commented on code in PR #6014:
URL: https://github.com/apache/hive/pull/6014#discussion_r2337480835
##########
ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/ASTConverter.java:
##########
@@ -602,12 +603,23 @@ private QueryBlockInfo convertSource(RelNode r) throws
CalciteSemanticException
// retrieve the base table source.
QueryBlockInfo tableFunctionSource = convertSource(tfs.getInput(0));
- String sqAlias = tableFunctionSource.schema.get(0).table;
- // the schema will contain the base table source fields
- s = new Schema(tfs, sqAlias);
- ast = createASTLateralView(tfs, s, tableFunctionSource, sqAlias);
+ // Create schema that preserves base table columns with original alias,
+ // but gives new UDTF columns the unique lateral view alias
+ int baseFieldCount = tableFunctionSource.schema.size();
+ List<RelDataTypeField> allOutputFields = tfs.getRowType().getFieldList();
+ final String sqAlias = tableFunctionSource.schema.get(0).table;
+ Stream<ColumnInfo> baseColumnsStream = allOutputFields.subList(0,
baseFieldCount).stream()
+ .map(field -> new ColumnInfo(sqAlias, field.getName()));
+
+ final String lateralViewAlias = nextAlias();
+ Stream<ColumnInfo> udtfColumnsStream =
+ allOutputFields.subList(baseFieldCount,
allOutputFields.size()).stream()
+ .map(field -> new ColumnInfo(lateralViewAlias, field.getName()));
+
+ s = new Schema(Stream.concat(baseColumnsStream,
udtfColumnsStream).toList());
+ ast = createASTLateralView(tfs, s, tableFunctionSource,
lateralViewAlias);
Review Comment:
> Concretely, I was thinking something like the following:
>
> assuming that the code inside `createASTLateralView` that needs a schema
can use directly `tableFunctionSource.schema`.
>
> In this case, the "input" schema is that inside `tableFunctionSource` and
the "output" schema is the one constructed in `s`.
@zabetak Thank you very much for this suggestion, it definitely makes
perfect sense to better distinguish input & output schemas. I believe that the
commit
https://github.com/apache/hive/pull/6014/commits/f413e345205aab278f7d61a920444237bcb095c6
is in a very close match with your proposal. I would appreciate it if you can
give it another look when you get a chance.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]