Search in sources :

Example 6 with SchemaTablePrefix

use of com.facebook.presto.spi.SchemaTablePrefix in project presto by prestodb.

the class TestRaptorMetadata method testListTableColumnsFiltering.

@Test
public void testListTableColumnsFiltering() {
    metadata.createTable(SESSION, getOrdersTable());
    Map<SchemaTableName, List<ColumnMetadata>> filterCatalog = metadata.listTableColumns(SESSION, new SchemaTablePrefix());
    Map<SchemaTableName, List<ColumnMetadata>> filterSchema = metadata.listTableColumns(SESSION, new SchemaTablePrefix("test"));
    Map<SchemaTableName, List<ColumnMetadata>> filterTable = metadata.listTableColumns(SESSION, new SchemaTablePrefix("test", "orders"));
    assertEquals(filterCatalog, filterSchema);
    assertEquals(filterCatalog, filterTable);
}
Also used : SchemaTablePrefix(com.facebook.presto.spi.SchemaTablePrefix) List(java.util.List) ImmutableList(com.google.common.collect.ImmutableList) SchemaTableName(com.facebook.presto.spi.SchemaTableName) Test(org.testng.annotations.Test)

Example 7 with SchemaTablePrefix

use of com.facebook.presto.spi.SchemaTablePrefix in project presto by prestodb.

the class MetadataManager method listTableColumns.

@Override
public Map<QualifiedObjectName, List<ColumnMetadata>> listTableColumns(Session session, QualifiedTablePrefix prefix) {
    requireNonNull(prefix, "prefix is null");
    Optional<CatalogMetadata> catalog = getOptionalCatalogMetadata(session, prefix.getCatalogName());
    Map<QualifiedObjectName, List<ColumnMetadata>> tableColumns = new HashMap<>();
    if (catalog.isPresent()) {
        CatalogMetadata catalogMetadata = catalog.get();
        SchemaTablePrefix tablePrefix = prefix.asSchemaTablePrefix();
        for (ConnectorId connectorId : catalogMetadata.listConnectorIds()) {
            ConnectorMetadata metadata = catalogMetadata.getMetadataFor(connectorId);
            ConnectorSession connectorSession = session.toConnectorSession(connectorId);
            for (Entry<SchemaTableName, List<ColumnMetadata>> entry : metadata.listTableColumns(connectorSession, tablePrefix).entrySet()) {
                QualifiedObjectName tableName = new QualifiedObjectName(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, ConnectorViewDefinition> entry : metadata.getViews(connectorSession, tablePrefix).entrySet()) {
                QualifiedObjectName tableName = new QualifiedObjectName(prefix.getCatalogName(), entry.getKey().getSchemaName(), entry.getKey().getTableName());
                ImmutableList.Builder<ColumnMetadata> columns = ImmutableList.builder();
                for (ViewColumn column : deserializeView(entry.getValue().getViewData()).getColumns()) {
                    columns.add(new ColumnMetadata(column.getName(), column.getType()));
                }
                tableColumns.put(tableName, columns.build());
            }
        }
    }
    return ImmutableMap.copyOf(tableColumns);
}
Also used : ColumnMetadata(com.facebook.presto.spi.ColumnMetadata) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) ImmutableCollectors.toImmutableList(com.facebook.presto.util.ImmutableCollectors.toImmutableList) ImmutableList(com.google.common.collect.ImmutableList) ViewColumn(com.facebook.presto.metadata.ViewDefinition.ViewColumn) SchemaTablePrefix(com.facebook.presto.spi.SchemaTablePrefix) SchemaTableName(com.facebook.presto.spi.SchemaTableName) QualifiedObjectName.convertFromSchemaTableName(com.facebook.presto.metadata.QualifiedObjectName.convertFromSchemaTableName) ConnectorViewDefinition(com.facebook.presto.spi.ConnectorViewDefinition) ImmutableCollectors.toImmutableList(com.facebook.presto.util.ImmutableCollectors.toImmutableList) List(java.util.List) ArrayList(java.util.ArrayList) ImmutableList(com.google.common.collect.ImmutableList) ConnectorSession(com.facebook.presto.spi.ConnectorSession) ConnectorMetadata(com.facebook.presto.spi.connector.ConnectorMetadata) ConnectorId(com.facebook.presto.connector.ConnectorId)

