@Override protected EvalNode visitUnaryEval(Object context, UnaryEval unaryEval, Stack<EvalNode> stack) { stack.push(unaryEval); EvalNode child = unaryEval.getChild(); visit(context, child, stack); if (child.getType() == EvalType.AND || child.getType() == EvalType.OR) { unaryEval.setChild(rewrite((BinaryEval) child)); } stack.pop(); return unaryEval; }
@Override protected EvalNode visitUnaryEval(Object context, UnaryEval unaryEval, Stack<EvalNode> stack) { stack.push(unaryEval); EvalNode child = unaryEval.getChild(); visit(context, child, stack); if (child.getType() == EvalType.AND || child.getType() == EvalType.OR) { unaryEval.setChild(rewrite((BinaryEval) child)); } stack.pop(); return unaryEval; }
@Override public EvalNode visitUnaryEval(LogicalPlanner.PlanContext context, UnaryEval unaryEval, Stack<EvalNode> stack) { stack.push(unaryEval); if (unaryEval.getChild().getType() == EvalType.FIELD) { FieldEval fieldEval = (FieldEval) unaryEval.getChild(); if (context.getQueryBlock().isConstReference(fieldEval.getName())) { unaryEval.setChild(context.getQueryBlock().getConstByReference(fieldEval.getName())); stack.pop(); return unaryEval; } } visit(context, unaryEval.getChild(), stack); stack.pop(); return unaryEval; }
@Override public EvalNode visitUnaryEval(LogicalPlanner.PlanContext context, UnaryEval unaryEval, Stack<EvalNode> stack) { stack.push(unaryEval); if (unaryEval.getChild().getType() == EvalType.FIELD) { FieldEval fieldEval = (FieldEval) unaryEval.getChild(); if (context.getQueryBlock().isConstReference(fieldEval.getName())) { unaryEval.setChild(context.getQueryBlock().getConstByReference(fieldEval.getName())); stack.pop(); return unaryEval; } } visit(context, unaryEval.getChild(), stack); stack.pop(); return unaryEval; }
@Override public EvalNode visitUnaryEval(LogicalPlanner.PlanContext context, UnaryEval unaryEval, Stack<EvalNode> stack) { stack.push(unaryEval); EvalNode child = visit(context, unaryEval.getChild(), stack); stack.pop(); unaryEval.setChild(child); if (child.getType() == EvalType.CONST) { // session's time zone String timezoneId = context.getQueryContext().get(SessionVars.TIMEZONE); EvalContext evalContext = new EvalContext(); evalContext.setTimeZone(TimeZone.getTimeZone(timezoneId)); unaryEval.bind(evalContext, null); return new ConstEval(unaryEval.eval(null)); } return unaryEval; }
@Override public EvalNode visitUnaryEval(LogicalPlanner.PlanContext context, UnaryEval unaryEval, Stack<EvalNode> stack) { stack.push(unaryEval); EvalNode child = visit(context, unaryEval.getChild(), stack); stack.pop(); unaryEval.setChild(child); if (child.getType() == EvalType.CONST) { // session's time zone String timezoneId = context.getQueryContext().get(SessionVars.TIMEZONE); EvalContext evalContext = new EvalContext(); evalContext.setTimeZone(TimeZone.getTimeZone(timezoneId)); unaryEval.bind(evalContext, null); return new ConstEval(unaryEval.eval(null)); } return unaryEval; }
((UnaryEval)parent).setChild(tobeReplaced);
((UnaryEval)parent).setChild(tobeReplaced);