Skip to content

Commit

Permalink
Use explicit Optional in ConnectorMetadata
Browse files Browse the repository at this point in the history
  • Loading branch information
kokosing committed Jul 18, 2018
1 parent 32647ae commit d7616bd
Show file tree
Hide file tree
Showing 11 changed files with 66 additions and 29 deletions.
Expand Up @@ -25,6 +25,8 @@
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import java.util.Optional;

import static com.facebook.presto.plugin.jdbc.TestingDatabase.CONNECTOR_ID;
import static com.facebook.presto.plugin.jdbc.TestingJdbcTypeHandle.JDBC_BIGINT;
import static com.facebook.presto.plugin.jdbc.TestingJdbcTypeHandle.JDBC_VARCHAR;
Expand Down Expand Up @@ -141,7 +143,7 @@ private void unknownTableMetadata(JdbcTableHandle tableHandle)
public void testListTables()
{
// all schemas
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, null)), ImmutableSet.of(
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, Optional.empty())), ImmutableSet.of(
new SchemaTableName("example", "numbers"),
new SchemaTableName("example", "view_source"),
new SchemaTableName("example", "view"),
Expand All @@ -151,19 +153,19 @@ public void testListTables()
new SchemaTableName("exa_ple", "num_ers")));

// specific schema
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, "example")), ImmutableSet.of(
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, Optional.of("example"))), ImmutableSet.of(
new SchemaTableName("example", "numbers"),
new SchemaTableName("example", "view_source"),
new SchemaTableName("example", "view")));
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, "tpch")), ImmutableSet.of(
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, Optional.of("tpch"))), ImmutableSet.of(
new SchemaTableName("tpch", "orders"),
new SchemaTableName("tpch", "lineitem")));
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, "exa_ple")), ImmutableSet.of(
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, Optional.of("exa_ple"))), ImmutableSet.of(
new SchemaTableName("exa_ple", "num_ers"),
new SchemaTableName("exa_ple", "table_with_float_col")));

// unknown schema
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, "unknown")), ImmutableSet.of());
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, Optional.of("unknown"))), ImmutableSet.of());
}

@Test
Expand Down
Expand Up @@ -67,7 +67,7 @@ public void tableIsCreatedAfterCommits()

metadata.finishCreateTable(SESSION, table, ImmutableList.of());

List<SchemaTableName> tables = metadata.listTables(SESSION, null);
List<SchemaTableName> tables = metadata.listTables(SESSION, Optional.empty());
assertTrue(tables.size() == 1, "Expected only one table.");
assertTrue(tables.get(0).getTableName().equals("temp_table"), "Expected table with name 'temp_table'");
}
Expand All @@ -88,6 +88,6 @@ public void testCreateTableInNotExistSchema()

private void assertThatNoTableIsCreated()
{
assertEquals(metadata.listTables(SESSION, null), ImmutableList.of(), "No table was expected");
assertEquals(metadata.listTables(SESSION, Optional.empty()), ImmutableList.of(), "No table was expected");
}
}
Expand Up @@ -26,6 +26,7 @@
import org.testng.annotations.Test;

import java.net.URL;
import java.util.Optional;

import static com.facebook.presto.example.MetadataUtil.CATALOG_CODEC;
import static com.facebook.presto.spi.type.BigintType.BIGINT;
Expand Down Expand Up @@ -111,20 +112,20 @@ public void getTableMetadata()
public void testListTables()
{
// all schemas
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, null)), ImmutableSet.of(
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, Optional.empty())), ImmutableSet.of(
new SchemaTableName("example", "numbers"),
new SchemaTableName("tpch", "orders"),
new SchemaTableName("tpch", "lineitem")));

// specific schema
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, "example")), ImmutableSet.of(
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, Optional.of("example"))), ImmutableSet.of(
new SchemaTableName("example", "numbers")));
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, "tpch")), ImmutableSet.of(
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, Optional.of("tpch"))), ImmutableSet.of(
new SchemaTableName("tpch", "orders"),
new SchemaTableName("tpch", "lineitem")));

// unknown schema
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, "unknown")), ImmutableSet.of());
assertEquals(ImmutableSet.copyOf(metadata.listTables(SESSION, Optional.of("unknown"))), ImmutableSet.of());
}

