private IScalarEvaluatorFactory createScalarFunctionEvaluatorFactory(AbstractFunctionCallExpression expr,
IVariableTypeEnvironment env, IOperatorSchema[] inputSchemas, JobGenContext context)
throws AlgebricksException {
IScalarEvaluatorFactory[] args = codegenArguments(expr, env, inputSchemas, context);
IFunctionDescriptor fd = expr.getFunctionInfo() instanceof IExternalFunctionInfo
? ExternalFunctionDescriptorProvider.getExternalFunctionDescriptor(
(IExternalFunctionInfo) expr.getFunctionInfo(), (ICcApplicationContext) context.getAppContext())
: resolveFunction(expr, env, context);
return fd.createEvaluatorFactory(args);
}