protected EvalNode visitCaseWhen(CONTEXT context, CaseWhenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); for (CaseWhenEval.IfThenEval ifThenEval : evalNode.getIfThenEvals()) { visitIfThen(context, ifThenEval, stack); } if (evalNode.hasElse()) { visit(context, evalNode.getElse(), stack); } stack.pop(); return evalNode; }
protected EvalNode visitCaseWhen(CONTEXT context, CaseWhenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); for (CaseWhenEval.IfThenEval ifThenEval : evalNode.getIfThenEvals()) { visitIfThen(context, ifThenEval, stack); } if (evalNode.hasElse()) { visit(context, evalNode.getElse(), stack); } stack.pop(); return evalNode; }
@Override public RESULT visitCaseWhen(CONTEXT context, CaseWhenEval evalNode, Stack<EvalNode> stack) { RESULT result = null; stack.push(evalNode); for (CaseWhenEval.IfThenEval ifThenEval : evalNode.getIfThenEvals()) { result = visitIfThen(context, ifThenEval, stack); } if (evalNode.hasElse()) { result = visit(context, evalNode.getElse(), stack); } stack.pop(); return result; }
@Override public RESULT visitCaseWhen(CONTEXT context, CaseWhenEval evalNode, Stack<EvalNode> stack) { RESULT result = null; stack.push(evalNode); for (CaseWhenEval.IfThenEval ifThenEval : evalNode.getIfThenEvals()) { result = visitIfThen(context, ifThenEval, stack); } if (evalNode.hasElse()) { result = visit(context, evalNode.getElse(), stack); } stack.pop(); return result; }
@Override protected EvalNode visitCaseWhen(Object o, CaseWhenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); CaseWhenPredicate caseWhenPredicate = new CaseWhenPredicate(); for (CaseWhenEval.IfThenEval ifThenEval : evalNode.getIfThenEvals()) { visit(o, ifThenEval.getCondition(), stack); Expr condition = exprs.pop(); visit(o, ifThenEval.getResult(), stack); Expr result = exprs.pop(); caseWhenPredicate.addWhen(condition, result); } if (evalNode.hasElse()) { visit(o, evalNode.getElse(), stack); Expr elseResult = exprs.pop(); caseWhenPredicate.setElseResult(elseResult); } exprs.push(caseWhenPredicate); stack.pop(); return null; } }
@Override protected EvalNode visitCaseWhen(Context context, CaseWhenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); context.append("CASE"); for (CaseWhenEval.IfThenEval ifThenEval : evalNode.getIfThenEvals()) { visitIfThen(context, ifThenEval, stack); } context.append("ELSE"); if (evalNode.hasElse()) { visit(context, evalNode.getElse(), stack); } stack.pop(); context.append("END"); return evalNode; }
@Override public EvalNode visitCaseWhen(EvalTreeProtoBuilderContext context, CaseWhenEval caseWhen, Stack<EvalNode> stack) { // visiting and registering childs super.visitCaseWhen(context, caseWhen, stack); int [] childIds = registerGetChildIds(context, caseWhen); Preconditions.checkState(childIds.length > 0, "Case When must have at least one child, but there is no child"); // building itself PlanProto.CaseWhenEval.Builder caseWhenBuilder = PlanProto.CaseWhenEval.newBuilder(); int ifCondsNum = childIds.length - (caseWhen.hasElse() ? 1 : 0); for (int i = 0; i < ifCondsNum; i++) { caseWhenBuilder.addIfConds(childIds[i]); } if (caseWhen.hasElse()) { caseWhenBuilder.setElse(childIds[childIds.length - 1]); } // registering itself and building EvalNode PlanProto.EvalNode.Builder builder = createEvalBuilder(context, caseWhen); builder.setCasewhen(caseWhenBuilder); context.treeBuilder.addNodes(builder); return caseWhen; }
@Override public EvalNode visitCaseWhen(EvalTreeProtoBuilderContext context, CaseWhenEval caseWhen, Stack<EvalNode> stack) { // visiting and registering childs super.visitCaseWhen(context, caseWhen, stack); int [] childIds = registerGetChildIds(context, caseWhen); Preconditions.checkState(childIds.length > 0, "Case When must have at least one child, but there is no child"); // building itself PlanProto.CaseWhenEval.Builder caseWhenBuilder = PlanProto.CaseWhenEval.newBuilder(); int ifCondsNum = childIds.length - (caseWhen.hasElse() ? 1 : 0); for (int i = 0; i < ifCondsNum; i++) { caseWhenBuilder.addIfConds(childIds[i]); } if (caseWhen.hasElse()) { caseWhenBuilder.setElse(childIds[childIds.length - 1]); } // registering itself and building EvalNode PlanProto.EvalNode.Builder builder = createEvalBuilder(context, caseWhen); builder.setCasewhen(caseWhenBuilder); context.treeBuilder.addNodes(builder); return caseWhen; }
@Override protected EvalNode visitCaseWhen(Context context, CaseWhenEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); context.append("CASE"); for (CaseWhenEval.IfThenEval ifThenEval : evalNode.getIfThenEvals()) { visitIfThen(context, ifThenEval, stack); } context.append("ELSE"); if (evalNode.hasElse()) { visit(context, evalNode.getElse(), stack); } stack.pop(); context.append("END"); return evalNode; }
if (caseWhen.hasElse() && caseWhen.getElse().equals(evalNode)) { caseWhen.setElseResult(tobeReplaced);
if (caseWhen.hasElse() && caseWhen.getElse().equals(evalNode)) { caseWhen.setElseResult(tobeReplaced);
if (caseWhen.hasElse()) { stack.push(caseWhen); codeGen.visit(context, caseWhen.getElse(), stack);
if (caseWhen.hasElse()) { stack.push(caseWhen); codeGen.visit(context, caseWhen.getElse(), stack);
if (caseWhenEval.hasElse()) { caseWhenEval.setElseResult(convertType(ctx, caseWhenEval.getElse(), toType));
if (caseWhenEval.hasElse()) { caseWhenEval.setElseResult(convertType(ctx, caseWhenEval.getElse(), toType));