@Test
Expand Down
Expand Up @@ -915,7 +915,7 @@ public void testGetAllTableNames()
{
try (Transaction transaction = newTransaction()) {
ConnectorMetadata metadata = transaction.getMetadata();
List<SchemaTableName> tables = metadata.listTables(newSession(), null);
List<SchemaTableName> tables = metadata.listTables(newSession(), Optional.empty());
assertTrue(tables.contains(tablePartitionFormat));
assertTrue(tables.contains(tableUnpartitioned));
}
Expand Down
Expand Up @@ -102,7 +102,7 @@ public ConnectorTableMetadata getTableMetadata(ConnectorSession session, Connect
}

@Override
public List<SchemaTableName> listTables(ConnectorSession session, String schemaNameOrNull)
public List<SchemaTableName> listTables(ConnectorSession session, Optional<String> schemaName)
{
return ImmutableList.of();
}
Expand Down
Expand Up @@ -425,11 +425,10 @@ public List<QualifiedObjectName> listTables(Session session, QualifiedTablePrefi
if (catalog.isPresent()) {
CatalogMetadata catalogMetadata = catalog.get();

String schemaNameOrNull = prefix.getSchemaName().orElse(null);
for (ConnectorId connectorId : catalogMetadata.listConnectorIds()) {
ConnectorMetadata metadata = catalogMetadata.getMetadataFor(connectorId);
ConnectorSession connectorSession = session.toConnectorSession(connectorId);
metadata.listTables(connectorSession, schemaNameOrNull).stream()
metadata.listTables(connectorSession, prefix.getSchemaName()).stream()
.map(convertFromSchemaTableName(prefix.getCatalogName()))
.filter(prefix::matches)
.forEach(tables::add);
Expand Down Expand Up @@ -756,11 +755,10 @@ public List<QualifiedObjectName> listViews(Session session, QualifiedTablePrefix
if (catalog.isPresent()) {
CatalogMetadata catalogMetadata = catalog.get();

String schemaNameOrNull = prefix.getSchemaName().orElse(null);
for (ConnectorId connectorId : catalogMetadata.listConnectorIds()) {
ConnectorMetadata metadata = catalogMetadata.getMetadataFor(connectorId);
ConnectorSession connectorSession = session.toConnectorSession(connectorId);
metadata.listViews(connectorSession, schemaNameOrNull).stream()
metadata.listViews(connectorSession, prefix.getSchemaName()).stream()
.map(convertFromSchemaTableName(prefix.getCatalogName()))
.filter(prefix::matches)
.forEach(views::add);
Expand Down
Expand Up @@ -143,11 +143,11 @@ public ColumnMetadata getColumnMetadata(ConnectorSession session, ConnectorTable
}

@Override
public List<SchemaTableName> listTables(ConnectorSession session, String schemaNameOrNull)
public List<SchemaTableName> listTables(ConnectorSession session, Optional<String> schemaName)
{
ImmutableList.Builder<SchemaTableName> builder = ImmutableList.builder();
for (SchemaTableName tableName : tables.keySet()) {
if (schemaNameOrNull == null || schemaNameOrNull.equals(tableName.getSchemaName())) {
if (schemaName.map(tableName.getSchemaName()::equals).orElse(true)) {
builder.add(tableName);
}
}
Expand Down Expand Up @@ -200,11 +200,11 @@ public void dropView(ConnectorSession session, SchemaTableName viewName)
}

@Override
public List<SchemaTableName> listViews(ConnectorSession session, String schemaNameOrNull)
public List<SchemaTableName> listViews(ConnectorSession session, Optional<String> schemaName)
{
ImmutableList.Builder<SchemaTableName> builder = ImmutableList.builder();
for (SchemaTableName viewName : views.keySet()) {
if ((schemaNameOrNull == null) || schemaNameOrNull.equals(viewName.getSchemaName())) {
if (schemaName.map(viewName.getSchemaName()::equals).orElse(true)) {
builder.add(viewName);
}
}
Expand Down
Expand Up @@ -71,7 +71,7 @@ public void tableIsCreatedAfterCommits()

metadata.finishCreateTable(SESSION, table, ImmutableList.of());

List<SchemaTableName> tables = metadata.listTables(SESSION, null);
List<SchemaTableName> tables = metadata.listTables(SESSION, Optional.empty());
assertTrue(tables.size() == 1, "Expected only one table");
assertTrue(tables.get(0).getTableName().equals("temp_table"), "Expected table with name 'temp_table'");
}
Expand Down Expand Up @@ -143,7 +143,7 @@ public void testReadTableBeforeCreationCompleted()
new ConnectorTableMetadata(tableName, ImmutableList.of(), ImmutableMap.of()),
Optional.empty());

List<SchemaTableName> tableNames = metadata.listTables(SESSION, null);
List<SchemaTableName> tableNames = metadata.listTables(SESSION, Optional.empty());
assertTrue(tableNames.size() == 1, "Expected exactly one table");

ConnectorTableHandle tableHandle = metadata.getTableHandle(SESSION, tableName);
Expand Down Expand Up @@ -174,9 +174,9 @@ public void testCreateSchema()
ImmutableMap.of()),
false);

assertEquals(metadata.listTables(SESSION, null), ImmutableList.of(tableName));
assertEquals(metadata.listTables(SESSION, "test"), ImmutableList.of(tableName));
assertEquals(metadata.listTables(SESSION, "default"), ImmutableList.of());
assertEquals(metadata.listTables(SESSION, Optional.empty()), ImmutableList.of(tableName));
assertEquals(metadata.listTables(SESSION, Optional.of("test")), ImmutableList.of(tableName));
assertEquals(metadata.listTables(SESSION, Optional.of("default")), ImmutableList.of());
}

@Test(expectedExceptions = PrestoException.class, expectedExceptionsMessageRegExp = "View already exists: test\\.test_view")
Expand Down Expand Up @@ -334,6 +334,6 @@ public void testRenameTable()

private void assertNoTables()
{
assertEquals(metadata.listTables(SESSION, null), ImmutableList.of(), "No table was expected");
assertEquals(metadata.listTables(SESSION, Optional.empty()), ImmutableList.of(), "No table was expected");
}
}
Expand Up @@ -565,7 +565,7 @@ public void testTemporalColumn()
public void testListTables()
{
metadata.createTable(SESSION, getOrdersTable(), false);
List<SchemaTableName> tables = metadata.listTables(SESSION, null);
List<SchemaTableName> tables = metadata.listTables(SESSION, Optional.empty());
assertEquals(tables, ImmutableList.of(DEFAULT_TEST_ORDERS));
}

Expand Down
Expand Up @@ -118,8 +118,21 @@ default Optional<Object> getInfo(ConnectorTableLayoutHandle layoutHandle)

/**
* List table names, possibly filtered by schema. An empty list is returned if none match.
* @deprecated replaced by {@link ConnectorMetadata#listTables(ConnectorSession, Optional)}
*/
List<SchemaTableName> listTables(ConnectorSession session, String schemaNameOrNull);
@Deprecated
default List<SchemaTableName> listTables(ConnectorSession session, String schemaNameOrNull)
{
return emptyList();
}

/**
* List table names, possibly filtered by schema. An empty list is returned if none match.
*/
default List<SchemaTableName> listTables(ConnectorSession session, Optional<String> schemaName)
{
return listTables(session, schemaName.orElse(null));
}

/**
* Gets all of the columns on the specified table, or an empty map if the columns can not be enumerated.
Expand Down Expand Up @@ -353,12 +366,19 @@ default void dropView(ConnectorSession session, SchemaTableName viewName)

/**
* List view names, possibly filtered by schema. An empty list is returned if none match.
* @deprecated replaced by {@link ConnectorMetadata#listViews(ConnectorSession, Optional)}
*/
@Deprecated
default List<SchemaTableName> listViews(ConnectorSession session, String schemaNameOrNull)
{
return emptyList();
}

default List<SchemaTableName> listViews(ConnectorSession session, Optional<String> schemaName)
{
return listViews(session, schemaName.orElse(null));
}

/**
* Gets the view data for views that match the specified table prefix.
*/
Expand Down
Expand Up @@ -146,6 +146,14 @@ public Optional<Object> getInfo(ConnectorTableLayoutHandle table)
}
}

@Override
public List<SchemaTableName> listTables(ConnectorSession session, Optional<String> schemaName)
{
try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
return delegate.listTables(session, schemaName);
}
}

@Override
public List<SchemaTableName> listTables(ConnectorSession session, String schemaNameOrNull)
{
Expand Down Expand Up @@ -322,6 +330,14 @@ public void dropView(ConnectorSession session, SchemaTableName viewName)
}
}

@Override
public List<SchemaTableName> listViews(ConnectorSession session, Optional<String> schemaName)
{
try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) {
return delegate.listViews(session, schemaName);
}
}

@Override
public List<SchemaTableName> listViews(ConnectorSession session, String schemaNameOrNull)
{
Expand Down

0 comments on commit d7616bd

Please sign in to comment.