for (Field field : inputTupleDescriptor.resolveFieldsWithPrefix(starPrefix)) {
outputFields.add(Field.newUnqualified(field.getName(), field.getType()));
}
}
else if (item instanceof SingleColumn) {
SingleColumn column = (SingleColumn) item;
Optional<String> alias = column.getAlias();
if (!alias.isPresent() && column.getExpression() instanceof QualifiedNameReference) {
alias = Optional.of(((QualifiedNameReference) column.getExpression()).getName().getSuffix());
}
outputFields.add(Field.newUnqualified(alias, analysis.getType(column.getExpression()))); // TODO don't use analysis as a side-channel. Use outputExpressions to look up the type
}
else {
throw new IllegalArgumentException("Unsupported SelectItem type: " + item.getClass().getName());
}
}