private RESULT visitDefaultFunctionEval(CONTEXT context, FunctionEval functionEval, Stack<EvalNode> stack) { RESULT result = null; stack.push(functionEval); if (functionEval.getArgs() != null) { for (EvalNode arg : functionEval.getArgs()) { result = visit(context, arg, stack); } } stack.pop(); return result; }
private RESULT visitDefaultFunctionEval(CONTEXT context, FunctionEval functionEval, Stack<EvalNode> stack) { RESULT result = null; stack.push(functionEval); if (functionEval.getArgs() != null) { for (EvalNode arg : functionEval.getArgs()) { result = visit(context, arg, stack); } } stack.pop(); return result; }
@Override protected EvalNode visitFuncCall(Context context, FunctionEval func, Stack<EvalNode> stack) { // TODO - TAJO-1837 should be resolved if we support RDBMS functions better. stack.push(func); context.sb.append(func.getName()).append("("); boolean first = true; for (EvalNode param : func.getArgs()) { if (first) { first = false; } else { context.sb.append(","); } visit(context, param, stack); } context.sb.append(")"); stack.pop(); return func; }
@Override protected EvalNode visitFuncCall(Context context, FunctionEval func, Stack<EvalNode> stack) { // TODO - TAJO-1837 should be resolved if we support RDBMS functions better. stack.push(func); context.sb.append(func.getName()).append("("); boolean first = true; for (EvalNode param : func.getArgs()) { if (first) { first = false; } else { context.sb.append(","); } visit(context, param, stack); } context.sb.append(")"); stack.pop(); return func; }
@Override protected EvalNode visitDefaultFunctionEval(Object context, Stack<EvalNode> stack, FunctionEval functionEval) { stack.push(functionEval); if (functionEval.getArgs() != null) { EvalNode [] args = functionEval.getArgs(); for (int i = 0; i < args.length; i++) { visit(context, args[i], stack); if (args[i].getType() == EvalType.AND || args[i].getType() == EvalType.OR) { functionEval.setArg(i, rewrite((BinaryEval) args[i])); } } } stack.pop(); return functionEval; }
@Override protected EvalNode visitDefaultFunctionEval(Object context, Stack<EvalNode> stack, FunctionEval functionEval) { stack.push(functionEval); if (functionEval.getArgs() != null) { EvalNode [] args = functionEval.getArgs(); for (int i = 0; i < args.length; i++) { visit(context, args[i], stack); if (args[i].getType() == EvalType.AND || args[i].getType() == EvalType.OR) { functionEval.setArg(i, rewrite((BinaryEval) args[i])); } } } stack.pop(); return functionEval; }
@Override public EvalNode visitFuncCall(LogicalPlanner.PlanContext context, FunctionEval function, Stack<EvalNode> stack) { stack.push(function); for (int i = 0; i < function.getArgs().length; i++) { if (function.getArgs()[i].getType() == EvalType.FIELD) { FieldEval fieldEval = (FieldEval) function.getArgs()[i]; if (context.getQueryBlock().isConstReference(fieldEval.getName())) { function.setArg(i, context.getQueryBlock().getConstByReference(fieldEval.getName())); continue; } } visit(context, function.getArgs()[i], stack); } stack.pop(); return function; } }
@Override public EvalNode visitFuncCall(LogicalPlanner.PlanContext context, FunctionEval function, Stack<EvalNode> stack) { stack.push(function); for (int i = 0; i < function.getArgs().length; i++) { if (function.getArgs()[i].getType() == EvalType.FIELD) { FieldEval fieldEval = (FieldEval) function.getArgs()[i]; if (context.getQueryBlock().isConstReference(fieldEval.getName())) { function.setArg(i, context.getQueryBlock().getConstByReference(fieldEval.getName())); continue; } } visit(context, function.getArgs()[i], stack); } stack.pop(); return function; } }
@Override public EvalNode visitFuncCall(Object context, FunctionEval evalNode, Stack<EvalNode> stack) { boolean constantOfAllDescendents = true; if ("sleep".equals(evalNode.funcDesc.getFunctionName())) { constantOfAllDescendents = false; } else { if (evalNode.getArgs() != null) { for (EvalNode arg : evalNode.getArgs()) { arg = visit(context, arg, stack); constantOfAllDescendents &= (arg.getType() == EvalType.CONST); } } } if (constantOfAllDescendents && evalNode.getType() == EvalType.FUNCTION) { return new ConstEval(evalNode.bind(null, null).eval(null)); } else { return evalNode; } } }
@Override public EvalNode visitFuncCall(Object context, FunctionEval evalNode, Stack<EvalNode> stack) { boolean constantOfAllDescendents = true; if ("sleep".equals(evalNode.funcDesc.getFunctionName())) { constantOfAllDescendents = false; } else { if (evalNode.getArgs() != null) { for (EvalNode arg : evalNode.getArgs()) { arg = visit(context, arg, stack); constantOfAllDescendents &= (arg.getType() == EvalType.CONST); } } } if (constantOfAllDescendents && evalNode.getType() == EvalType.FUNCTION) { return new ConstEval(evalNode.bind(null, null).eval(null)); } else { return evalNode; } } }
EvalNode [] arguments = functionEval.getArgs(); for (int i = 0; i < arguments.length; i++) { if (arguments[i].equals(evalNode)) {
EvalNode [] arguments = functionEval.getArgs(); for (int i = 0; i < arguments.length; i++) { if (arguments[i].equals(evalNode)) {
public static void emit(EvalCodeGenerator generator, EvalCodeGenContext context, FunctionEval func, Stack<EvalNode> stack) { int paramNum = func.getArgs().length; context.push(paramNum); context.newArray(Datum.class); // new Datum[paramNum] EvalNode [] params = func.getArgs(); for (int paramIdx = 0; paramIdx < func.getArgs().length; paramIdx++) {
public static void emit(EvalCodeGenerator generator, EvalCodeGenContext context, FunctionEval func, Stack<EvalNode> stack) { int paramNum = func.getArgs().length; context.push(paramNum); context.newArray(Datum.class); // new Datum[paramNum] EvalNode [] params = func.getArgs(); for (int paramIdx = 0; paramIdx < func.getArgs().length; paramIdx++) {
public static void emit(EvalCodeGenerator generator, EvalCodeGenContext context, FunctionEval func, Stack<EvalNode> stack) { EvalNode [] params = func.getArgs(); for (int paramIdx = 0; paramIdx < func.getArgs().length; paramIdx++) { Class clazz = method.getParamClasses()[paramIdx]; emitBoxedParameter(context, func.getArgs()[paramIdx].getValueType()); } else { updateNullFlag(context, clazz, nullParamFlag); for (int paramIdx = 0; paramIdx < func.getArgs().length; paramIdx++) { Class clazz = method.getParamClasses()[paramIdx]; if (FunctionUtil.isNullableParam(clazz)) { context.pop(); } else { context.pop(func.getArgs()[paramIdx].getValueType());
public static void emit(EvalCodeGenerator generator, EvalCodeGenContext context, FunctionEval func, Stack<EvalNode> stack) { EvalNode [] params = func.getArgs(); for (int paramIdx = 0; paramIdx < func.getArgs().length; paramIdx++) { Class clazz = method.getParamClasses()[paramIdx]; emitBoxedParameter(context, func.getArgs()[paramIdx].getValueType()); } else { updateNullFlag(context, clazz, nullParamFlag); for (int paramIdx = 0; paramIdx < func.getArgs().length; paramIdx++) { Class clazz = method.getParamClasses()[paramIdx]; if (FunctionUtil.isNullableParam(clazz)) { context.pop(); } else { context.pop(func.getArgs()[paramIdx].getValueType());
constantOfAllDescendents = false; } else { for (EvalNode arg : evalNode.getArgs()) { arg = visit(context, arg, stack); constantOfAllDescendents &= (arg.getType() == EvalType.CONST);
constantOfAllDescendents = false; } else { for (EvalNode arg : evalNode.getArgs()) { arg = visit(context, arg, stack); constantOfAllDescendents &= (arg.getType() == EvalType.CONST);