@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; } }