一、Presto函数注册
Presto function通过FunctionRegistry注册,FunctionRegistry在MetadataManager中初始化
1.1 MetadataManager
@Inject
public MetadataManager(FeaturesConfig featuresConfig,
TypeManager typeManager,
JsonCodec<ViewDefinition> viewCodec,
BlockEncodingSerde blockEncodingSerde,
SessionPropertyManager sessionPropertyManager,
SchemaPropertyManager schemaPropertyManager,
TablePropertyManager tablePropertyManager,
ColumnPropertyManager columnPropertyManager,
TransactionManager transactionManager)
{
functions = new FunctionRegistry(typeManager, blockEncodingSerde, featuresConfig);
......
}
1.2 FunctionRegistry
函数注册的两种方式:
- FunctionRegistry的构造中对不同类型的函数进行注册和签名管理
- PluginManager的installPlugin中调用FunctionRegistry追加插件中的函数
方式一:FunctionRegistry构造函数注册函数
FunctionRegistry的构造中对不同类型的函数进行注册和签名管理
FunctionListBuilder builder = new FunctionListBuilder()
.window(RowNumberFunction.