@Override public FunctionIdentifier getIdentifier() { return finfo.getFunctionIdentifier(); }
@Override public String toString() { return finfo.display(arguments); }
@Override public boolean isFunctional() { if (!finfo.isFunctional()) { return false; } for (Mutable<ILogicalExpression> e : arguments) { if (!e.getValue().isFunctional()) { return false; } } return true; }
private static boolean containsNonpureCall(ILogicalExpression expr) { if (expr.getExpressionTag() == LogicalExpressionTag.FUNCTION_CALL) { AbstractFunctionCallExpression fExpr = (AbstractFunctionCallExpression) expr; if (!fExpr.getFunctionInfo().isFunctional()) { return true; } for (Mutable<ILogicalExpression> subExpr : fExpr.getArguments()) { if (containsNonpureCall(subExpr.getValue())) { return true; } } } return false; }
public FunctionIdentifier getFunctionIdentifier() { return finfo.getFunctionIdentifier(); }
/** * @param args, * the arguments. * @return a display string of the FunctionInfo. */ @Override public String display(List<Mutable<ILogicalExpression>> args) { return FunctionDisplayUtil.display(this, args, input -> IFunctionInfo.super.display(input)); }
public static FunctionIdentifier getIntermediateAggregateFunction(FunctionIdentifier fi) { IFunctionInfo funcInfo = aggregateToIntermediateAggregate.get(getAsterixFunctionInfo(fi)); if (funcInfo == null) { return null; } return funcInfo.getFunctionIdentifier(); }
public static FunctionIdentifier getAggregateFunctionForDistinct(FunctionIdentifier distinctVersionOfAggregate) { IFunctionInfo finfo = distinctToRegularScalarAggregateFunctionMap.get(getAsterixFunctionInfo(distinctVersionOfAggregate)); return finfo == null ? null : finfo.getFunctionIdentifier(); }
public static FunctionIdentifier getBuiltinFunctionIdentifier(FunctionIdentifier fi) { IFunctionInfo finfo = getAsterixFunctionInfo(fi); return finfo == null ? null : finfo.getFunctionIdentifier(); }
public static FunctionIdentifier getGlobalAggregateFunction(FunctionIdentifier fi) { return aggregateToGlobalAggregate.get(getAsterixFunctionInfo(fi)).getFunctionIdentifier(); }
public static FunctionIdentifier getAggregateFunction(FunctionIdentifier scalarVersionOfAggregate) { IFunctionInfo finfo = scalarToAggregateFunctionMap.get(getAsterixFunctionInfo(scalarVersionOfAggregate)); return finfo == null ? null : finfo.getFunctionIdentifier(); }
public static FunctionIdentifier getWindowFunction(FunctionIdentifier sqlfi) { IFunctionInfo finfo = sqlToWindowFunctions.get(getAsterixFunctionInfo(sqlfi)); return finfo == null ? null : finfo.getFunctionIdentifier(); }
public static FunctionIdentifier getLocalAggregateFunction(FunctionIdentifier fi) { return aggregateToLocalAggregate.get(getAsterixFunctionInfo(fi)).getFunctionIdentifier(); }
/** * @param args, * the arguments. * @return a display string of the FunctionInfo. */ default String display(List<Mutable<ILogicalExpression>> args) { StringBuilder sb = new StringBuilder(); sb.append(getFunctionIdentifier().getName() + "("); boolean first = true; for (Mutable<ILogicalExpression> ref : args) { if (first) { first = false; } else { sb.append(", "); } sb.append(ref.getValue()); } sb.append(")"); return sb.toString(); } }
private FunctionIdentifier getAggregateFunctionForDistinct(FunctionSignature signature) { IFunctionInfo finfo = FunctionUtil.getFunctionInfo(signature); FunctionIdentifier aggFn = finfo != null ? BuiltinFunctions.getAggregateFunction(finfo.getFunctionIdentifier()) : null; return aggFn != null ? BuiltinFunctions.getAggregateFunctionForDistinct(aggFn) : null; }
@Override public String visitAggregateFunctionCallExpression(AggregateFunctionCallExpression expr, Integer indent) throws AlgebricksException { if (expr.isTwoStep()) { IFunctionInfo step1Agg = expr.getStepOneAggregate(); String step1 = (step1Agg != null ? step1Agg.getFunctionIdentifier().toString() : "null"); IFunctionInfo step2Agg = expr.getStepTwoAggregate(); String step2 = (step2Agg != null ? step2Agg.getFunctionIdentifier().toString() : "null"); StringBuilder sb = new StringBuilder(); sb.append("function-call: [" + step1 + "|" + step2 + "], Args:"); appendArguments(sb, expr.getArguments(), indent + 2); return sb.toString(); } else if (expr.getFunctionInfo() == null) { StringBuilder sb = new StringBuilder(); sb.append("function-call: [null], Args:"); appendArguments(sb, expr.getArguments(), indent + 2); return sb.toString(); } else { return appendFunction(new StringBuilder(), expr, indent).toString(); } }
/** * 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; } }
private boolean processExpression(Mutable<ILogicalOperator> opRef, Mutable<ILogicalExpression> search) { boolean modified = false; functionList.clear(); ExpressionToolbox.findAllFunctionExpressions(search, functionList); for (Mutable<ILogicalExpression> searchM : functionList) { searchFunction = (AbstractFunctionCallExpression) searchM.getValue(); if (ALGEBRICKS_MAP.containsKey(searchFunction.getFunctionIdentifier())) { FunctionIdentifier fid = searchFunction.getFunctionIdentifier(); if (ALGEBRICKS_MAP.get(fid).first == null) { modified = convertAlgebricksExpression(searchM, ALGEBRICKS_MAP.get(fid).second, false); } else if (ALGEBRICKS_MAP.get(fid).second == null) { modified = convertAlgebricksExpression(searchM, ALGEBRICKS_MAP.get(fid).first, true); } else { IExpressionAnnotation annotate = searchFunction.getAnnotations().get( ALGEBRICKS_CONVERSION_ANNOTATION); if (((FunctionIdentifier) annotate.getObject()).equals(ALGEBRICKS_MAP.get(fid).first .getFunctionIdentifier())) { modified = convertAlgebricksExpression(searchM, ALGEBRICKS_MAP.get(fid).first, true); } else if (((FunctionIdentifier) annotate.getObject()).equals(ALGEBRICKS_MAP.get(fid).second .getFunctionIdentifier())) { modified = convertAlgebricksExpression(searchM, ALGEBRICKS_MAP.get(fid).second, false); } } } } return modified; }
/** * 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; }
if (!BuiltinFunctions.isBuiltinUnnestingFunction(functionInfo.getFunctionIdentifier())) { return false;