diff --git a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/Versions.java b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/Versions.java index ede4faf937f4..0cd6f7df1ad6 100644 --- a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/Versions.java +++ b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/Versions.java @@ -13,8 +13,8 @@ */ package io.trino.plugin.base; +import io.trino.spi.connector.Connector; import io.trino.spi.connector.ConnectorContext; -import io.trino.spi.connector.ConnectorFactory; import java.util.Optional; @@ -32,10 +32,10 @@ private Versions() {} * chooses not to maintain compatibility with older SPI versions, as happens for plugins maintained together with * the Trino project. */ - public static void checkSpiVersion(ConnectorContext context, ConnectorFactory connectorFactory) + public static void checkSpiVersion(ConnectorContext context, String connectorName, Class connectorClass) { String spiVersion = context.getSpiVersion(); - Optional pluginVersion = getPluginMavenVersion(connectorFactory); + Optional pluginVersion = getPluginMavenVersion(connectorClass); if (pluginVersion.isEmpty()) { // Assume we're in tests. In tests, plugin version is unknown and SPI version may be known, e.g. when running single module's tests from maven. @@ -47,14 +47,14 @@ public static void checkSpiVersion(ConnectorContext context, ConnectorFactory co format( "Trino SPI version %s does not match %s connector version %s. The connector cannot be used with SPI version other than it was compiled for.", spiVersion, - connectorFactory.getName(), + connectorName, pluginVersion.get())); } - private static Optional getPluginMavenVersion(ConnectorFactory connectorFactory) + private static Optional getPluginMavenVersion(Class connectorClass) { - String specificationVersion = connectorFactory.getClass().getPackage().getSpecificationVersion(); - String implementationVersion = connectorFactory.getClass().getPackage().getImplementationVersion(); + String specificationVersion = connectorClass.getPackage().getSpecificationVersion(); + String implementationVersion = connectorClass.getPackage().getImplementationVersion(); if (specificationVersion == null && implementationVersion == null) { // The information comes from jar's Manifest and is not present e.g. when running tests, or from an IDE. return Optional.empty(); diff --git a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloConnectorFactory.java b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloConnectorFactory.java index 2971a2c812a1..cebc577d9aaf 100644 --- a/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloConnectorFactory.java +++ b/plugin/trino-accumulo/src/main/java/io/trino/plugin/accumulo/AccumuloConnectorFactory.java @@ -43,7 +43,7 @@ public Connector create(String catalogName, Map config, Connecto requireNonNull(catalogName, "catalogName is null"); requireNonNull(config, "config is null"); requireNonNull(context, "context is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, CONNECTOR_NAME, AccumuloConnector.class); Bootstrap app = new Bootstrap( new JsonModule(), diff --git a/plugin/trino-atop/src/main/java/io/trino/plugin/atop/AtopConnectorFactory.java b/plugin/trino-atop/src/main/java/io/trino/plugin/atop/AtopConnectorFactory.java index 64b03002d13b..260470167c92 100644 --- a/plugin/trino-atop/src/main/java/io/trino/plugin/atop/AtopConnectorFactory.java +++ b/plugin/trino-atop/src/main/java/io/trino/plugin/atop/AtopConnectorFactory.java @@ -53,7 +53,7 @@ public String getName() public Connector create(String catalogName, Map requiredConfig, ConnectorContext context) { requireNonNull(requiredConfig, "requiredConfig is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), AtopConnector.class); try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { Bootstrap app = new Bootstrap( diff --git a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcConnectorFactory.java b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcConnectorFactory.java index 835b05a2b909..5bbc4a1b6dcc 100644 --- a/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcConnectorFactory.java +++ b/plugin/trino-base-jdbc/src/main/java/io/trino/plugin/jdbc/JdbcConnectorFactory.java @@ -63,7 +63,7 @@ public String getName() public Connector create(String catalogName, Map requiredConfig, ConnectorContext context) { requireNonNull(requiredConfig, "requiredConfig is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, name, JdbcConnector.class); Bootstrap app = new Bootstrap( binder -> binder.bind(TypeManager.class).toInstance(context.getTypeManager()), diff --git a/plugin/trino-bigquery/src/main/java/io/trino/plugin/bigquery/BigQueryConnectorFactory.java b/plugin/trino-bigquery/src/main/java/io/trino/plugin/bigquery/BigQueryConnectorFactory.java index d48872fd9efb..56760160ce56 100644 --- a/plugin/trino-bigquery/src/main/java/io/trino/plugin/bigquery/BigQueryConnectorFactory.java +++ b/plugin/trino-bigquery/src/main/java/io/trino/plugin/bigquery/BigQueryConnectorFactory.java @@ -41,7 +41,7 @@ public Connector create(String catalogName, Map config, Connecto { requireNonNull(catalogName, "catalogName is null"); requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), BigQueryConnector.class); Bootstrap app = new Bootstrap( new JsonModule(), diff --git a/plugin/trino-blackhole/src/main/java/io/trino/plugin/blackhole/BlackHoleConnectorFactory.java b/plugin/trino-blackhole/src/main/java/io/trino/plugin/blackhole/BlackHoleConnectorFactory.java index 7919fd63c9a3..f84e5fbf8dca 100644 --- a/plugin/trino-blackhole/src/main/java/io/trino/plugin/blackhole/BlackHoleConnectorFactory.java +++ b/plugin/trino-blackhole/src/main/java/io/trino/plugin/blackhole/BlackHoleConnectorFactory.java @@ -37,7 +37,7 @@ public String getName() @Override public Connector create(String catalogName, Map requiredConfig, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), BlackHoleConnector.class); ListeningScheduledExecutorService executorService = listeningDecorator(newSingleThreadScheduledExecutor(daemonThreadsNamed("blackhole"))); return new BlackHoleConnector( diff --git a/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraConnectorFactory.java b/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraConnectorFactory.java index 1aa3eeb3ca21..00ff8fbb8a18 100644 --- a/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraConnectorFactory.java +++ b/plugin/trino-cassandra/src/main/java/io/trino/plugin/cassandra/CassandraConnectorFactory.java @@ -40,7 +40,7 @@ public String getName() public Connector create(String catalogName, Map config, ConnectorContext context) { requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), CassandraConnector.class); Bootstrap app = new Bootstrap( new MBeanModule(), diff --git a/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeConnectorFactory.java b/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeConnectorFactory.java index 280ae26977b0..03d2d08a2c0b 100644 --- a/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeConnectorFactory.java +++ b/plugin/trino-delta-lake/src/main/java/io/trino/plugin/deltalake/DeltaLakeConnectorFactory.java @@ -46,7 +46,7 @@ public String getName() @Override public Connector create(String catalogName, Map config, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), DeltaLakeConnector.class); ClassLoader classLoader = context.duplicatePluginClassLoader(); try { diff --git a/plugin/trino-elasticsearch/src/main/java/io/trino/plugin/elasticsearch/ElasticsearchConnectorFactory.java b/plugin/trino-elasticsearch/src/main/java/io/trino/plugin/elasticsearch/ElasticsearchConnectorFactory.java index edcb1d32e438..8e286037a2d1 100644 --- a/plugin/trino-elasticsearch/src/main/java/io/trino/plugin/elasticsearch/ElasticsearchConnectorFactory.java +++ b/plugin/trino-elasticsearch/src/main/java/io/trino/plugin/elasticsearch/ElasticsearchConnectorFactory.java @@ -46,7 +46,7 @@ public Connector create(String catalogName, Map config, Connecto { requireNonNull(catalogName, "catalogName is null"); requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), ElasticsearchConnector.class); Bootstrap app = new Bootstrap( new MBeanModule(), diff --git a/plugin/trino-example-http/src/main/java/io/trino/plugin/example/ExampleConnectorFactory.java b/plugin/trino-example-http/src/main/java/io/trino/plugin/example/ExampleConnectorFactory.java index 7360e80d8c9e..658ff7a21ce6 100644 --- a/plugin/trino-example-http/src/main/java/io/trino/plugin/example/ExampleConnectorFactory.java +++ b/plugin/trino-example-http/src/main/java/io/trino/plugin/example/ExampleConnectorFactory.java @@ -39,7 +39,7 @@ public String getName() public Connector create(String catalogName, Map requiredConfig, ConnectorContext context) { requireNonNull(requiredConfig, "requiredConfig is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), ExampleConnector.class); // A plugin is not required to use Guice; it is just very convenient Bootstrap app = new Bootstrap( diff --git a/plugin/trino-google-sheets/src/main/java/io/trino/plugin/google/sheets/SheetsConnectorFactory.java b/plugin/trino-google-sheets/src/main/java/io/trino/plugin/google/sheets/SheetsConnectorFactory.java index 80af7eea21e7..a64b3f4f19ef 100644 --- a/plugin/trino-google-sheets/src/main/java/io/trino/plugin/google/sheets/SheetsConnectorFactory.java +++ b/plugin/trino-google-sheets/src/main/java/io/trino/plugin/google/sheets/SheetsConnectorFactory.java @@ -39,7 +39,7 @@ public String getName() public Connector create(String catalogName, Map config, ConnectorContext context) { requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), SheetsConnector.class); Bootstrap app = new Bootstrap( new JsonModule(), diff --git a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveConnectorFactory.java b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveConnectorFactory.java index d894b9799cb9..89ea1aea2d88 100644 --- a/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveConnectorFactory.java +++ b/plugin/trino-hive/src/main/java/io/trino/plugin/hive/HiveConnectorFactory.java @@ -55,7 +55,7 @@ public String getName() @Override public Connector create(String catalogName, Map config, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), HiveConnector.class); ClassLoader classLoader = context.duplicatePluginClassLoader(); try { diff --git a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergConnectorFactory.java b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergConnectorFactory.java index a2b8b6f2cfe5..6d974dfa49d5 100644 --- a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergConnectorFactory.java +++ b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/IcebergConnectorFactory.java @@ -51,7 +51,7 @@ public String getName() @Override public Connector create(String catalogName, Map config, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), IcebergConnector.class); ClassLoader classLoader = context.duplicatePluginClassLoader(); try { diff --git a/plugin/trino-jmx/src/main/java/io/trino/plugin/jmx/JmxConnectorFactory.java b/plugin/trino-jmx/src/main/java/io/trino/plugin/jmx/JmxConnectorFactory.java index 389a0d55192a..e528332ef07f 100644 --- a/plugin/trino-jmx/src/main/java/io/trino/plugin/jmx/JmxConnectorFactory.java +++ b/plugin/trino-jmx/src/main/java/io/trino/plugin/jmx/JmxConnectorFactory.java @@ -39,7 +39,7 @@ public String getName() @Override public Connector create(String catalogName, Map config, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), JmxConnector.class); Bootstrap app = new Bootstrap( new MBeanServerModule(), diff --git a/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaConnectorFactory.java b/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaConnectorFactory.java index ad5039e35a78..3dde9d42f357 100644 --- a/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaConnectorFactory.java +++ b/plugin/trino-kafka/src/main/java/io/trino/plugin/kafka/KafkaConnectorFactory.java @@ -51,7 +51,7 @@ public Connector create(String catalogName, Map config, Connecto { requireNonNull(catalogName, "catalogName is null"); requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), KafkaConnector.class); Bootstrap app = new Bootstrap( new CatalogNameModule(catalogName), diff --git a/plugin/trino-kinesis/src/main/java/io/trino/plugin/kinesis/KinesisConnectorFactory.java b/plugin/trino-kinesis/src/main/java/io/trino/plugin/kinesis/KinesisConnectorFactory.java index 2be24b0f82d1..ad7988630bc6 100644 --- a/plugin/trino-kinesis/src/main/java/io/trino/plugin/kinesis/KinesisConnectorFactory.java +++ b/plugin/trino-kinesis/src/main/java/io/trino/plugin/kinesis/KinesisConnectorFactory.java @@ -46,7 +46,7 @@ public Connector create(String catalogName, Map config, Connecto { requireNonNull(catalogName, "catalogName is null"); requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), KinesisConnector.class); try { Bootstrap app = new Bootstrap( diff --git a/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduConnectorFactory.java b/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduConnectorFactory.java index 224c8660a36f..d0a0af31d161 100755 --- a/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduConnectorFactory.java +++ b/plugin/trino-kudu/src/main/java/io/trino/plugin/kudu/KuduConnectorFactory.java @@ -42,7 +42,7 @@ public String getName() public Connector create(String catalogName, Map config, ConnectorContext context) { requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), KuduConnector.class); Bootstrap app = new Bootstrap( new JsonModule(), diff --git a/plugin/trino-local-file/src/main/java/io/trino/plugin/localfile/LocalFileConnectorFactory.java b/plugin/trino-local-file/src/main/java/io/trino/plugin/localfile/LocalFileConnectorFactory.java index b3f66ba56d86..62477b4aade8 100644 --- a/plugin/trino-local-file/src/main/java/io/trino/plugin/localfile/LocalFileConnectorFactory.java +++ b/plugin/trino-local-file/src/main/java/io/trino/plugin/localfile/LocalFileConnectorFactory.java @@ -38,7 +38,7 @@ public String getName() public Connector create(String catalogName, Map config, ConnectorContext context) { requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), LocalFileConnector.class); Bootstrap app = new Bootstrap( binder -> binder.bind(NodeManager.class).toInstance(context.getNodeManager()), diff --git a/plugin/trino-memory/src/main/java/io/trino/plugin/memory/MemoryConnectorFactory.java b/plugin/trino-memory/src/main/java/io/trino/plugin/memory/MemoryConnectorFactory.java index 900f142c108f..db75a074fff1 100644 --- a/plugin/trino-memory/src/main/java/io/trino/plugin/memory/MemoryConnectorFactory.java +++ b/plugin/trino-memory/src/main/java/io/trino/plugin/memory/MemoryConnectorFactory.java @@ -38,7 +38,7 @@ public String getName() public Connector create(String catalogName, Map requiredConfig, ConnectorContext context) { requireNonNull(requiredConfig, "requiredConfig is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), MemoryConnector.class); // A plugin is not required to use Guice; it is just very convenient Bootstrap app = new Bootstrap( diff --git a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoConnectorFactory.java b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoConnectorFactory.java index 35e523f77893..cddadf5d6e1f 100644 --- a/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoConnectorFactory.java +++ b/plugin/trino-mongodb/src/main/java/io/trino/plugin/mongodb/MongoConnectorFactory.java @@ -49,7 +49,7 @@ public String getName() public Connector create(String catalogName, Map config, ConnectorContext context) { requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), MongoConnector.class); Bootstrap app = new Bootstrap( new JsonModule(), diff --git a/plugin/trino-phoenix/src/main/java/io/trino/plugin/phoenix/PhoenixConnectorFactory.java b/plugin/trino-phoenix/src/main/java/io/trino/plugin/phoenix/PhoenixConnectorFactory.java index 44710d377556..99c87093839e 100644 --- a/plugin/trino-phoenix/src/main/java/io/trino/plugin/phoenix/PhoenixConnectorFactory.java +++ b/plugin/trino-phoenix/src/main/java/io/trino/plugin/phoenix/PhoenixConnectorFactory.java @@ -48,7 +48,7 @@ public String getName() public Connector create(String catalogName, Map requiredConfig, ConnectorContext context) { requireNonNull(requiredConfig, "requiredConfig is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), PhoenixConnector.class); try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { Bootstrap app = new Bootstrap( diff --git a/plugin/trino-phoenix5/src/main/java/io/trino/plugin/phoenix5/PhoenixConnectorFactory.java b/plugin/trino-phoenix5/src/main/java/io/trino/plugin/phoenix5/PhoenixConnectorFactory.java index f3ef88e4b0c3..27663ddb38a5 100644 --- a/plugin/trino-phoenix5/src/main/java/io/trino/plugin/phoenix5/PhoenixConnectorFactory.java +++ b/plugin/trino-phoenix5/src/main/java/io/trino/plugin/phoenix5/PhoenixConnectorFactory.java @@ -48,7 +48,7 @@ public String getName() public Connector create(String catalogName, Map requiredConfig, ConnectorContext context) { requireNonNull(requiredConfig, "requiredConfig is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), PhoenixConnector.class); try (ThreadContextClassLoader ignored = new ThreadContextClassLoader(classLoader)) { Bootstrap app = new Bootstrap( diff --git a/plugin/trino-pinot/src/main/java/io/trino/plugin/pinot/PinotConnectorFactory.java b/plugin/trino-pinot/src/main/java/io/trino/plugin/pinot/PinotConnectorFactory.java index b28fdaafcea2..235214e74514 100755 --- a/plugin/trino-pinot/src/main/java/io/trino/plugin/pinot/PinotConnectorFactory.java +++ b/plugin/trino-pinot/src/main/java/io/trino/plugin/pinot/PinotConnectorFactory.java @@ -52,7 +52,7 @@ public Connector create(String catalogName, Map config, Connecto { requireNonNull(catalogName, "catalogName is null"); requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), PinotConnector.class); ImmutableList.Builder modulesBuilder = ImmutableList.builder() .add(new JsonModule()) diff --git a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusConnectorFactory.java b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusConnectorFactory.java index 3d3ed81cdbd8..ff0caf86bf5a 100644 --- a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusConnectorFactory.java +++ b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusConnectorFactory.java @@ -40,7 +40,7 @@ public String getName() public Connector create(String catalogName, Map requiredConfig, ConnectorContext context) { requireNonNull(requiredConfig, "requiredConfig is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), PrometheusConnector.class); try { // A plugin is not required to use Guice; it is just very convenient diff --git a/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorConnectorFactory.java b/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorConnectorFactory.java index d7242eb7047b..d29e8e81e03c 100644 --- a/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorConnectorFactory.java +++ b/plugin/trino-raptor-legacy/src/main/java/io/trino/plugin/raptor/legacy/RaptorConnectorFactory.java @@ -63,7 +63,7 @@ public String getName() @Override public Connector create(String catalogName, Map config, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), RaptorConnector.class); Bootstrap app = new Bootstrap( new CatalogNameModule(catalogName), diff --git a/plugin/trino-redis/src/main/java/io/trino/plugin/redis/RedisConnectorFactory.java b/plugin/trino-redis/src/main/java/io/trino/plugin/redis/RedisConnectorFactory.java index c29b0c44b09d..e47671a5c6d3 100644 --- a/plugin/trino-redis/src/main/java/io/trino/plugin/redis/RedisConnectorFactory.java +++ b/plugin/trino-redis/src/main/java/io/trino/plugin/redis/RedisConnectorFactory.java @@ -53,7 +53,7 @@ public Connector create(String catalogName, Map config, Connecto { requireNonNull(catalogName, "catalogName is null"); requireNonNull(config, "config is null"); - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), RedisConnector.class); Bootstrap app = new Bootstrap( new JsonModule(), diff --git a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorFactory.java b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorFactory.java index 7058e3c7dffa..a916ce0735d4 100644 --- a/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorFactory.java +++ b/plugin/trino-thrift/src/main/java/io/trino/plugin/thrift/ThriftConnectorFactory.java @@ -51,7 +51,7 @@ public String getName() @Override public Connector create(String catalogName, Map config, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), ThriftConnector.class); Bootstrap app = new Bootstrap( new MBeanModule(), diff --git a/plugin/trino-tpcds/src/main/java/io/trino/plugin/tpcds/TpcdsConnectorFactory.java b/plugin/trino-tpcds/src/main/java/io/trino/plugin/tpcds/TpcdsConnectorFactory.java index 52a4cb8b0c79..9fc0a2b8e3be 100644 --- a/plugin/trino-tpcds/src/main/java/io/trino/plugin/tpcds/TpcdsConnectorFactory.java +++ b/plugin/trino-tpcds/src/main/java/io/trino/plugin/tpcds/TpcdsConnectorFactory.java @@ -13,6 +13,7 @@ */ package io.trino.plugin.tpcds; +import com.google.common.collect.ImmutableMap; import io.trino.spi.NodeManager; import io.trino.spi.connector.Connector; import io.trino.spi.connector.ConnectorContext; @@ -58,42 +59,53 @@ public String getName() @Override public Connector create(String catalogName, Map config, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), TpcdsConnector.class); + return new TpcdsConnector(config, context); + } + + private class TpcdsConnector + implements Connector + { + private final int splitsPerNode; + private final NodeManager nodeManager; + private final Map config; + + public TpcdsConnector(Map config, ConnectorContext context) + { + this.splitsPerNode = getSplitsPerNode(config); + this.nodeManager = context.getNodeManager(); + this.config = ImmutableMap.copyOf(config); + } - int splitsPerNode = getSplitsPerNode(config); - NodeManager nodeManager = context.getNodeManager(); - return new Connector() + @Override + public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly, boolean autoCommit) { - @Override - public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly, boolean autoCommit) - { - return TpcdsTransactionHandle.INSTANCE; - } - - @Override - public ConnectorMetadata getMetadata(ConnectorSession session, ConnectorTransactionHandle transactionHandle) - { - return new TpcdsMetadata(); - } - - @Override - public ConnectorSplitManager getSplitManager() - { - return new TpcdsSplitManager(nodeManager, splitsPerNode, isWithNoSexism(config)); - } - - @Override - public ConnectorRecordSetProvider getRecordSetProvider() - { - return new TpcdsRecordSetProvider(); - } - - @Override - public ConnectorNodePartitioningProvider getNodePartitioningProvider() - { - return new TpcdsNodePartitioningProvider(nodeManager, splitsPerNode); - } - }; + return TpcdsTransactionHandle.INSTANCE; + } + + @Override + public ConnectorMetadata getMetadata(ConnectorSession session, ConnectorTransactionHandle transactionHandle) + { + return new TpcdsMetadata(); + } + + @Override + public ConnectorSplitManager getSplitManager() + { + return new TpcdsSplitManager(nodeManager, splitsPerNode, isWithNoSexism(config)); + } + + @Override + public ConnectorRecordSetProvider getRecordSetProvider() + { + return new TpcdsRecordSetProvider(); + } + + @Override + public ConnectorNodePartitioningProvider getNodePartitioningProvider() + { + return new TpcdsNodePartitioningProvider(nodeManager, splitsPerNode); + } } private int getSplitsPerNode(Map properties) diff --git a/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/TpchConnectorFactory.java b/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/TpchConnectorFactory.java index ec68f68b8dac..4a3a69db1cdc 100644 --- a/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/TpchConnectorFactory.java +++ b/plugin/trino-tpch/src/main/java/io/trino/plugin/tpch/TpchConnectorFactory.java @@ -13,6 +13,7 @@ */ package io.trino.plugin.tpch; +import com.google.common.collect.ImmutableMap; import io.trino.spi.NodeManager; import io.trino.spi.connector.Connector; import io.trino.spi.connector.ConnectorContext; @@ -77,65 +78,77 @@ public String getName() @Override public Connector create(String catalogName, Map properties, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), TpchConnector.class); + return new TpchConnector(properties, context); + } - int splitsPerNode = getSplitsPerNode(properties); - ColumnNaming columnNaming = ColumnNaming.valueOf(properties.getOrDefault(TPCH_COLUMN_NAMING_PROPERTY, ColumnNaming.SIMPLIFIED.name()).toUpperCase(ENGLISH)); - DecimalTypeMapping decimalTypeMapping = DecimalTypeMapping.valueOf(properties.getOrDefault(TPCH_DOUBLE_TYPE_MAPPING_PROPERTY, DecimalTypeMapping.DOUBLE.name()).toUpperCase(ENGLISH)); - NodeManager nodeManager = context.getNodeManager(); + private class TpchConnector + implements Connector + { + private final int splitsPerNode; + private final ColumnNaming columnNaming; + private final DecimalTypeMapping decimalTypeMapping; + private final NodeManager nodeManager; + private final Map properties; - return new Connector() + public TpchConnector(Map properties, ConnectorContext context) { - @Override - public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly, boolean autoCommit) - { - return TpchTransactionHandle.INSTANCE; - } + this.splitsPerNode = getSplitsPerNode(properties); + this.columnNaming = ColumnNaming.valueOf(properties.getOrDefault(TPCH_COLUMN_NAMING_PROPERTY, ColumnNaming.SIMPLIFIED.name()).toUpperCase(ENGLISH)); + this.decimalTypeMapping = DecimalTypeMapping.valueOf(properties.getOrDefault(TPCH_DOUBLE_TYPE_MAPPING_PROPERTY, DecimalTypeMapping.DOUBLE.name()).toUpperCase(ENGLISH)); + this.nodeManager = context.getNodeManager(); + this.properties = ImmutableMap.copyOf(properties); + } - @Override - public ConnectorMetadata getMetadata(ConnectorSession session, ConnectorTransactionHandle transaction) - { - return new TpchMetadata( - columnNaming, - decimalTypeMapping, - predicatePushdownEnabled, - partitioningEnabled, - getTpchTableScanRedirectionCatalog(properties), - getTpchTableScanRedirectionSchema(properties)); - } + @Override + public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly, boolean autoCommit) + { + return TpchTransactionHandle.INSTANCE; + } - @Override - public ConnectorSplitManager getSplitManager() - { - return new TpchSplitManager(nodeManager, splitsPerNode); - } + @Override + public ConnectorMetadata getMetadata(ConnectorSession session, ConnectorTransactionHandle transaction) + { + return new TpchMetadata( + columnNaming, + decimalTypeMapping, + predicatePushdownEnabled, + partitioningEnabled, + getTpchTableScanRedirectionCatalog(properties), + getTpchTableScanRedirectionSchema(properties)); + } - @Override - public ConnectorPageSourceProvider getPageSourceProvider() - { - if (isProducePages(properties)) { - return new TpchPageSourceProvider(getMaxRowsPerPage(properties), decimalTypeMapping); - } + @Override + public ConnectorSplitManager getSplitManager() + { + return new TpchSplitManager(nodeManager, splitsPerNode); + } - throw new UnsupportedOperationException(); + @Override + public ConnectorPageSourceProvider getPageSourceProvider() + { + if (isProducePages(properties)) { + return new TpchPageSourceProvider(getMaxRowsPerPage(properties), decimalTypeMapping); } - @Override - public ConnectorRecordSetProvider getRecordSetProvider() - { - if (!isProducePages(properties)) { - return new TpchRecordSetProvider(decimalTypeMapping); - } + throw new UnsupportedOperationException(); + } - throw new UnsupportedOperationException(); + @Override + public ConnectorRecordSetProvider getRecordSetProvider() + { + if (!isProducePages(properties)) { + return new TpchRecordSetProvider(decimalTypeMapping); } - @Override - public ConnectorNodePartitioningProvider getNodePartitioningProvider() - { - return new TpchNodePartitioningProvider(nodeManager, splitsPerNode); - } - }; + throw new UnsupportedOperationException(); + } + + @Override + public ConnectorNodePartitioningProvider getNodePartitioningProvider() + { + return new TpchNodePartitioningProvider(nodeManager, splitsPerNode); + } } private int getSplitsPerNode(Map properties) diff --git a/testing/trino-testing/src/main/java/io/trino/testing/tpch/IndexedTpchConnectorFactory.java b/testing/trino-testing/src/main/java/io/trino/testing/tpch/IndexedTpchConnectorFactory.java index b7f76095b80d..3307f8233961 100644 --- a/testing/trino-testing/src/main/java/io/trino/testing/tpch/IndexedTpchConnectorFactory.java +++ b/testing/trino-testing/src/main/java/io/trino/testing/tpch/IndexedTpchConnectorFactory.java @@ -61,56 +61,65 @@ public String getName() @Override public Connector create(String catalogName, Map properties, ConnectorContext context) { - checkSpiVersion(context, this); + checkSpiVersion(context, getName(), IndexedTpchConnector.class); + return new IndexedTpchConnector(properties, context); + } + + private class IndexedTpchConnector + implements Connector + { + private final int splitsPerNode; + private final TpchIndexedData indexedData; + private final NodeManager nodeManager; + + IndexedTpchConnector(Map properties, ConnectorContext context) + { + this.splitsPerNode = getSplitsPerNode(properties); + this.indexedData = new TpchIndexedData(indexSpec); + this.nodeManager = context.getNodeManager(); + } + + @Override + public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly, boolean autoCommit) + { + return TpchTransactionHandle.INSTANCE; + } + + @Override + public ConnectorMetadata getMetadata(ConnectorSession session, ConnectorTransactionHandle transactionHandle) + { + return new TpchIndexMetadata(indexedData); + } - int splitsPerNode = getSplitsPerNode(properties); - TpchIndexedData indexedData = new TpchIndexedData(indexSpec); - NodeManager nodeManager = context.getNodeManager(); + @Override + public ConnectorSplitManager getSplitManager() + { + return new TpchSplitManager(nodeManager, splitsPerNode); + } + + @Override + public ConnectorRecordSetProvider getRecordSetProvider() + { + return new TpchRecordSetProvider(DecimalTypeMapping.DOUBLE); + } + + @Override + public ConnectorIndexProvider getIndexProvider() + { + return new TpchIndexProvider(indexedData); + } + + @Override + public Set getSystemTables() + { + return ImmutableSet.of(new ExampleSystemTable()); + } - return new Connector() + @Override + public ConnectorNodePartitioningProvider getNodePartitioningProvider() { - @Override - public ConnectorTransactionHandle beginTransaction(IsolationLevel isolationLevel, boolean readOnly, boolean autoCommit) - { - return TpchTransactionHandle.INSTANCE; - } - - @Override - public ConnectorMetadata getMetadata(ConnectorSession session, ConnectorTransactionHandle transactionHandle) - { - return new TpchIndexMetadata(indexedData); - } - - @Override - public ConnectorSplitManager getSplitManager() - { - return new TpchSplitManager(nodeManager, splitsPerNode); - } - - @Override - public ConnectorRecordSetProvider getRecordSetProvider() - { - return new TpchRecordSetProvider(DecimalTypeMapping.DOUBLE); - } - - @Override - public ConnectorIndexProvider getIndexProvider() - { - return new TpchIndexProvider(indexedData); - } - - @Override - public Set getSystemTables() - { - return ImmutableSet.of(new ExampleSystemTable()); - } - - @Override - public ConnectorNodePartitioningProvider getNodePartitioningProvider() - { - return new TpchNodePartitioningProvider(nodeManager, splitsPerNode); - } - }; + return new TpchNodePartitioningProvider(nodeManager, splitsPerNode); + } } private int getSplitsPerNode(Map properties)