in paimon-presto-common/src/main/java/org/apache/paimon/presto/PrestoConnectorFactory.java [50:100]
public Connector create(
String catalogName, Map<String, String> config, ConnectorContext context) {
requireNonNull(config, "config is null");
try {
Bootstrap app =
new Bootstrap(
new JsonModule(),
new PaimonModule(
catalogName,
context.getTypeManager(),
context.getFunctionMetadataManager(),
context.getStandardFunctionResolution(),
context.getRowExpressionService(),
config));
Bootstrap bootstrap =
app.doNotInitializeLogging().setRequiredConfigurationProperties(config).quiet();
try {
// Using reflection to achieve compatibility with different versions of
// dependencies.
Method noStrictConfigMethod = Bootstrap.class.getMethod("noStrictConfig");
noStrictConfigMethod.invoke(bootstrap);
} catch (java.lang.NoSuchMethodException e) {
// ignore
}
Injector injector = bootstrap.initialize();
PrestoSessionProperties prestoSessionProperties =
injector.getInstance(PrestoSessionProperties.class);
PrestoTransactionManager prestoTransactionManager =
injector.getInstance(PrestoTransactionManager.class);
PrestoSplitManager prestoSplitManager = injector.getInstance(PrestoSplitManager.class);
PrestoPageSourceProvider prestoPageSourceProvider =
injector.getInstance(PrestoPageSourceProvider.class);
PrestoMetadata prestoMetadata = injector.getInstance(PrestoMetadata.class);
PrestoPlanOptimizerProvider prestoPlanOptimizerProvider =
injector.getInstance(PrestoPlanOptimizerProvider.class);
return new PrestoConnector(
prestoSessionProperties.getSessionProperties(),
prestoTransactionManager,
prestoSplitManager,
prestoPageSourceProvider,
prestoMetadata,
Optional.of(prestoPlanOptimizerProvider));
} catch (Exception e) {
throwIfUnchecked(e);
throw new RuntimeException(e);
}
}