Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
import static com.facebook.presto.spi.StandardErrorCode.NOT_SUPPORTED;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import static com.google.common.collect.ImmutableList.toImmutableList;
import static java.lang.String.format;
import static java.util.Objects.requireNonNull;

Expand Down Expand Up @@ -282,7 +283,7 @@ public ConnectorTableMetadata getTableMetadata(ConnectorSession session, Connect
AccumuloTableHandle handle = (AccumuloTableHandle) table;
checkArgument(handle.getConnectorId().equals(connectorId), "table is not for this connector");
SchemaTableName tableName = new SchemaTableName(handle.getSchema(), handle.getTable());
ConnectorTableMetadata metadata = getTableMetadata(tableName);
ConnectorTableMetadata metadata = getTableMetadata(session, tableName);
if (metadata == null) {
throw new TableNotFoundException(tableName);
}
Expand Down Expand Up @@ -353,7 +354,7 @@ public Map<SchemaTableName, List<ColumnMetadata>> listTableColumns(ConnectorSess
requireNonNull(prefix, "prefix is null");
ImmutableMap.Builder<SchemaTableName, List<ColumnMetadata>> columns = ImmutableMap.builder();
for (SchemaTableName tableName : listTables(session, prefix)) {
ConnectorTableMetadata tableMetadata = getTableMetadata(tableName);
ConnectorTableMetadata tableMetadata = getTableMetadata(session, tableName);
// table can disappear during listing operation
if (tableMetadata != null) {
columns.put(tableName, tableMetadata.getColumns());
Expand Down Expand Up @@ -385,7 +386,7 @@ public void rollback()
}
}

private ConnectorTableMetadata getTableMetadata(SchemaTableName tableName)
private ConnectorTableMetadata getTableMetadata(ConnectorSession session, SchemaTableName tableName)
{
if (!client.getSchemaNames().contains(tableName.getSchemaName())) {
return null;
Expand All @@ -398,7 +399,13 @@ private ConnectorTableMetadata getTableMetadata(SchemaTableName tableName)
return null;
}

return new ConnectorTableMetadata(tableName, table.getColumnsMetadata());
List<ColumnMetadata> columns = table.getColumnsMetadata().stream()
.map(column -> column.toBuilder()
.setName(normalizeIdentifier(session, column.getName()))
.build())
.collect(toImmutableList());

return new ConnectorTableMetadata(tableName, columns);
}

return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public ConnectorTableMetadata getTableMetadata(ConnectorSession session, Connect
ImmutableList.Builder<ColumnMetadata> columns = ImmutableList.builder();
for (AtopColumn column : atopTableHandle.getTable().getColumns()) {
columns.add(ColumnMetadata.builder()
.setName(column.getName())
.setName(normalizeIdentifier(session, column.getName()))
.setType(typeManager.getType(column.getType()))
.build());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ public ConnectorTableMetadata getTableMetadata(ConnectorSession session, Connect
for (Field field : columnList) {
String columnName = field.getName();
Type fieldType = getPrestoTypeFromArrowField(field);
meta.add(ColumnMetadata.builder().setName(columnName).setType(fieldType).build());
meta.add(ColumnMetadata.builder().setName(normalizeIdentifier(session, columnName)).setType(fieldType).build());
}
return new ConnectorTableMetadata(new SchemaTableName(((ArrowTableHandle) table).getSchema(), ((ArrowTableHandle) table).getTable()), meta);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@
import com.facebook.presto.spi.ColumnMetadata;
import org.testng.annotations.Test;

import java.util.Locale;

import static com.facebook.presto.testing.assertions.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;

Expand Down Expand Up @@ -67,7 +65,7 @@ public void testGetColumnMetadata()

// Then
assertNotNull(columnMetadata, "ColumnMetadata should not be null");
assertEquals(columnMetadata.getName(), columnName.toLowerCase(Locale.ENGLISH), "ColumnMetadata name should match the column name");
assertEquals(columnMetadata.getName(), columnName, "ColumnMetadata name should match the column name");
assertEquals(columnMetadata.getType(), IntegerType.INTEGER, "ColumnMetadata type should match the column type");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.facebook.presto.common.type.Type;
import com.facebook.presto.spi.ColumnHandle;
import com.facebook.presto.spi.ColumnMetadata;
import com.facebook.presto.spi.ConnectorSession;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

Expand Down Expand Up @@ -98,6 +99,16 @@ public ColumnMetadata getColumnMetadata()
.build();
}

public ColumnMetadata getColumnMetadata(ConnectorSession session, JdbcClient jdbcClient)
{
return ColumnMetadata.builder()
.setName(jdbcClient.normalizeIdentifier(session, columnName))
.setType(columnType)
.setNullable(nullable)
.setComment(comment.orElse(null))
.build();
}

@Override
public boolean equals(Object obj)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public ConnectorTableMetadata getTableMetadata(ConnectorSession session, Connect

ImmutableList.Builder<ColumnMetadata> columnMetadata = ImmutableList.builder();
for (JdbcColumnHandle column : jdbcMetadataCache.getColumns(session, handle)) {
columnMetadata.add(column.getColumnMetadata());
columnMetadata.add(column.getColumnMetadata(session, jdbcClient));
}
return new ConnectorTableMetadata(handle.getSchemaTableName(), columnMetadata.build());
}
Expand All @@ -122,7 +122,7 @@ public Map<String, ColumnHandle> getColumnHandles(ConnectorSession session, Conn

ImmutableMap.Builder<String, ColumnHandle> columnHandles = ImmutableMap.builder();
for (JdbcColumnHandle column : jdbcMetadataCache.getColumns(session, jdbcTableHandle)) {
columnHandles.put(column.getColumnMetadata().getName(), column);
columnHandles.put(column.getColumnMetadata(session, jdbcClient).getName(), column);
}
return columnHandles.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public Map<String, JdbcColumnHandle> getColumnHandles(String schemaName, String

ImmutableMap.Builder<String, JdbcColumnHandle> columnHandles = ImmutableMap.builder();
for (JdbcColumnHandle column : columns) {
columnHandles.put(column.getColumnMetadata().getName(), column);
columnHandles.put(column.getColumnMetadata(session, jdbcClient).getName(), column);
}
return columnHandles.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
import java.util.Set;

import static com.facebook.presto.plugin.bigquery.BigQueryErrorCode.BIGQUERY_TABLE_DISAPPEAR_DURING_LIST;
import static com.facebook.presto.plugin.bigquery.Conversions.toColumnMetadata;
import static com.google.cloud.bigquery.TableDefinition.Type.TABLE;
import static com.google.cloud.bigquery.TableDefinition.Type.VIEW;
import static com.google.common.collect.ImmutableList.toImmutableList;
Expand Down Expand Up @@ -179,7 +180,7 @@ public ConnectorTableMetadata getTableMetadata(ConnectorSession session, Connect
List<ColumnMetadata> columns = schema == null ?
ImmutableList.of() :
schema.getFields().stream()
.map(Conversions::toColumnMetadata)
.map(field -> toColumnMetadata(field, normalizeIdentifier(session, field.getName())))
.collect(toImmutableList());
return new ConnectorTableMetadata(schemaTableName, columns);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ static BigQueryColumnHandle toColumnHandle(Field field)
field.getDescription());
}

static ColumnMetadata toColumnMetadata(Field field)
static ColumnMetadata toColumnMetadata(Field field, String name)
{
return ColumnMetadata.builder()
.setName(field.getName())
.setName(name)
.setType(adapt(field).getPrestoType())
.setNullable(getMode(field) == NULLABLE)
.setComment(field.getDescription())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ public void testConvertOneLevelRecordField()
RECORD,
Field.of("sub_s", STRING),
Field.of("sub_i", INTEGER));
ColumnMetadata metadata = Conversions.toColumnMetadata(field);
ColumnMetadata metadata = Conversions.toColumnMetadata(field, field.getName());
RowType targetType = RowType.from(ImmutableList.of(
RowType.field("sub_s", VarcharType.VARCHAR),
RowType.field("sub_i", BigintType.BIGINT)));
Expand All @@ -152,7 +152,7 @@ public void testConvertTwoLevelsRecordField()
Field.of("sub_sub_i", INTEGER)),
Field.of("sub_s", STRING),
Field.of("sub_i", INTEGER));
ColumnMetadata metadata = Conversions.toColumnMetadata(field);
ColumnMetadata metadata = Conversions.toColumnMetadata(field, field.getName());
RowType targetType = RowType.from(ImmutableList.of(
RowType.field("sub_rec", RowType.from(ImmutableList.of(
RowType.field("sub_sub_s", VarcharType.VARCHAR),
Expand All @@ -168,13 +168,13 @@ public void testConvertStringArrayField()
Field field = Field.newBuilder("test", STRING)
.setMode(REPEATED)
.build();
ColumnMetadata metadata = Conversions.toColumnMetadata(field);
ColumnMetadata metadata = Conversions.toColumnMetadata(field, field.getName());
assertThat(metadata.getType()).isEqualTo(new ArrayType(VarcharType.VARCHAR));
}

void assertSimpleFieldTypeConversion(LegacySQLTypeName from, Type to)
{
ColumnMetadata metadata = Conversions.toColumnMetadata(createField(from));
ColumnMetadata metadata = Conversions.toColumnMetadata(createField(from), createField(from).getName());
assertThat(metadata.getType()).isEqualTo(to);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,14 @@ public ColumnMetadata toColumnMetadata()
.build();
}

public ColumnMetadata toColumnMetadata(String name)
{
return ColumnMetadata.builder()
.setName(name)
.setType(columnType)
.build();
}

@Override
public int hashCode()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
import static com.facebook.presto.plugin.blackhole.BlackHoleConnector.SPLIT_COUNT_PROPERTY;
import static com.facebook.presto.spi.StandardErrorCode.ALREADY_EXISTS;
import static com.facebook.presto.spi.StandardErrorCode.INVALID_TABLE_PROPERTY;
import static com.google.common.collect.ImmutableList.toImmutableList;
import static java.lang.String.format;
import static java.util.stream.Collectors.toList;
import static java.util.stream.Collectors.toMap;
Expand Down Expand Up @@ -97,7 +98,16 @@ public ConnectorTableHandle getTableHandle(ConnectorSession session, SchemaTable
public ConnectorTableMetadata getTableMetadata(ConnectorSession session, ConnectorTableHandle tableHandle)
{
BlackHoleTableHandle blackHoleTableHandle = (BlackHoleTableHandle) tableHandle;
return blackHoleTableHandle.toTableMetadata();
return toTableMetadata(blackHoleTableHandle, session);
}

public ConnectorTableMetadata toTableMetadata(BlackHoleTableHandle blackHoleTableHandle, ConnectorSession session)
{
List<ColumnMetadata> columns = blackHoleTableHandle.getColumnHandles().stream()
.map(column -> column.toColumnMetadata(normalizeIdentifier(session, column.getName())))
.collect(toImmutableList());

return new ConnectorTableMetadata(blackHoleTableHandle.toSchemaTableName(), columns);
}

@Override
Expand Down Expand Up @@ -129,7 +139,7 @@ public Map<SchemaTableName, List<ColumnMetadata>> listTableColumns(ConnectorSess
{
return tables.values().stream()
.filter(table -> prefix.matches(table.toSchemaTableName()))
.collect(toMap(BlackHoleTableHandle::toSchemaTableName, handle -> handle.toTableMetadata().getColumns()));
.collect(toMap(BlackHoleTableHandle::toSchemaTableName, handle -> toTableMetadata(handle, session).getColumns()));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,13 +126,6 @@ public Duration getPageProcessingDelay()
return pageProcessingDelay;
}

public ConnectorTableMetadata toTableMetadata()
{
return new ConnectorTableMetadata(
toSchemaTableName(),
columnHandles.stream().map(BlackHoleColumnHandle::toColumnMetadata).collect(toList()));
}

public SchemaTableName toSchemaTableName()
{
return new SchemaTableName(schemaName, tableName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,15 @@ public ColumnMetadata getColumnMetadata()
.build();
}

public ColumnMetadata getColumnMetadata(String name)
{
return ColumnMetadata.builder()
.setName(name)
.setType(cassandraType.getNativeType())
.setHidden(hidden)
.build();
}

public Type getType()
{
return cassandraType.getNativeType();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
import java.util.stream.Collectors;

import static com.facebook.presto.cassandra.CassandraType.toCassandraType;
import static com.facebook.presto.cassandra.util.CassandraCqlUtils.cqlNameToSqlName;
import static com.facebook.presto.cassandra.util.CassandraCqlUtils.validSchemaName;
import static com.facebook.presto.cassandra.util.CassandraCqlUtils.validTableName;
import static com.facebook.presto.spi.StandardErrorCode.NOT_SUPPORTED;
Expand All @@ -62,7 +63,6 @@
import static com.google.common.collect.ImmutableList.toImmutableList;
import static java.util.Locale.ENGLISH;
import static java.util.Objects.requireNonNull;
import static java.util.stream.Collectors.toList;

public class CassandraMetadata
implements ConnectorMetadata
Expand Down Expand Up @@ -121,15 +121,15 @@ private static SchemaTableName getTableName(ConnectorTableHandle tableHandle)
public ConnectorTableMetadata getTableMetadata(ConnectorSession session, ConnectorTableHandle tableHandle)
{
requireNonNull(tableHandle, "tableHandle is null");
return getTableMetadata(getTableName(tableHandle));
return getTableMetadata(session, getTableName(tableHandle));
}

private ConnectorTableMetadata getTableMetadata(SchemaTableName tableName)
private ConnectorTableMetadata getTableMetadata(ConnectorSession session, SchemaTableName tableName)
{
CassandraTable table = cassandraSession.getTable(tableName);
List<ColumnMetadata> columns = table.getColumns().stream()
.map(CassandraColumnHandle::getColumnMetadata)
.collect(toList());
.map(column -> column.getColumnMetadata(normalizeIdentifier(session, cqlNameToSqlName(column.getName()))))
.collect(toImmutableList());
return new ConnectorTableMetadata(tableName, columns);
}

Expand Down Expand Up @@ -178,7 +178,7 @@ public Map<SchemaTableName, List<ColumnMetadata>> listTableColumns(ConnectorSess
ImmutableMap.Builder<SchemaTableName, List<ColumnMetadata>> columns = ImmutableMap.builder();
for (SchemaTableName tableName : listTables(session, prefix)) {
try {
columns.put(tableName, getTableMetadata(tableName).getColumns());
columns.put(tableName, getTableMetadata(session, tableName).getColumns());
}
catch (NotFoundException e) {
// table disappeared during listing operation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,17 @@ public ColumnMetadata getColumnMetadata()
.build();
}

public ColumnMetadata getColumnMetadata(String name)
{
return ColumnMetadata.builder()
.setName(name)
.setType(columnType)
.setNullable(nullable)
.setHidden(false)
.setProperties(emptyMap())
.build();
}

@Override
public boolean equals(Object obj)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public ConnectorTableMetadata getTableMetadata(ConnectorSession session, Connect

ImmutableList.Builder<ColumnMetadata> columnMetadata = ImmutableList.builder();
for (ClickHouseColumnHandle column : clickHouseClient.getColumns(session, handle)) {
columnMetadata.add(column.getColumnMetadata());
columnMetadata.add(column.getColumnMetadata(normalizeIdentifier(session, column.getColumnName())));
}
return new ConnectorTableMetadata(handle.getSchemaTableName(), columnMetadata.build());
}
Expand All @@ -122,7 +122,7 @@ public Map<String, ColumnHandle> getColumnHandles(ConnectorSession session, Conn

ImmutableMap.Builder<String, ColumnHandle> columnHandles = ImmutableMap.builder();
for (ClickHouseColumnHandle column : clickHouseClient.getColumns(session, clickHouseTableHandle)) {
columnHandles.put(column.getColumnMetadata().getName(), column);
columnHandles.put(normalizeIdentifier(session, column.getColumnMetadata(column.getColumnName()).getName()), column);
}
return columnHandles.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ private ConnectorTableMetadata getTableMetadata(ConnectorSession session, Schema
}

List<ColumnMetadata> columnMetadata = tableHandle.getDeltaTable().getColumns().stream()
.map(this::getColumnMetadata)
.map(column -> getColumnMetadata(session, column))
.collect(Collectors.toList());

return new ConnectorTableMetadata(tableName, columnMetadata);
Expand Down Expand Up @@ -362,10 +362,10 @@ private List<SchemaTableName> listTables(ConnectorSession session, SchemaTablePr
return ImmutableList.of(new SchemaTableName(prefix.getSchemaName(), prefix.getTableName()));
}

private ColumnMetadata getColumnMetadata(DeltaColumn deltaColumn)
private ColumnMetadata getColumnMetadata(ConnectorSession session, DeltaColumn deltaColumn)
{
return ColumnMetadata.builder()
.setName(deltaColumn.getName())
.setName(normalizeIdentifier(session, deltaColumn.getName()))
.setType(typeManager.getType(deltaColumn.getType()))
.build();
}
Expand Down
4 changes: 4 additions & 0 deletions presto-docs/src/main/sphinx/connector/hana.rst
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ Property Name Description
cached. Set to ``0ms`` to disable the cache. ``1m``

``list-schemas-ignored-schemas`` List of schemas to ignore when listing schemas. ``information_schema``

``case-sensitive-name-matching`` Enable case sensitive identifier support for schema and table ``false``
names for the connector. When disabled, names are matched
case-insensitively using lowercase normalization.
================================================== ==================================================================== ===========

Querying HANA
Expand Down
Loading
Loading