Example 8 with SchemaTablePrefix

use of com.facebook.presto.spi.SchemaTablePrefix in project presto by prestodb.

the class AbstractTestHiveClient method testHiveViewsHaveNoColumns.

@Test
public void testHiveViewsHaveNoColumns() throws Exception {
    try (Transaction transaction = newTransaction()) {
        ConnectorMetadata metadata = transaction.getMetadata();
        assertEquals(metadata.listTableColumns(newSession(), new SchemaTablePrefix(view.getSchemaName(), view.getTableName())), ImmutableMap.of());
    }
}
Also used : SchemaTablePrefix(com.facebook.presto.spi.SchemaTablePrefix) ConnectorMetadata(com.facebook.presto.spi.connector.ConnectorMetadata) Test(org.testng.annotations.Test)

Example 9 with SchemaTablePrefix

use of com.facebook.presto.spi.SchemaTablePrefix in project presto by prestodb.

the class AbstractTestHiveClient method testListUnknownSchema.

@Test
public void testListUnknownSchema() {
    try (Transaction transaction = newTransaction()) {
        ConnectorMetadata metadata = transaction.getMetadata();
        ConnectorSession session = newSession();
        assertNull(metadata.getTableHandle(session, new SchemaTableName(INVALID_DATABASE, INVALID_TABLE)));
        assertEquals(metadata.listTables(session, INVALID_DATABASE), ImmutableList.of());
        assertEquals(metadata.listTableColumns(session, new SchemaTablePrefix(INVALID_DATABASE, INVALID_TABLE)), ImmutableMap.of());
        assertEquals(metadata.listViews(session, INVALID_DATABASE), ImmutableList.of());
        assertEquals(metadata.getViews(session, new SchemaTablePrefix(INVALID_DATABASE, INVALID_TABLE)), ImmutableMap.of());
    }
}
Also used : SchemaTablePrefix(com.facebook.presto.spi.SchemaTablePrefix) ConnectorSession(com.facebook.presto.spi.ConnectorSession) TestingConnectorSession(com.facebook.presto.testing.TestingConnectorSession) ConnectorMetadata(com.facebook.presto.spi.connector.ConnectorMetadata) SchemaTableName(com.facebook.presto.spi.SchemaTableName) Test(org.testng.annotations.Test)

Aggregations

SchemaTablePrefix (com.facebook.presto.spi.SchemaTablePrefix)9 SchemaTableName (com.facebook.presto.spi.SchemaTableName)8 Test (org.testng.annotations.Test)7 ConnectorMetadata (com.facebook.presto.spi.connector.ConnectorMetadata)6 ImmutableList (com.google.common.collect.ImmutableList)5 List (java.util.List)5 ConnectorSession (com.facebook.presto.spi.ConnectorSession)3 ConnectorViewDefinition (com.facebook.presto.spi.ConnectorViewDefinition)3 ConnectorId (com.facebook.presto.connector.ConnectorId)2 QualifiedObjectName.convertFromSchemaTableName (com.facebook.presto.metadata.QualifiedObjectName.convertFromSchemaTableName)2 Lists.newArrayList (com.google.common.collect.Lists.newArrayList)2 LinkedHashMap (java.util.LinkedHashMap)2 Collectors.toList (java.util.stream.Collectors.toList)2 ViewColumn (com.facebook.presto.metadata.ViewDefinition.ViewColumn)1 ColumnMetadata (com.facebook.presto.spi.ColumnMetadata)1 TestingConnectorSession (com.facebook.presto.testing.TestingConnectorSession)1 ImmutableCollectors.toImmutableList (com.facebook.presto.util.ImmutableCollectors.toImmutableList)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1