@Override public UnnestingFunctionCallExpression cloneExpression() { cloneAnnotations(); List<Mutable<ILogicalExpression>> clonedArgs = cloneArguments(); UnnestingFunctionCallExpression ufce = new UnnestingFunctionCallExpression(finfo, clonedArgs); ufce.setReturnsUniqueValues(returnsUniqueValues); ufce.setOpaqueParameters(this.getOpaqueParameters()); ufce.setSourceLocation(sourceLoc); return ufce; }
new UnnestingFunctionCallExpression(secondaryIndexSearch, secondaryIndexFuncArgs); secondaryIndexSearchFunc.setSourceLocation(sourceLoc); secondaryIndexSearchFunc.setReturnsUniqueValues(true);
private AbstractFunctionCallExpression lookupBuiltinFunction(String functionName, int arity, List<Mutable<ILogicalExpression>> args, SourceLocation sourceLoc) { AbstractFunctionCallExpression f; FunctionIdentifier fi = getBuiltinFunctionIdentifier(functionName, arity); if (fi == null) { return null; } if (BuiltinFunctions.isBuiltinAggregateFunction(fi)) { f = BuiltinFunctions.makeAggregateFunctionExpression(fi, args); } else if (BuiltinFunctions.isBuiltinUnnestingFunction(fi)) { UnnestingFunctionCallExpression ufce = new UnnestingFunctionCallExpression(FunctionUtil.getFunctionInfo(fi), args); ufce.setReturnsUniqueValues(BuiltinFunctions.returnsUniqueValues(fi)); f = ufce; } else if (BuiltinFunctions.isWindowFunction(fi)) { f = BuiltinFunctions.makeWindowFunctionExpression(fi, args); } else { f = new ScalarFunctionCallExpression(FunctionUtil.getFunctionInfo(fi), args); } f.setSourceLocation(sourceLoc); return f; }
new UnnestingFunctionCallExpression(primaryIndexSearch, primaryIndexFuncArgs); primaryIndexSearchFunc.setSourceLocation(dataSourceOp.getSourceLocation()); primaryIndexSearchFunc.setReturnsUniqueValues(true); AbstractUnnestMapOperator unnestMapOp; if (!leftOuterUnnestMapRequired) {