use of io.prestosql.spi.type.ParametricType in project hetu-core by openlookeng.
the class PluginManager method installPlugin.
public void installPlugin(Plugin plugin) {
for (BlockEncoding blockEncoding : plugin.getBlockEncodings()) {
log.info("Registering block encoding %s", blockEncoding.getName());
metadataManager.getFunctionAndTypeManager().addBlockEncoding(blockEncoding);
}
for (Type type : plugin.getTypes()) {
log.info("Registering type %s", type.getTypeSignature());
metadataManager.getFunctionAndTypeManager().addType(type);
}
for (ParametricType parametricType : plugin.getParametricTypes()) {
log.info("Registering parametric type %s", parametricType.getName());
metadataManager.getFunctionAndTypeManager().addParametricType(parametricType);
}
for (ConnectorFactory connectorFactory : plugin.getConnectorFactories()) {
log.info("Registering connector %s", connectorFactory.getName());
connectorManager.addConnectorFactory(connectorFactory);
ConnectorCache.addCatalogConfig(plugin, connectorFactory.getName());
}
for (SessionPropertyConfigurationManagerFactory sessionConfigFactory : plugin.getSessionPropertyConfigurationManagerFactories()) {
log.info("Registering session property configuration manager %s", sessionConfigFactory.getName());
sessionPropertyDefaults.addConfigurationManagerFactory(sessionConfigFactory);
}
for (FunctionNamespaceManagerFactory functionNamespaceManagerFactory : plugin.getFunctionNamespaceManagerFactories()) {
log.info("Registering function namespace manager %s", functionNamespaceManagerFactory.getName());
metadataManager.getFunctionAndTypeManager().addFunctionNamespaceFactory(functionNamespaceManagerFactory);
}
for (ResourceGroupConfigurationManagerFactory configurationManagerFactory : plugin.getResourceGroupConfigurationManagerFactories()) {
log.info("Registering resource group configuration manager %s", configurationManagerFactory.getName());
resourceGroupManager.addConfigurationManagerFactory(configurationManagerFactory);
}
for (SystemAccessControlFactory accessControlFactory : plugin.getSystemAccessControlFactories()) {
log.info("Registering system access control %s", accessControlFactory.getName());
accessControlManager.addSystemAccessControlFactory(accessControlFactory);
}
for (PasswordAuthenticatorFactory authenticatorFactory : plugin.getPasswordAuthenticatorFactories()) {
log.info("Registering password authenticator %s", authenticatorFactory.getName());
passwordAuthenticatorManager.addPasswordAuthenticatorFactory(authenticatorFactory);
}
for (EventListenerFactory eventListenerFactory : plugin.getEventListenerFactories()) {
log.info("Registering event listener %s", eventListenerFactory.getName());
eventListenerManager.addEventListenerFactory(eventListenerFactory);
}
for (GroupProviderFactory groupProviderFactory : plugin.getGroupProviderFactories()) {
log.info("Registering group provider %s", groupProviderFactory.getName());
groupProviderManager.addGroupProviderFactory(groupProviderFactory);
}
// Install StateStorePlugin
for (StateStoreBootstrapper bootstrapper : plugin.getStateStoreBootstrappers()) {
log.info("Registering state store bootstrapper");
stateStoreLauncher.addStateStoreBootstrapper(bootstrapper);
}
for (StateStoreFactory stateStoreFactory : plugin.getStateStoreFactories()) {
log.info("Registering state store %s", stateStoreFactory.getName());
localStateStoreProvider.addStateStoreFactory(stateStoreFactory);
}
for (SeedStoreFactory seedStoreFactory : plugin.getSeedStoreFactories()) {
log.info("Registering seed store %s", seedStoreFactory.getName());
seedStoreManager.addSeedStoreFactory(seedStoreFactory);
}
for (CubeProvider cubeProvider : plugin.getCubeProviders()) {
log.info("Registering cube provider %s", cubeProvider.getName());
cubeManager.addCubeProvider(cubeProvider);
}
for (HetuFileSystemClientFactory fileSystemClientFactory : plugin.getFileSystemClientFactory()) {
log.info("Registering file system provider %s", fileSystemClientFactory.getName());
fileSystemClientManager.addFileSystemClientFactories(fileSystemClientFactory);
}
for (HetuMetaStoreFactory hetuMetaStoreFactory : plugin.getHetuMetaStoreFactories()) {
log.info("Registering hetu metastore %s", hetuMetaStoreFactory.getName());
hetuMetaStoreManager.addHetuMetaStoreFactory(hetuMetaStoreFactory);
}
for (IndexFactory indexFactory : plugin.getIndexFactories()) {
log.info("Loading index factory");
heuristicIndexerManager.loadIndexFactories(indexFactory);
}
installFunctionsPlugin(plugin);
}
use of io.prestosql.spi.type.ParametricType in project hetu-core by openlookeng.
the class BuiltInTypeRegistry method instantiateParametricType.
private Type instantiateParametricType(TypeManager typeManager, TypeSignature signature) {
List<TypeParameter> parameters = new ArrayList<>();
for (TypeSignatureParameter parameter : signature.getParameters()) {
TypeParameter typeParameter = TypeParameter.of(parameter, typeManager);
parameters.add(typeParameter);
}
ParametricType parametricType = parametricTypes.get(signature.getBase().toLowerCase(Locale.ENGLISH));
if (parametricType == null) {
throw new TypeNotFoundException(signature);
}
Type instantiatedType;
try {
instantiatedType = parametricType.createType(typeManager, parameters);
} catch (IllegalArgumentException e) {
throw new TypeNotFoundException(signature, e);
}
// TODO: reimplement this check? Currently "varchar(Integer.MAX_VALUE)" fails with "varchar"
return instantiatedType;
}
use of io.prestosql.spi.type.ParametricType in project hetu-core by openlookeng.
the class TypeUtil method parametricType.
private static Type parametricType(TypeManager typeManager, TypeSignature typeSignature) {
String typeName = typeSignature.getBase().toLowerCase(Locale.ENGLISH);
ParametricType parametricType = PARAMETRIC_TYPE_MAP.get(typeName);
if (parametricType != null) {
List<TypeParameter> parameters = new ArrayList<>();
for (TypeSignatureParameter parameter : typeSignature.getParameters()) {
TypeParameter typeParameter = TypeParameter.of(parameter, typeManager);
parameters.add(typeParameter);
}
return parametricType.createType(typeManager, parameters);
}
return null;
}
use of io.prestosql.spi.type.ParametricType in project hetu-core by openlookeng.
the class TypeUtil method parseType.
/**
* Parse type type.
*
* @param typeManager the type manager.
* @param typeName the type name
* @return the type
*/
public static Type parseType(TypeManager typeManager, String typeName) {
Type hetuType = null;
Matcher matcher = DESCRIBE_TYPE_PATTERN.matcher(typeName);
if (matcher.matches()) {
String type = matcher.group("type");
hetuType = typeMapping(type);
}
if (hetuType == null) {
TypeSignature typeSignature = TypeSignature.parseTypeSignature(typeName);
hetuType = parametricType(typeManager, typeSignature);
}
if (hetuType == null) {
throw new IllegalArgumentException("Type " + typeName + " is not supported");
}
return hetuType;
}
Aggregations