Optional<String> columnAlias = field.getName(); if (columnAliases == null) { fieldsBuilder.add(Field.newQualified( QualifiedName.of(relationAlias), columnAlias, fieldsBuilder.add(Field.newQualified( QualifiedName.of(relationAlias), columnAlias,
Field outerColumn1 = Field.newQualified(QualifiedName.of("outer", "column1"), Optional.of("c1"), BIGINT, false, Optional.empty(), Optional.empty(), false); Field outerColumn2 = Field.newQualified(QualifiedName.of("outer", "column2"), Optional.of("c2"), BIGINT, false, Optional.empty(), Optional.empty(), false); Scope outer = Scope.builder().withParent(root).withRelationType(RelationId.anonymous(), new RelationType(outerColumn1, outerColumn2)).build(); Field innerColumn2 = Field.newQualified(QualifiedName.of("inner", "column2"), Optional.of("c2"), BIGINT, false, Optional.empty(), Optional.empty(), false); Field innerColumn3 = Field.newQualified(QualifiedName.of("inner", "column3"), Optional.of("c3"), BIGINT, false, Optional.empty(), Optional.empty(), false); Scope inner = Scope.builder().withOuterQueryParent(outer).withRelationType(RelationId.anonymous(), new RelationType(innerColumn2, innerColumn3)).build();
for (Identifier columnName : columnNames.get()) { Field inputField = queryDescriptor.getFieldByIndex(field); fieldBuilder.add(Field.newQualified( QualifiedName.of(name), Optional.of(columnName.getValue()), .map(field -> Field.newQualified( QualifiedName.of(name), field.getName(), .map(column -> Field.newQualified( QualifiedName.of(name.getObjectName()), Optional.of(column.getName()), Field field = Field.newQualified( table.getName(), Optional.of(column.getName()),
/** * Creates a new tuple descriptor with the relation, and, optionally, the columns aliased. */ public RelationType withAlias(String relationAlias, List<String> columnAliases) { if (columnAliases != null) { checkArgument(columnAliases.size() == visibleFields.size(), "Column alias list has %s entries but '%s' has %s columns available", columnAliases.size(), relationAlias, visibleFields.size()); } ImmutableList.Builder<Field> fieldsBuilder = ImmutableList.builder(); for (int i = 0; i < allFields.size(); i++) { Field field = allFields.get(i); Optional<String> columnAlias = field.getName(); if (columnAliases == null) { fieldsBuilder.add(Field.newQualified(QualifiedName.of(relationAlias), columnAlias, field.getType(), field.isHidden())); } else if (!field.isHidden()) { // hidden fields are not exposed when there are column aliases columnAlias = Optional.of(columnAliases.get(i)); fieldsBuilder.add(Field.newQualified(QualifiedName.of(relationAlias), columnAlias, field.getType(), false)); } } return new RelationType(fieldsBuilder.build()); }
ImmutableList.Builder<Field> fields = ImmutableList.builder(); for (Field field : queryDescriptor.getAllFields()) { fields.add(Field.newQualified(QualifiedName.of(name), field.getName(), field.getType(), false)); Field field = Field.newQualified(table.getName(), Optional.of(column.getName()), column.getType(), column.isHidden()); fields.add(field); ColumnHandle columnHandle = columnHandles.get(column.getName());