diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftColumnHandle.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftColumnHandle.java index 3e9d1779aa71..37b5c583b98f 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftColumnHandle.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftColumnHandle.java @@ -13,67 +13,21 @@ */ package io.trino.plugin.thrift; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; import io.trino.spi.connector.ColumnHandle; import io.trino.spi.connector.ColumnMetadata; import io.trino.spi.type.Type; -import jakarta.annotation.Nullable; -import java.util.Objects; import java.util.Optional; import static java.util.Objects.requireNonNull; -public final class ThriftColumnHandle +public record ThriftColumnHandle(String columnName, Type columnType, String comment, boolean hidden) implements ColumnHandle { - private final String columnName; - private final Type columnType; - private final String comment; - private final boolean hidden; - - @JsonCreator - public ThriftColumnHandle( - @JsonProperty("columnName") String columnName, - @JsonProperty("columnType") Type columnType, - @JsonProperty("comment") @Nullable String comment, - @JsonProperty("hidden") boolean hidden) - { - this.columnName = requireNonNull(columnName, "columnName is null"); - this.columnType = requireNonNull(columnType, "columnType is null"); - this.comment = comment; - this.hidden = hidden; - } - - public ThriftColumnHandle(ColumnMetadata columnMetadata) + public ThriftColumnHandle { - this(columnMetadata.getName(), columnMetadata.getType(), columnMetadata.getComment(), columnMetadata.isHidden()); - } - - @JsonProperty - public String getColumnName() - { - return columnName; - } - - @JsonProperty - public Type getColumnType() - { - return columnType; - } - - @Nullable - @JsonProperty - public String getComment() - { - return comment; - } - - @JsonProperty - public boolean isHidden() - { - return hidden; + requireNonNull(columnName, "columnName is null"); + requireNonNull(columnType, "columnType is null"); } public ColumnMetadata toColumnMetadata() @@ -86,26 +40,9 @@ public ColumnMetadata toColumnMetadata() .build(); } - @Override - public boolean equals(Object obj) - { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - ThriftColumnHandle other = (ThriftColumnHandle) obj; - return Objects.equals(this.columnName, other.columnName) && - Objects.equals(this.columnType, other.columnType) && - Objects.equals(this.comment, other.comment) && - this.hidden == other.hidden; - } - - @Override - public int hashCode() + public static ThriftColumnHandle toColumnHandle(ColumnMetadata columnMetadata) { - return Objects.hash(columnName, columnType, comment, hidden); + return new ThriftColumnHandle(columnMetadata.getName(), columnMetadata.getType(), columnMetadata.getComment(), columnMetadata.isHidden()); } @Override diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorSplit.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorSplit.java index a9d320c5c271..c669de256104 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorSplit.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorSplit.java @@ -13,7 +13,6 @@ */ package io.trino.plugin.thrift; -import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.collect.ImmutableList; import io.trino.plugin.thrift.api.TrinoThriftId; @@ -21,35 +20,20 @@ import io.trino.spi.connector.ConnectorSplit; import java.util.List; -import java.util.Objects; -import static com.google.common.base.MoreObjects.toStringHelper; import static io.airlift.slice.SizeOf.estimatedSizeOf; import static io.airlift.slice.SizeOf.instanceSize; import static java.util.Objects.requireNonNull; -import static java.util.stream.Collectors.joining; -public class ThriftConnectorSplit +public record ThriftConnectorSplit(TrinoThriftId splitId, List addresses) implements ConnectorSplit { private static final int INSTANCE_SIZE = instanceSize(ThriftConnectorSplit.class); - private final TrinoThriftId splitId; - private final List addresses; - - @JsonCreator - public ThriftConnectorSplit( - @JsonProperty("splitId") TrinoThriftId splitId, - @JsonProperty("addresses") List addresses) - { - this.splitId = requireNonNull(splitId, "splitId is null"); - this.addresses = ImmutableList.copyOf(requireNonNull(addresses, "addresses is null")); - } - - @JsonProperty - public TrinoThriftId getSplitId() + public ThriftConnectorSplit { - return splitId; + requireNonNull(splitId, "splitId is null"); + addresses = ImmutableList.copyOf(addresses); } @Override @@ -66,33 +50,4 @@ public long getRetainedSizeInBytes() + splitId.getRetainedSizeInBytes() + estimatedSizeOf(addresses, HostAddress::getRetainedSizeInBytes); } - - @Override - public boolean equals(Object obj) - { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - ThriftConnectorSplit other = (ThriftConnectorSplit) obj; - return Objects.equals(this.splitId, other.splitId) && - Objects.equals(this.addresses, other.addresses); - } - - @Override - public int hashCode() - { - return Objects.hash(splitId, addresses); - } - - @Override - public String toString() - { - return toStringHelper(this) - .add("splitId", splitId) - .add("addresses", addresses.stream().map(HostAddress::toString).collect(joining(","))) - .toString(); - } } diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftIndexHandle.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftIndexHandle.java index 995e48bdac35..4b89b404aa77 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftIndexHandle.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftIndexHandle.java @@ -13,63 +13,21 @@ */ package io.trino.plugin.thrift; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; import io.trino.spi.connector.ColumnHandle; import io.trino.spi.connector.ConnectorIndexHandle; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.predicate.TupleDomain; -import java.util.Objects; - import static java.lang.String.format; import static java.util.Objects.requireNonNull; -public class ThriftIndexHandle +public record ThriftIndexHandle(SchemaTableName schemaTableName, TupleDomain tupleDomain) implements ConnectorIndexHandle { - private final SchemaTableName schemaTableName; - private final TupleDomain tupleDomain; - - @JsonCreator - public ThriftIndexHandle( - @JsonProperty("schemaTableName") SchemaTableName schemaTableName, - @JsonProperty("tupleDomain") TupleDomain tupleDomain) - { - this.schemaTableName = requireNonNull(schemaTableName, "schemaTableName is null"); - this.tupleDomain = requireNonNull(tupleDomain, "tupleDomain is null"); - } - - @JsonProperty - public SchemaTableName getSchemaTableName() - { - return schemaTableName; - } - - @JsonProperty - public TupleDomain getTupleDomain() - { - return tupleDomain; - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - ThriftIndexHandle other = (ThriftIndexHandle) obj; - return Objects.equals(this.schemaTableName, other.schemaTableName) && - Objects.equals(this.tupleDomain, other.tupleDomain); - } - - @Override - public int hashCode() + public ThriftIndexHandle { - return Objects.hash(schemaTableName, tupleDomain); + requireNonNull(schemaTableName, "schemaTableName is null"); + requireNonNull(tupleDomain, "tupleDomain is null"); } @Override diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftIndexPageSource.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftIndexPageSource.java index e17e103e2a9b..469dc57fbf4f 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftIndexPageSource.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftIndexPageSource.java @@ -108,13 +108,13 @@ public ThriftIndexPageSource( this.stats = requireNonNull(stats, "stats is null"); requireNonNull(indexHandle, "indexHandle is null"); - this.schemaTableName = new TrinoThriftSchemaTableName(indexHandle.getSchemaTableName()); - this.outputConstraint = tupleDomainToThriftTupleDomain(indexHandle.getTupleDomain()); + this.schemaTableName = new TrinoThriftSchemaTableName(indexHandle.schemaTableName()); + this.outputConstraint = tupleDomainToThriftTupleDomain(indexHandle.tupleDomain()); requireNonNull(lookupColumns, "lookupColumns is null"); this.lookupColumnNames = lookupColumns.stream() .map(ThriftColumnHandle.class::cast) - .map(ThriftColumnHandle::getColumnName) + .map(ThriftColumnHandle::columnName) .collect(toImmutableList()); requireNonNull(outputColumns, "outputColumns is null"); @@ -122,8 +122,8 @@ public ThriftIndexPageSource( ImmutableList.Builder outputColumnTypes = ImmutableList.builder(); for (ColumnHandle columnHandle : outputColumns) { ThriftColumnHandle thriftColumnHandle = (ThriftColumnHandle) columnHandle; - outputColumnNames.add(thriftColumnHandle.getColumnName()); - outputColumnTypes.add(thriftColumnHandle.getColumnType()); + outputColumnNames.add(thriftColumnHandle.columnName()); + outputColumnTypes.add(thriftColumnHandle.columnType()); } this.outputColumnNames = outputColumnNames.build(); this.outputColumnTypes = outputColumnTypes.build(); diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftMetadata.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftMetadata.java index f2458307a584..af802c450325 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftMetadata.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftMetadata.java @@ -115,7 +115,7 @@ public ConnectorTableHandle getTableHandle(ConnectorSession session, SchemaTable return tableCache.getUnchecked(tableName) .map(ThriftTableMetadata::getSchemaTableName) - .map(ThriftTableHandle::new) + .map(ThriftTableHandle::toThriftTableHandle) .orElse(null); } @@ -123,7 +123,7 @@ public ConnectorTableHandle getTableHandle(ConnectorSession session, SchemaTable public ConnectorTableMetadata getTableMetadata(ConnectorSession session, ConnectorTableHandle tableHandle) { ThriftTableHandle handle = ((ThriftTableHandle) tableHandle); - return getRequiredTableMetadata(new SchemaTableName(handle.getSchemaName(), handle.getTableName())).toConnectorTableMetadata(); + return getRequiredTableMetadata(new SchemaTableName(handle.schemaName(), handle.tableName())).toConnectorTableMetadata(); } @Override @@ -142,7 +142,7 @@ public List listTables(ConnectorSession session, Optional getColumnHandles(ConnectorSession session, ConnectorTableHandle tableHandle) { - return getTableMetadata(session, tableHandle).getColumns().stream().collect(toImmutableMap(ColumnMetadata::getName, ThriftColumnHandle::new)); + return getTableMetadata(session, tableHandle).getColumns().stream().collect(toImmutableMap(ColumnMetadata::getName, ThriftColumnHandle::toColumnHandle)); } @Override @@ -161,7 +161,7 @@ public Map> listTableColumns(ConnectorSess public Optional resolveIndex(ConnectorSession session, ConnectorTableHandle tableHandle, Set indexableColumns, Set outputColumns, TupleDomain tupleDomain) { ThriftTableHandle table = (ThriftTableHandle) tableHandle; - ThriftTableMetadata tableMetadata = getRequiredTableMetadata(new SchemaTableName(table.getSchemaName(), table.getTableName())); + ThriftTableMetadata tableMetadata = getRequiredTableMetadata(new SchemaTableName(table.schemaName(), table.tableName())); if (tableMetadata.containsIndexableColumns(indexableColumns)) { return Optional.of(new ConnectorResolvedIndex(new ThriftIndexHandle(tableMetadata.getSchemaTableName(), tupleDomain), tupleDomain)); } @@ -173,17 +173,17 @@ public Optional> applyFilter(C { ThriftTableHandle handle = (ThriftTableHandle) table; - TupleDomain oldDomain = handle.getConstraint(); + TupleDomain oldDomain = handle.constraint(); TupleDomain newDomain = oldDomain.intersect(constraint.getSummary()); if (oldDomain.equals(newDomain)) { return Optional.empty(); } handle = new ThriftTableHandle( - handle.getSchemaName(), - handle.getTableName(), + handle.schemaName(), + handle.tableName(), newDomain, - handle.getDesiredColumns()); + handle.desiredColumns()); return Optional.of(new ConstraintApplicationResult<>(handle, constraint.getSummary(), constraint.getExpression(), false)); } @@ -193,7 +193,7 @@ public Optional> applyProjecti { ThriftTableHandle handle = (ThriftTableHandle) table; - if (handle.getDesiredColumns().isPresent()) { + if (handle.desiredColumns().isPresent()) { return Optional.empty(); } @@ -201,13 +201,13 @@ public Optional> applyProjecti ImmutableList.Builder assignmentList = ImmutableList.builder(); assignments.forEach((name, column) -> { desiredColumns.add(column); - assignmentList.add(new Assignment(name, column, ((ThriftColumnHandle) column).getColumnType())); + assignmentList.add(new Assignment(name, column, ((ThriftColumnHandle) column).columnType())); }); handle = new ThriftTableHandle( - handle.getSchemaName(), - handle.getTableName(), - handle.getConstraint(), + handle.schemaName(), + handle.tableName(), + handle.constraint(), Optional.of(desiredColumns.build())); return Optional.of(new ProjectionApplicationResult<>(handle, projections, assignmentList.build(), false)); diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftPageSource.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftPageSource.java index c8ee2bf924d3..7c712142a80b 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftPageSource.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftPageSource.java @@ -72,8 +72,8 @@ public ThriftPageSource( ImmutableList.Builder columnTypes = ImmutableList.builder(); for (ColumnHandle columnHandle : columns) { ThriftColumnHandle thriftColumnHandle = (ThriftColumnHandle) columnHandle; - columnNames.add(thriftColumnHandle.getColumnName()); - columnTypes.add(thriftColumnHandle.getColumnType()); + columnNames.add(thriftColumnHandle.columnName()); + columnTypes.add(thriftColumnHandle.columnType()); } this.columnNames = columnNames.build(); this.columnTypes = columnTypes.build(); @@ -86,7 +86,7 @@ public ThriftPageSource( // init split requireNonNull(split, "split is null"); - this.splitId = split.getSplitId(); + this.splitId = split.splitId(); // init client requireNonNull(client, "client is null"); diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftSplitManager.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftSplitManager.java index 6691d1300b6d..f030be73d4c6 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftSplitManager.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftSplitManager.java @@ -79,16 +79,16 @@ public ConnectorSplitSource getSplits( ThriftTableHandle tableHandle = (ThriftTableHandle) table; return new ThriftSplitSource( client.get(thriftHeaderProvider.getHeaders(session)), - new TrinoThriftSchemaTableName(tableHandle.getSchemaName(), tableHandle.getTableName()), - tableHandle.getDesiredColumns().map(ThriftSplitManager::columnNames), - tupleDomainToThriftTupleDomain(tableHandle.getConstraint())); + new TrinoThriftSchemaTableName(tableHandle.schemaName(), tableHandle.tableName()), + tableHandle.desiredColumns().map(ThriftSplitManager::columnNames), + tupleDomainToThriftTupleDomain(tableHandle.constraint())); } private static Set columnNames(Set columns) { return columns.stream() .map(ThriftColumnHandle.class::cast) - .map(ThriftColumnHandle::getColumnName) + .map(ThriftColumnHandle::columnName) .collect(toImmutableSet()); } diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftTableHandle.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftTableHandle.java index 5c1a6bbde3d2..bdf2f9980d41 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftTableHandle.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftTableHandle.java @@ -13,89 +13,30 @@ */ package io.trino.plugin.thrift; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; import io.trino.spi.connector.ColumnHandle; import io.trino.spi.connector.ConnectorTableHandle; import io.trino.spi.connector.SchemaTableName; import io.trino.spi.predicate.TupleDomain; -import java.util.Objects; import java.util.Optional; import java.util.Set; import static java.util.Objects.requireNonNull; -public final class ThriftTableHandle +public record ThriftTableHandle(String schemaName, String tableName, TupleDomain constraint, Optional> desiredColumns) implements ConnectorTableHandle { - private final String schemaName; - private final String tableName; - private final TupleDomain constraint; - private final Optional> desiredColumns; - - @JsonCreator - public ThriftTableHandle( - @JsonProperty("schemaName") String schemaName, - @JsonProperty("tableName") String tableName, - @JsonProperty("constraint") TupleDomain constraint, - @JsonProperty("desiredColumns") Optional> desiredColumns) - { - this.schemaName = requireNonNull(schemaName, "schemaName is null"); - this.tableName = requireNonNull(tableName, "tableName is null"); - this.constraint = requireNonNull(constraint, "constraint is null"); - this.desiredColumns = requireNonNull(desiredColumns, "desiredColumns is null"); - } - - public ThriftTableHandle(SchemaTableName schemaTableName) + public ThriftTableHandle { - this(schemaTableName.getSchemaName(), schemaTableName.getTableName(), TupleDomain.all(), Optional.empty()); + requireNonNull(schemaName, "schemaName is null"); + requireNonNull(tableName, "tableName is null"); + requireNonNull(constraint, "constraint is null"); + requireNonNull(desiredColumns, "desiredColumns is null"); } - @JsonProperty - public String getSchemaName() - { - return schemaName; - } - - @JsonProperty - public String getTableName() - { - return tableName; - } - - @JsonProperty - public TupleDomain getConstraint() - { - return constraint; - } - - @JsonProperty - public Optional> getDesiredColumns() - { - return desiredColumns; - } - - @Override - public boolean equals(Object obj) - { - if (this == obj) { - return true; - } - if (obj == null || getClass() != obj.getClass()) { - return false; - } - ThriftTableHandle other = (ThriftTableHandle) obj; - return Objects.equals(this.schemaName, other.schemaName) && - Objects.equals(this.tableName, other.tableName) && - Objects.equals(this.constraint, other.constraint) && - Objects.equals(this.desiredColumns, other.desiredColumns); - } - - @Override - public int hashCode() + public static ThriftTableHandle toThriftTableHandle(SchemaTableName schemaTableName) { - return Objects.hash(schemaName, tableName, constraint, desiredColumns); + return new ThriftTableHandle(schemaTableName.getSchemaName(), schemaTableName.getTableName(), TupleDomain.all(), Optional.empty()); } @Override diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftTableMetadata.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftTableMetadata.java index bac42fc542e2..f959b775dade 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftTableMetadata.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftTableMetadata.java @@ -71,7 +71,7 @@ public boolean containsIndexableColumns(Set indexableColumns) { Set keyColumns = indexableColumns.stream() .map(ThriftColumnHandle.class::cast) - .map(ThriftColumnHandle::getColumnName) + .map(ThriftColumnHandle::columnName) .collect(toImmutableSet()); return indexableKeys.contains(keyColumns); } diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/util/TupleDomainConversion.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/util/TupleDomainConversion.java index 38c5ee0670b2..7beb3f7a321f 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/util/TupleDomainConversion.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/util/TupleDomainConversion.java @@ -33,7 +33,7 @@ public static TrinoThriftTupleDomain tupleDomainToThriftTupleDomain(TupleDomain< return new TrinoThriftTupleDomain(tupleDomain.getDomains().get() .entrySet().stream() .collect(toImmutableMap( - entry -> ((ThriftColumnHandle) entry.getKey()).getColumnName(), + entry -> ((ThriftColumnHandle) entry.getKey()).columnName(), entry -> fromDomain(entry.getValue())))); } } diff --git a/plugin/trino-thrift/src/test/java/io/trino/plugin/thrift/integration/TestThriftProjectionPushdown.java b/plugin/trino-thrift/src/test/java/io/trino/plugin/thrift/integration/TestThriftProjectionPushdown.java index f16c0a6afe76..a732d63e9339 100644 --- a/plugin/trino-thrift/src/test/java/io/trino/plugin/thrift/integration/TestThriftProjectionPushdown.java +++ b/plugin/trino-thrift/src/test/java/io/trino/plugin/thrift/integration/TestThriftProjectionPushdown.java @@ -204,8 +204,8 @@ public void testPruneColumns() tester().assertThat(rule) .withSession(SESSION) .on(p -> { - Symbol nationKey = p.symbol(nationKeyColumn.getColumnName(), VARCHAR); - Symbol name = p.symbol(nameColumn.getColumnName(), VARCHAR); + Symbol nationKey = p.symbol(nationKeyColumn.columnName(), VARCHAR); + Symbol name = p.symbol(nameColumn.columnName(), VARCHAR); return p.project( Assignments.of( p.symbol("expr", VARCHAR), @@ -219,7 +219,7 @@ public void testPruneColumns() .buildOrThrow())); }) .matches(project( - ImmutableMap.of("expr", expression(new Reference(BIGINT, nationKeyColumn.getColumnName()))), + ImmutableMap.of("expr", expression(new Reference(BIGINT, nationKeyColumn.columnName()))), tableScan( new ThriftTableHandle( TINY_SCHEMA, @@ -227,6 +227,6 @@ public void testPruneColumns() TupleDomain.all(), Optional.of(ImmutableSet.of(nationKeyColumn)))::equals, TupleDomain.all(), - ImmutableMap.of(nationKeyColumn.getColumnName(), nationKeyColumn::equals)))); + ImmutableMap.of(nationKeyColumn.columnName(), nationKeyColumn::equals)))); } }