Skip to content

Commit c277531

Browse files
authored
Merge branch 'master' into case-sensitivity
2 parents fd905ea + acc308c commit c277531

File tree

60 files changed

+1304
-905
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1304
-905
lines changed

core/trino-main/src/main/java/io/trino/connector/DefaultCatalogFactory.java

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
import io.opentelemetry.api.OpenTelemetry;
2020
import io.opentelemetry.api.trace.Tracer;
2121
import io.trino.connector.informationschema.InformationSchemaConnector;
22-
import io.trino.connector.system.CoordinatorSystemTablesProvider;
23-
import io.trino.connector.system.StaticSystemTablesProvider;
2422
import io.trino.connector.system.SystemConnector;
2523
import io.trino.connector.system.SystemTablesProvider;
2624
import io.trino.execution.scheduler.NodeSchedulerConfig;
@@ -156,17 +154,11 @@ private CatalogConnector createCatalog(CatalogHandle catalogHandle, ConnectorNam
156154
accessControl,
157155
maxPrefetchedInformationSchemaPrefixes));
158156

159-
SystemTablesProvider systemTablesProvider;
160-
if (currentNode.isCoordinator()) {
161-
systemTablesProvider = new CoordinatorSystemTablesProvider(
162-
transactionManager,
163-
metadata,
164-
catalogHandle.getCatalogName().toString(),
165-
new StaticSystemTablesProvider(catalogConnector.getSystemTables()));
166-
}
167-
else {
168-
systemTablesProvider = new StaticSystemTablesProvider(catalogConnector.getSystemTables());
169-
}
157+
SystemTablesProvider systemTablesProvider = new SystemTablesProvider(
158+
transactionManager,
159+
metadata,
160+
catalogHandle.getCatalogName().toString(),
161+
catalogConnector.getSystemTables());
170162

171163
ConnectorServices systemConnector = new ConnectorServices(
172164
tracer,
@@ -177,7 +169,8 @@ private CatalogConnector createCatalog(CatalogHandle catalogHandle, ConnectorNam
177169
systemTablesProvider,
178170
transactionId -> transactionManager.getConnectorTransaction(transactionId, catalogHandle),
179171
accessControl,
180-
catalogHandle.getCatalogName().toString()));
172+
catalogHandle.getCatalogName().toString(),
173+
catalogConnector.getPageSourceProviderFactory()));
181174

