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; }
/** * 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; }
FunctionIdentifier funcIdent = BuiltinFunctions.getAggregateFunction(funcExpr.getFunctionIdentifier()); if (funcIdent == null) {
/** * Recursively check whether the list of expressions contains an aggregate function. * * @param exprRefs * @return true if the list contains an aggregate function and false otherwise. */ private boolean containsAggregate(List<Mutable<ILogicalExpression>> exprRefs) { for (Mutable<ILogicalExpression> exprRef : exprRefs) { ILogicalExpression expr = exprRef.getValue(); if (expr.getExpressionTag() != LogicalExpressionTag.FUNCTION_CALL) { continue; } AbstractFunctionCallExpression funcExpr = (AbstractFunctionCallExpression) expr; FunctionIdentifier funcIdent = BuiltinFunctions.getAggregateFunction(funcExpr.getFunctionIdentifier()); if (funcIdent == null) { // Recursively look in func args. if (containsAggregate(funcExpr.getArguments())) { return true; } } else { // This is an aggregation function. return true; } } return false; }
(AbstractFunctionCallExpression) srcAssignExprRef.getValue(); FunctionIdentifier aggFuncIdent = BuiltinFunctions.getAggregateFunction(assignFuncExpr.getFunctionIdentifier());
case FUNCTION_CALL: AbstractFunctionCallExpression fce = (AbstractFunctionCallExpression) expr; FunctionIdentifier fi = BuiltinFunctions.getAggregateFunction(fce.getFunctionIdentifier()); if (fi != null) { ILogicalExpression a1 = fce.getArguments().get(0).getValue();
FunctionIdentifier fi = new FunctionIdentifier(FunctionConstants.ASTERIX_NS, internalName, fs.getArity()); IFunctionInfo finfo = FunctionUtil.getFunctionInfo(fi); if (finfo != null && BuiltinFunctions.getAggregateFunction(finfo.getFunctionIdentifier()) != null) { return new FunctionSignature(FunctionConstants.ASTERIX_NS, internalName, fs.getArity());