private TableStatisticsMetadata getStatisticsCollectionMetadata(List<ColumnMetadata> columns, List<String> partitionedBy) { Set<ColumnStatisticMetadata> columnStatistics = columns.stream() .filter(column -> !partitionedBy.contains(column.getName())) .filter(column -> !column.isHidden()) .map(this::getColumnStatisticMetadata) .flatMap(List::stream) .collect(toImmutableSet()); return new TableStatisticsMetadata(columnStatistics, ImmutableSet.of(), partitionedBy); }
private static List<MongoColumnHandle> buildColumnHandles(ConnectorTableMetadata tableMetadata) { return tableMetadata.getColumns().stream() .map(m -> new MongoColumnHandle(m.getName(), m.getType(), m.isHidden())) .collect(toList()); } }
protected static List<ColumnMetadata> filterNonHiddenColumnMetadata(Collection<ColumnMetadata> columnMetadatas) { return columnMetadatas.stream() .filter(columnMetadata -> !columnMetadata.isHidden()) .collect(toList()); }
public ThriftColumnHandle(ColumnMetadata columnMetadata) { this(columnMetadata.getName(), columnMetadata.getType(), columnMetadata.getComment(), columnMetadata.isHidden()); }
private List<Expression> buildStatisticsRows(TableMetadata tableMetadata, Map<String, ColumnHandle> columnHandles, TableStatistics tableStatistics) { ImmutableList.Builder<Expression> rowsBuilder = ImmutableList.builder(); for (ColumnMetadata columnMetadata : tableMetadata.getColumns()) { if (columnMetadata.isHidden()) { continue; } String columnName = columnMetadata.getName(); Type columnType = columnMetadata.getType(); ColumnHandle columnHandle = columnHandles.get(columnName); ColumnStatistics columnStatistics = tableStatistics.getColumnStatistics().get(columnHandle); if (columnStatistics != null) { rowsBuilder.add(createColumnStatsRow(columnName, columnType, columnStatistics)); } else { rowsBuilder.add(createEmptyColumnStatsRow(columnName)); } } // Stats for whole table rowsBuilder.add(createTableStatsRow(tableStatistics)); return rowsBuilder.build(); }
columnNames.add(column.getName()); columnTypes.add(column.getType()); columnExtra.add(new ExtraColumnMetadata(column.getName(), column.isHidden()));
@Override public void renameColumn(ConnectorSession session, ConnectorTableHandle tableHandle, ColumnHandle source, String target) { ConnectorTableMetadata tableMetadata = getTableMetadata(session, tableHandle); SchemaTableName tableName = getTableName(tableHandle); ColumnMetadata columnMetadata = getColumnMetadata(session, tableHandle, source); List<ColumnMetadata> columns = new ArrayList<>(tableMetadata.getColumns()); columns.set(columns.indexOf(columnMetadata), new ColumnMetadata(target, columnMetadata.getType(), columnMetadata.getComment(), columnMetadata.isHidden())); tables.put(tableName, new ConnectorTableMetadata(tableName, ImmutableList.copyOf(columns), tableMetadata.getProperties(), tableMetadata.getComment())); }
if (metadata.getColumnMetadata(session, tableHandle, columnHandle).isHidden()) { throw new SemanticException(NOT_SUPPORTED, statement, "Cannot drop hidden column"); .filter(info -> !info.isHidden()).count() <= 1) { throw new SemanticException(NOT_SUPPORTED, statement, "Cannot drop the only column in a table");
private static List<HiveColumnHandle> getColumnHandles(ConnectorTableMetadata tableMetadata, Set<String> partitionColumnNames, TypeTranslator typeTranslator) { validatePartitionColumns(tableMetadata); validateBucketColumns(tableMetadata); ImmutableList.Builder<HiveColumnHandle> columnHandles = ImmutableList.builder(); int ordinal = 0; for (ColumnMetadata column : tableMetadata.getColumns()) { HiveColumnHandle.ColumnType columnType; if (partitionColumnNames.contains(column.getName())) { columnType = PARTITION_KEY; } else if (column.isHidden()) { columnType = SYNTHESIZED; } else { columnType = REGULAR; } columnHandles.add(new HiveColumnHandle( column.getName(), toHiveType(typeTranslator, column.getType()), column.getType().getTypeSignature(), ordinal, columnType, Optional.ofNullable(column.getComment()))); ordinal++; } return columnHandles.build(); }
.filter(column -> !column.isHidden()) .map(ColumnMetadata::getName) .collect(toImmutableList());
Map<String, ColumnHandle> columnHandles = metadata.getColumnHandles(session, tableHandle); List<ColumnHandle> visibleColumnHandles = columnHandles.values().stream() .filter(handle -> !metadata.getColumnMetadata(session, tableHandle, handle).isHidden()) .collect(toImmutableList()); checkSpatialPartitioningTable(visibleColumnHandles.size() == 1, "Expected single column for table %s, but found %s columns", name, columnHandles.size());
if (metadata.getColumnMetadata(session, tableHandle, columnHandle).isHidden()) { throw new SemanticException(NOT_SUPPORTED, statement, "Cannot rename hidden column");
private RelationPlan createTableCreationPlan(Analysis analysis, Query query) { QualifiedObjectName destination = analysis.getCreateTableDestination().get(); RelationPlan plan = createRelationPlan(analysis, query); ConnectorTableMetadata tableMetadata = createTableMetadata( destination, getOutputTableColumns(plan, analysis.getColumnAliases()), analysis.getCreateTableProperties(), analysis.getParameters(), analysis.getCreateTableComment()); Optional<NewTableLayout> newTableLayout = metadata.getNewTableLayout(session, destination.getCatalogName(), tableMetadata); List<String> columnNames = tableMetadata.getColumns().stream() .filter(column -> !column.isHidden()) .map(ColumnMetadata::getName) .collect(toImmutableList()); TableStatisticsMetadata statisticsMetadata = metadata.getStatisticsCollectionMetadata(session, destination.getCatalogName(), tableMetadata); return createTableWriterPlan( analysis, plan, new CreateName(destination.getCatalogName(), tableMetadata, newTableLayout), columnNames, newTableLayout, statisticsMetadata); }
private InternalTable buildColumns(Session session, Set<QualifiedTablePrefix> prefixes) { InternalTable.Builder table = InternalTable.builder(informationSchemaTableColumns(TABLE_COLUMNS)); for (QualifiedTablePrefix prefix : prefixes) { for (Entry<SchemaTableName, List<ColumnMetadata>> entry : listTableColumns(session, metadata, accessControl, prefix).entrySet()) { SchemaTableName tableName = entry.getKey(); int ordinalPosition = 1; for (ColumnMetadata column : entry.getValue()) { if (column.isHidden()) { continue; } table.add( prefix.getCatalogName(), tableName.getSchemaName(), tableName.getTableName(), column.getName(), ordinalPosition, null, "YES", column.getType().getDisplayName(), column.getComment(), column.getExtraInfo()); ordinalPosition++; } } } return table.build(); }
.filter(column -> !column.isHidden()) .map(column -> { List<Property> propertyNodes = buildProperties(objectName, Optional.of(column.getName()), INVALID_COLUMN_PROPERTY, column.getProperties(), allColumnProperties);
private static void insertRows(ConnectorTableMetadata tableMetadata, Handle handle, RecordSet data) .filter(columnMetadata -> !columnMetadata.isHidden()) .collect(toImmutableList());
if (columnMetadata.getName().equals(PATH_COLUMN_NAME)) { assertTrue(columnMetadata.isHidden());
if (columnMetadata.getName().equals(BUCKET_COLUMN_NAME)) { assertTrue(columnMetadata.isHidden());
if (column.isHidden()) { continue;