checkNotNull(prefix, "prefix is null");
SchemaTablePrefix tablePrefix = prefix.asSchemaTablePrefix();
Map<QualifiedTableName, List<ColumnMetadata>> tableColumns = new HashMap<>();
for (ConnectorMetadataEntry connectorMetadata : allConnectorsFor(prefix.getCatalogName())) {
ConnectorMetadata metadata = connectorMetadata.getMetadata();
for (Entry<SchemaTableName, List<ColumnMetadata>> entry : metadata.listTableColumns(session, tablePrefix).entrySet()) {
QualifiedTableName tableName = new QualifiedTableName(
prefix.getCatalogName(),
entry.getKey().getSchemaName(),
entry.getKey().getTableName());
tableColumns.put(tableName, entry.getValue());
}
// if table and view names overlap, the view wins
for (Entry<SchemaTableName, String> entry : metadata.getViews(session, tablePrefix).entrySet()) {
QualifiedTableName tableName = new QualifiedTableName(
prefix.getCatalogName(),
entry.getKey().getSchemaName(),
entry.getKey().getTableName());