Skip to content

Commit eeb7867

Browse files
chenjian2664ebyhr
authored andcommitted
Implement streamRelationColumns in BlackHole
1 parent d60f1b4 commit eeb7867

File tree

1 file changed

+28
-2
lines changed

1 file changed

+28
-2
lines changed

plugin/trino-blackhole/src/main/java/io/trino/plugin/blackhole/BlackHoleMetadata.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import io.trino.spi.connector.ConnectorTableMetadata;
3636
import io.trino.spi.connector.ConnectorTableVersion;
3737
import io.trino.spi.connector.ConnectorViewDefinition;
38+
import io.trino.spi.connector.RelationColumnsMetadata;
3839
import io.trino.spi.connector.RetryMode;
3940
import io.trino.spi.connector.RowChangeParadigm;
4041
import io.trino.spi.connector.SaveMode;
@@ -54,6 +55,7 @@
5455

5556
import java.util.ArrayList;
5657
import java.util.Collection;
58+
import java.util.HashMap;
5759
import java.util.Iterator;
5860
import java.util.List;
5961
import java.util.Map;
@@ -62,6 +64,7 @@
6264
import java.util.Set;
6365
import java.util.concurrent.ConcurrentHashMap;
6466
import java.util.function.Function;
67+
import java.util.function.UnaryOperator;
6568

6669
import static com.google.common.base.Preconditions.checkArgument;
6770
import static com.google.common.base.Verify.verify;
@@ -185,9 +188,32 @@ public Map<SchemaTableName, List<ColumnMetadata>> listTableColumns(ConnectorSess
185188
@Override
186189
public Iterator<TableColumnsMetadata> streamTableColumns(ConnectorSession session, SchemaTablePrefix prefix)
187190
{
188-
return tables.values().stream()
191+
throw new UnsupportedOperationException("The deprecated streamTableColumns is not supported because streamRelationColumns is implemented instead");
192+
}
193+
194+
@Override
195+
public Iterator<RelationColumnsMetadata> streamRelationColumns(
196+
ConnectorSession session,
197+
Optional<String> schemaName,
198+
UnaryOperator<Set<SchemaTableName>> relationFilter)
199+
{
200+
Map<SchemaTableName, RelationColumnsMetadata> relationColumns = new HashMap<>();
201+
SchemaTablePrefix prefix = schemaName.map(SchemaTablePrefix::new).orElseGet(SchemaTablePrefix::new);
202+
203+
tables.values().stream()
189204
.filter(table -> prefix.matches(table.toSchemaTableName()))
190-
.map(handle -> TableColumnsMetadata.forTable(handle.toSchemaTableName(), handle.toTableMetadata().getColumns()))
205+
.map(BlackHoleTableHandle::toTableMetadata)
206+
.forEach(columnsMetadata -> {
207+
SchemaTableName name = columnsMetadata.getTable();
208+
relationColumns.put(name, RelationColumnsMetadata.forTable(name, columnsMetadata.getColumns()));
209+
});
210+
211+
for (Map.Entry<SchemaTableName, ConnectorViewDefinition> entry : getViews(session, schemaName).entrySet()) {
212+
relationColumns.put(entry.getKey(), RelationColumnsMetadata.forView(entry.getKey(), entry.getValue().getColumns()));
213+
}
214+
215+
return relationFilter.apply(relationColumns.keySet()).stream()
216+
.map(relationColumns::get)
191217
.iterator();
192218
}
193219

0 commit comments

Comments
 (0)