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 @@ -17,6 +17,7 @@
import com.google.inject.Binder;
import com.google.inject.Module;
import com.google.inject.Provides;
import io.trino.plugin.base.CatalogName;
import org.weakref.jmx.ObjectNameBuilder;
import org.weakref.jmx.ObjectNameGenerator;

Expand All @@ -29,13 +30,11 @@
public class ConnectorObjectNameGeneratorModule
implements Module
{
private final String catalogName;
private final String packageName;
private final String defaultDomainBase;

public ConnectorObjectNameGeneratorModule(String catalogName, String packageName, String defaultDomainBase)
public ConnectorObjectNameGeneratorModule(String packageName, String defaultDomainBase)
{
this.catalogName = requireNonNull(catalogName, "catalogName is null");
this.packageName = requireNonNull(packageName, "packageName is null");
this.defaultDomainBase = requireNonNull(defaultDomainBase, "defaultDomainBase is null");
}
Expand All @@ -47,10 +46,10 @@ public void configure(Binder binder)
}

@Provides
ObjectNameGenerator createPrefixObjectNameGenerator(ObjectNameGeneratorConfig config)
ObjectNameGenerator createPrefixObjectNameGenerator(CatalogName catalogName, ObjectNameGeneratorConfig config)
{
String domainBase = firstNonNull(config.getDomainBase(), defaultDomainBase);
return new ConnectorObjectNameGenerator(packageName, domainBase, catalogName);
return new ConnectorObjectNameGenerator(packageName, domainBase, catalogName.toString());
}

public static final class ConnectorObjectNameGenerator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.google.inject.Injector;
import com.google.inject.Module;
import io.airlift.bootstrap.Bootstrap;
import io.trino.plugin.base.CatalogName;
import io.trino.spi.NodeManager;
import io.trino.spi.VersionEmbedder;
import io.trino.spi.connector.Connector;
Expand All @@ -34,23 +35,13 @@ public class JdbcConnectorFactory
implements ConnectorFactory
{
private final String name;
private final JdbcModuleProvider moduleProvider;
private final Module module;

public JdbcConnectorFactory(String name, Module module)
{
this(name, catalogName -> module);
}

/**
* @deprecated Prefer {@link JdbcConnectorFactory#JdbcConnectorFactory(String, Module)} instead.
* Notice that {@link io.trino.plugin.base.CatalogName} is available in guice context.
*/
@Deprecated
public JdbcConnectorFactory(String name, JdbcModuleProvider moduleProvider)
{
checkArgument(!isNullOrEmpty(name), "name is null or empty");
this.name = name;
this.moduleProvider = requireNonNull(moduleProvider, "moduleProvider is null");
this.module = module;
Comment thread
mx123 marked this conversation as resolved.
Outdated
}

@Override
Expand All @@ -63,14 +54,16 @@ public String getName()
public Connector create(String catalogName, Map<String, String> requiredConfig, ConnectorContext context)
{
requireNonNull(requiredConfig, "requiredConfig is null");
requireNonNull(module, "module is null");
checkSpiVersion(context, this);

Bootstrap app = new Bootstrap(
binder -> binder.bind(TypeManager.class).toInstance(context.getTypeManager()),
binder -> binder.bind(NodeManager.class).toInstance(context.getNodeManager()),
binder -> binder.bind(VersionEmbedder.class).toInstance(context.getVersionEmbedder()),
Comment thread
mx123 marked this conversation as resolved.
Outdated
new JdbcModule(catalogName),
moduleProvider.getModule(catalogName));
binder -> binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName)),
Comment thread
mx123 marked this conversation as resolved.
new JdbcModule(),
module);

Injector injector = app
.doNotInitializeLogging()
Expand All @@ -79,14 +72,4 @@ public Connector create(String catalogName, Map<String, String> requiredConfig,

return injector.getInstance(JdbcConnector.class);
}

