public FunctionInfo registerGenericUDAF(String functionName, GenericUDAFResolver genericUDAFResolver, FunctionResource... resources) { FunctionType functionType = isNative ? FunctionType.BUILTIN : FunctionType.TEMPORARY; return registerGenericUDAF(functionName, functionType, genericUDAFResolver, resources); }
public FunctionInfo registerGenericUDAF(String functionName, GenericUDAFResolver genericUDAFResolver, FunctionResource... resources) { FunctionType functionType = isNative ? FunctionType.BUILTIN : FunctionType.TEMPORARY; return registerGenericUDAF(functionName, functionType, genericUDAFResolver, resources); }
@SuppressWarnings("unchecked") private FunctionInfo registerFunction( String functionName, FunctionType functionType, Class<?> udfClass, FunctionResource... resources) { FunctionUtils.UDFClassType udfClassType = FunctionUtils.getUDFClassType(udfClass); switch (udfClassType) { case UDF: return registerUDF( functionName, functionType, (Class<? extends UDF>) udfClass, false, functionName.toLowerCase(), resources); case GENERIC_UDF: return registerGenericUDF( functionName, functionType, (Class<? extends GenericUDF>) udfClass, resources); case GENERIC_UDTF: return registerGenericUDTF( functionName, functionType, (Class<? extends GenericUDTF>) udfClass, resources); case UDAF: return registerUDAF( functionName, functionType, (Class<? extends UDAF>) udfClass, resources); case GENERIC_UDAF_RESOLVER: return registerGenericUDAF( functionName, functionType, (GenericUDAFResolver) ReflectionUtil.newInstance(udfClass, null), resources); case TABLE_FUNCTION_RESOLVER: // native or not would be decided by annotation. need to evaluate that first return registerTableFunction(functionName, functionType, (Class<? extends TableFunctionResolver>) udfClass, resources); } return null; }
@SuppressWarnings("unchecked") private FunctionInfo registerFunction( String functionName, FunctionType functionType, Class<?> udfClass, FunctionResource... resources) { FunctionUtils.UDFClassType udfClassType = FunctionUtils.getUDFClassType(udfClass); switch (udfClassType) { case UDF: return registerUDF( functionName, functionType, (Class<? extends UDF>) udfClass, false, functionName.toLowerCase(), resources); case GENERIC_UDF: return registerGenericUDF( functionName, functionType, (Class<? extends GenericUDF>) udfClass, resources); case GENERIC_UDTF: return registerGenericUDTF( functionName, functionType, (Class<? extends GenericUDTF>) udfClass, resources); case UDAF: return registerUDAF( functionName, functionType, (Class<? extends UDAF>) udfClass, resources); case GENERIC_UDAF_RESOLVER: return registerGenericUDAF( functionName, functionType, (GenericUDAFResolver) ReflectionUtil.newInstance(udfClass, null), resources); case TABLE_FUNCTION_RESOLVER: // native or not would be decided by annotation. need to evaluate that first return registerTableFunction(functionName, functionType, (Class<? extends TableFunctionResolver>) udfClass, resources); } return null; }
functionName, (Class<? extends UDAF>) udfClass, resources); case GENERIC_UDAF_RESOLVER: return registerGenericUDAF( functionName, (GenericUDAFResolver) ReflectionUtils.newInstance(udfClass, null), resources);