182175
return new CatalogConnector(
183176
catalogHandle,

core/trino-main/src/main/java/io/trino/connector/system/CoordinatorSystemTablesProvider.java

Lines changed: 0 additions & 94 deletions
This file was deleted.

core/trino-main/src/main/java/io/trino/connector/system/StaticSystemTablesProvider.java

Lines changed: 0 additions & 54 deletions
This file was deleted.

core/trino-main/src/main/java/io/trino/connector/system/SystemConnector.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@
1818
import io.trino.security.AccessControl;
1919
import io.trino.spi.connector.ConnectorMetadata;
2020
import io.trino.spi.connector.ConnectorPageSourceProvider;
21+
import io.trino.spi.connector.ConnectorPageSourceProviderFactory;
2122
import io.trino.spi.connector.ConnectorSession;
2223
import io.trino.spi.connector.ConnectorSplitManager;
2324
import io.trino.spi.connector.ConnectorTransactionHandle;
2425
import io.trino.spi.transaction.IsolationLevel;
2526
import io.trino.transaction.InternalConnector;
2627
import io.trino.transaction.TransactionId;
2728

29+
import java.util.Optional;
2830
import java.util.function.Function;
2931

3032
import static java.util.Objects.requireNonNull;
@@ -43,7 +45,8 @@ public SystemConnector(
4345
SystemTablesProvider tables,
4446
Function<TransactionId, ConnectorTransactionHandle> transactionHandleFunction,
4547
AccessControl accessControl,
46-
String catalogName)
48+
String catalogName,
49+
Optional<ConnectorPageSourceProviderFactory> pageSourceProviderFactory)
4750
{
4851
requireNonNull(currentNode, "currentNode is null");
4952
requireNonNull(nodeManager, "nodeManager is null");
@@ -54,7 +57,7 @@ public SystemConnector(
5457

5558
this.metadata = new SystemTablesMetadata(tables);
5659
this.splitManager = new SystemSplitManager(currentNode, nodeManager, tables);
57-
this.pageSourceProvider = new SystemPageSourceProvider(tables, accessControl, catalogName);
60+
this.pageSourceProvider = new SystemPageSourceProvider(tables, accessControl, catalogName, pageSourceProviderFactory);
5861
this.transactionHandleFunction = transactionHandleFunction;
5962
}
6063

core/trino-main/src/main/java/io/trino/connector/system/SystemPageSourceProvider.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import io.trino.spi.connector.ConnectorAccessControl;
2929
import io.trino.spi.connector.ConnectorPageSource;
3030
import io.trino.spi.connector.ConnectorPageSourceProvider;
31+
import io.trino.spi.connector.ConnectorPageSourceProviderFactory;
3132
import io.trino.spi.connector.ConnectorSession;
3233
import io.trino.spi.connector.ConnectorSplit;
3334
import io.trino.spi.connector.ConnectorTableHandle;
@@ -38,13 +39,15 @@
3839
import io.trino.spi.connector.RecordPageSource;
3940
import io.trino.spi.connector.RecordSet;
4041
import io.trino.spi.connector.SchemaTableName;
42+
import io.trino.spi.connector.SystemColumnHandle;
4143
import io.trino.spi.connector.SystemTable;
4244
import io.trino.spi.predicate.TupleDomain;
4345
import io.trino.spi.type.Type;
4446

4547
import java.util.HashMap;
4648
import java.util.List;
4749
import java.util.Map;
50+
import java.util.Optional;
4851
import java.util.Set;
4952

5053
import static com.google.common.collect.ImmutableList.toImmutableList;
@@ -60,12 +63,15 @@ public class SystemPageSourceProvider
6063
private final SystemTablesProvider tables;
6164
private final AccessControl accessControl;
6265
private final String catalogName;
66+
private final Optional<ConnectorPageSourceProvider> connectorPageSourceProvider;
6367

64-
public SystemPageSourceProvider(SystemTablesProvider tables, AccessControl accessControl, String catalogName)
68+
public SystemPageSourceProvider(SystemTablesProvider tables, AccessControl accessControl, String catalogName, Optional<ConnectorPageSourceProviderFactory> pageSourceProviderFactory)
6569
{
6670
this.tables = requireNonNull(tables, "tables is null");
6771
this.accessControl = requireNonNull(accessControl, "accessControl is null");
6872
this.catalogName = requireNonNull(catalogName, "catalogName is null");
73+
this.connectorPageSourceProvider = requireNonNull(pageSourceProviderFactory, "pageSourceProviderFactory is null")
74+
.map(ConnectorPageSourceProviderFactory::createPageSourceProvider);
6975
}
7076

7177
@Override
@@ -79,7 +85,13 @@ public ConnectorPageSource createPageSource(
7985
{
8086
requireNonNull(columns, "columns is null");
8187
SystemTransactionHandle systemTransaction = (SystemTransactionHandle) transaction;
82-
SystemSplit systemSplit = (SystemSplit) split;
88+
89+
// if the split is not a SystemSplit, we immediately delegate to the Connector to build a PageSource
90+
if (!(split instanceof SystemSplit systemSplit)) {
91+
return connectorPageSourceProvider.orElseThrow()
92+
.createPageSource(systemTransaction.getConnectorTransactionHandle(), session, split, table, columns, dynamicFilter);
93+
}
94+
8395
SchemaTableName tableName = ((SystemTableHandle) table).schemaTableName();
8496
SystemTable systemTable = tables.getSystemTable(session, tableName)
8597
// table might disappear in the meantime

core/trino-main/src/main/java/io/trino/connector/system/SystemSplit.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.trino.spi.HostAddress;
2121
import io.trino.spi.connector.ColumnHandle;
2222
import io.trino.spi.connector.ConnectorSplit;
23+
import io.trino.spi.connector.SystemColumnHandle;
2324
import io.trino.spi.predicate.TupleDomain;
2425

2526
import java.util.List;

core/trino-main/src/main/java/io/trino/connector/system/SystemTablesMetadata.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import io.trino.spi.connector.ConstraintApplicationResult;
2929
import io.trino.spi.connector.SchemaTableName;
3030
import io.trino.spi.connector.SchemaTablePrefix;
31+
import io.trino.spi.connector.SystemColumnHandle;
3132
import io.trino.spi.connector.SystemTable;
3233
import io.trino.spi.predicate.TupleDomain;
3334

@@ -37,7 +38,7 @@
3738

3839
import static com.google.common.base.Preconditions.checkArgument;
3940
import static com.google.common.collect.ImmutableList.toImmutableList;
40-
import static io.trino.connector.system.SystemColumnHandle.toSystemColumnHandles;
41+
import static com.google.common.collect.ImmutableMap.toImmutableMap;
4142
import static io.trino.metadata.MetadataUtil.findColumnMetadata;
4243
import static io.trino.spi.StandardErrorCode.NOT_FOUND;
4344
import static io.trino.spi.StandardErrorCode.NOT_SUPPORTED;
@@ -111,7 +112,9 @@ public ColumnMetadata getColumnMetadata(ConnectorSession session, ConnectorTable
111112
public Map<String, ColumnHandle> getColumnHandles(ConnectorSession session, ConnectorTableHandle tableHandle)
112113
{
113114
ConnectorTableMetadata tableMetadata = checkAndGetTable(session, tableHandle).getTableMetadata();
114-
return toSystemColumnHandles(tableMetadata);
115+
return tableMetadata.getColumns().stream().collect(toImmutableMap(
116+
ColumnMetadata::getName,
117+
column -> new SystemColumnHandle(column.getName())));
115118
}
116119

117120
private SystemTable checkAndGetTable(ConnectorSession session, ConnectorTableHandle tableHandle)

0 commit comments

Comments
 (0)