/**
* @deprecated Prefer {@link JdbcConnectorFactory#JdbcConnectorFactory(String, Module)} instead.
* Notice that {@link io.trino.plugin.base.CatalogName} is available in guice context.
*/
@Deprecated
public interface JdbcModuleProvider
{
Module getModule(String catalogName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,23 +39,14 @@
import static com.google.inject.multibindings.OptionalBinder.newOptionalBinder;
import static io.airlift.configuration.ConditionalModule.conditionalModule;
import static io.airlift.configuration.ConfigBinder.configBinder;
import static java.util.Objects.requireNonNull;
import static org.weakref.jmx.guice.ExportBinder.newExporter;

public class JdbcModule
extends AbstractConfigurationAwareModule
{
private final String catalogName;

public JdbcModule(String catalogName)
{
this.catalogName = requireNonNull(catalogName, "catalogName is null");
}

@Override
public void setup(Binder binder)
{
binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName));
install(new JdbcDiagnosticModule());
install(new IdentifierMappingModule());

Expand Down Expand Up @@ -85,8 +76,9 @@ public void setup(Binder binder)
bindSessionPropertiesProvider(binder, JdbcDynamicFilteringSessionProperties.class);

binder.bind(DynamicFilteringStats.class).in(Scopes.SINGLETON);
Provider<CatalogName> catalogName = binder.getProvider(CatalogName.class);
newExporter(binder).export(DynamicFilteringStats.class)
.as(generator -> generator.generatedNameOf(DynamicFilteringStats.class, catalogName));
.as(generator -> generator.generatedNameOf(DynamicFilteringStats.class, catalogName.get().toString()));

binder.bind(CachingJdbcClient.class).in(Scopes.SINGLETON);
binder.bind(JdbcClient.class).to(Key.get(CachingJdbcClient.class)).in(Scopes.SINGLETON);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public static Connector createConnector(
Bootstrap app = new Bootstrap(
new EventModule(),
new MBeanModule(),
new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.deltalake", "trino.plugin.deltalake"),
new ConnectorObjectNameGeneratorModule("io.trino.plugin.deltalake", "trino.plugin.deltalake"),
new JsonModule(),
new MBeanServerModule(),
new HdfsModule(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.google.inject.Injector;
import io.airlift.bootstrap.Bootstrap;
import io.airlift.json.JsonModule;
import io.trino.plugin.base.CatalogName;
import io.trino.plugin.base.TypeDeserializerModule;
import io.trino.plugin.base.jmx.ConnectorObjectNameGeneratorModule;
import io.trino.plugin.base.jmx.MBeanServerModule;
Expand Down Expand Up @@ -51,12 +52,13 @@ public Connector create(String catalogName, Map<String, String> config, Connecto
Bootstrap app = new Bootstrap(
new MBeanModule(),
new MBeanServerModule(),
new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.elasticsearch", "trino.plugin.elasticsearch"),
new ConnectorObjectNameGeneratorModule("io.trino.plugin.elasticsearch", "trino.plugin.elasticsearch"),
new JsonModule(),
new TypeDeserializerModule(context.getTypeManager()),
new ElasticsearchConnectorModule(),
binder -> {
binder.bind(NodeManager.class).toInstance(context.getNodeManager());
binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName));
});

Injector injector = app
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import io.trino.filesystem.hdfs.HdfsFileSystemModule;
import io.trino.hdfs.HdfsModule;
import io.trino.hdfs.authentication.HdfsAuthenticationModule;
import io.trino.plugin.base.CatalogName;
import io.trino.plugin.base.CatalogNameModule;
import io.trino.plugin.base.TypeDeserializerModule;
import io.trino.plugin.base.classloader.ClassLoaderSafeConnectorAccessControl;
Expand Down Expand Up @@ -103,7 +104,7 @@ public static Connector createConnector(
new CatalogNameModule(catalogName),
new EventModule(),
new MBeanModule(),
new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.hive", "trino.plugin.hive"),
new ConnectorObjectNameGeneratorModule("io.trino.plugin.hive", "trino.plugin.hive"),
new JsonModule(),
new TypeDeserializerModule(context.getTypeManager()),
new HiveModule(),
Expand All @@ -128,6 +129,7 @@ public static Connector createConnector(
binder.bind(MetadataProvider.class).toInstance(context.getMetadataProvider());
binder.bind(PageIndexerFactory.class).toInstance(context.getPageIndexerFactory());
binder.bind(PageSorter.class).toInstance(context.getPageSorter());
binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName));
},
binder -> newSetBinder(binder, EventListener.class),
binder -> bindSessionPropertiesProvider(binder, HiveSessionProperties.class),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public static Connector createConnector(
Bootstrap app = new Bootstrap(
new EventModule(),
new MBeanModule(),
new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.iceberg", "trino.plugin.iceberg"),
new ConnectorObjectNameGeneratorModule("io.trino.plugin.iceberg", "trino.plugin.iceberg"),
new JsonModule(),
new IcebergModule(),
new IcebergSecurityModule(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.google.inject.Module;
import io.airlift.bootstrap.Bootstrap;
import io.airlift.json.JsonModule;
import io.trino.plugin.base.CatalogName;
import io.trino.plugin.base.CatalogNameModule;
import io.trino.plugin.base.jmx.ConnectorObjectNameGeneratorModule;
import io.trino.plugin.base.jmx.MBeanServerModule;
Expand Down Expand Up @@ -69,12 +70,13 @@ public Connector create(String catalogName, Map<String, String> config, Connecto
new CatalogNameModule(catalogName),
new JsonModule(),
new MBeanModule(),
new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.raptor.legacy", "trino.plugin.raptor.legacy"),
new ConnectorObjectNameGeneratorModule("io.trino.plugin.raptor.legacy", "trino.plugin.raptor.legacy"),
new MBeanServerModule(),
binder -> {
binder.bind(NodeManager.class).toInstance(context.getNodeManager());
binder.bind(PageSorter.class).toInstance(context.getPageSorter());
binder.bind(TypeManager.class).toInstance(context.getTypeManager());
binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName));
},
metadataModule,
new BackupModule(backupProviders),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.google.inject.Module;
import io.airlift.bootstrap.Bootstrap;
import io.airlift.drift.transport.netty.client.DriftNettyClientModule;
import io.trino.plugin.base.CatalogName;
import io.trino.plugin.base.jmx.ConnectorObjectNameGeneratorModule;
import io.trino.plugin.base.jmx.MBeanServerModule;
import io.trino.spi.connector.Connector;
Expand Down Expand Up @@ -56,10 +57,11 @@ public Connector create(String catalogName, Map<String, String> config, Connecto
Bootstrap app = new Bootstrap(
new MBeanModule(),
new MBeanServerModule(),
new ConnectorObjectNameGeneratorModule(catalogName, "io.trino.plugin.thrift", "trino.plugin.thrift"),
new ConnectorObjectNameGeneratorModule("io.trino.plugin.thrift", "trino.plugin.thrift"),
new DriftNettyClientModule(),
binder -> {
binder.bind(TypeManager.class).toInstance(context.getTypeManager());
binder.bind(CatalogName.class).toInstance(new CatalogName(catalogName));
},
locationModule,
new ThriftModule());
Expand Down