public FunctionInfo(String namespace, String name, int arity, boolean isFunctional) { this(new FunctionIdentifier(namespace, name, arity), isFunctional); }
public Function(QName qname, Signature signature) { this.fid = new FunctionIdentifier(VXQUERY, "{" + qname.getNamespaceURI() + "}" + qname.getLocalPart()); this.qname = qname; this.signature = signature; this.documentOrderPropagationPolicy = new DocumentOrderYESPropagationPolicy(); this.uniqueNodesPropagationPolicy = new UniqueNodesYESPropagationPolicy(); }
protected FunctionIdentifier getBuiltinFunctionIdentifier(String functionName, int arity) { FunctionIdentifier fi = new FunctionIdentifier(AlgebricksBuiltinFunctions.ALGEBRICKS_NS, functionName, arity); FunctionInfo afi = BuiltinFunctions.lookupFunction(fi); FunctionIdentifier builtinAquafi = afi == null ? null : afi.getFunctionIdentifier(); if (builtinAquafi != null) { fi = builtinAquafi; } else { fi = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, functionName, arity); afi = BuiltinFunctions.lookupFunction(fi); if (afi == null) { return null; } } return fi; }
public static boolean isBuiltinCompilerFunction(FunctionSignature signature, boolean includePrivateFunctions) { FunctionIdentifier fi = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, signature.getName(), signature.getArity()); IFunctionInfo finfo = getAsterixFunctionInfo(fi); if (builtinPublicFunctionsSet.keySet().contains(finfo) || (includePrivateFunctions && builtinPrivateFunctionsSet.keySet().contains(finfo))) { return true; } fi = new FunctionIdentifier(AlgebricksBuiltinFunctions.ALGEBRICKS_NS, signature.getName(), signature.getArity()); finfo = getAsterixFunctionInfo(fi); if (builtinPublicFunctionsSet.keySet().contains(finfo) || (includePrivateFunctions && builtinPrivateFunctionsSet.keySet().contains(finfo))) { return true; } return false; }
/** * Returns an internal implementation function for a public window function, * or {@code null} if given function is not a public window function * @param signature function signature * @return said value */ public static FunctionIdentifier getInternalWindowFunction(FunctionSignature signature) { IFunctionInfo finfo = FunctionUtil.getFunctionInfo(new FunctionIdentifier(FunctionConstants.ASTERIX_NS, signature.getName().toLowerCase(), signature.getArity())); return finfo != null ? BuiltinFunctions.getWindowFunction(finfo.getFunctionIdentifier()) : null; } }
/** * Whether a function signature is a SQL-92 core aggregate function. * * @param signature * , * the function signature. * @return true if the function signature is a SQL-92 core aggregate, * false otherwise. */ public static boolean isSql92AggregateFunction(FunctionSignature signature) { IFunctionInfo finfo = FunctionUtil.getFunctionInfo(new FunctionIdentifier(FunctionConstants.ASTERIX_NS, signature.getName().toLowerCase(), signature.getArity())); if (finfo == null) { return false; } return BuiltinFunctions.getAggregateFunction(finfo.getFunctionIdentifier()) != null; }
public static IFunctionInfo getFunctionInfo(FunctionSignature fs) { return getFunctionInfo(new FunctionIdentifier(fs.getNamespace(), fs.getName(), fs.getArity())); }
public static List<List<List<String>>> getFunctionDependencies(IQueryRewriter rewriter, Expression expression, MetadataProvider metadataProvider) throws CompilationException { Set<CallExpr> functionCalls = rewriter.getFunctionCalls(expression); //Get the List of used functions and used datasets List<List<String>> datasourceDependencies = new ArrayList<>(); List<List<String>> functionDependencies = new ArrayList<>(); for (CallExpr functionCall : functionCalls) { FunctionSignature signature = functionCall.getFunctionSignature(); FunctionIdentifier fid = new FunctionIdentifier(signature.getNamespace(), signature.getName(), signature.getArity()); if (fid.equals(BuiltinFunctions.DATASET)) { Pair<String, String> path = DatasetUtil.getDatasetInfo(metadataProvider, ((LiteralExpr) functionCall.getExprList().get(0)).getValue().getStringValue()); datasourceDependencies.add(Arrays.asList(path.first, path.second)); } else if (BuiltinFunctions.isBuiltinCompilerFunction(signature, false)) { continue; } else { functionDependencies.add(Arrays.asList(signature.getNamespace(), signature.getName(), Integer.toString(signature.getArity()))); } } List<List<List<String>>> dependencies = new ArrayList<>(); dependencies.add(datasourceDependencies); dependencies.add(functionDependencies); return dependencies; }
private static IFunctionInfo getScalarFunctionInfo(MetadataTransactionContext txnCtx, Function function) throws AlgebricksException { FunctionIdentifier fid = new FunctionIdentifier(function.getDataverseName(), function.getName(), function.getArity()); IResultTypeComputer typeComputer = getResultTypeComputer(txnCtx, function); List<IAType> arguments = new ArrayList<>(); IAType returnType; List<String> argumentTypes = function.getArguments(); for (String argumentType : argumentTypes) { arguments.add(getTypeInfo(argumentType, txnCtx, function)); } returnType = getTypeInfo(function.getReturnType(), txnCtx, function); return new ExternalScalarFunctionInfo(fid.getNamespace(), fid.getName(), fid.getArity(), returnType, function.getFunctionBody(), function.getLanguage(), arguments, typeComputer); }
String internalName = getInternalCoreAggregateFunctionName(fs); if (internalName != null) { FunctionIdentifier fi = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, internalName, fs.getArity()); IFunctionInfo finfo = FunctionUtil.getFunctionInfo(fi); if (finfo != null && BuiltinFunctions.getAggregateFunction(finfo.getFunctionIdentifier()) != null) {