@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; }
break; case CASE: result = visitCaseWhen(context, (CaseWhenEval) evalNode, stack); break; case IF_THEN:
break; case CASE: result = visitCaseWhen(context, (CaseWhenEval) evalNode, stack); break; case IF_THEN: