public EvalNode visitBinaryEval(EvalCodeGenContext context, Stack<EvalNode> stack, BinaryEval binaryEval) { super.visitBinaryEval(context, stack, binaryEval); if (EvalType.isStringPatternMatchOperator(binaryEval.getType())) { if (!context.symbols.containsKey(binaryEval)) { String fieldName = binaryEval.getType().name() + "_" + context.seqId++; context.symbols.put(binaryEval, fieldName); Class clazz = EvalCodeGenerator.getStringPatternEvalClass(binaryEval.getType()); context.classWriter.visitField(Opcodes.ACC_PRIVATE, fieldName, "L" + TajoGeneratorAdapter.getInternalName(clazz) + ";", null, null); } } else if (binaryEval.getType() == EvalType.IN) { if (!context.symbols.containsKey(binaryEval)) { String fieldName = binaryEval.getType().name() + "_" + context.seqId++; context.symbols.put(binaryEval, fieldName); context.classWriter.visitField(Opcodes.ACC_PRIVATE, fieldName, "L" + TajoGeneratorAdapter.getInternalName(InEval.class) + ";", null, null); } } return binaryEval; }
public EvalNode visitBinaryEval(EvalCodeGenContext context, Stack<EvalNode> stack, BinaryEval binaryEval) { super.visitBinaryEval(context, stack, binaryEval); if (EvalType.isStringPatternMatchOperator(binaryEval.getType())) { if (!context.symbols.containsKey(binaryEval)) { String fieldName = binaryEval.getType().name() + "_" + context.seqId++; context.symbols.put(binaryEval, fieldName); Class clazz = EvalCodeGenerator.getStringPatternEvalClass(binaryEval.getType()); context.classWriter.visitField(Opcodes.ACC_PRIVATE, fieldName, "L" + TajoGeneratorAdapter.getInternalName(clazz) + ";", null, null); } } else if (binaryEval.getType() == EvalType.IN) { if (!context.symbols.containsKey(binaryEval)) { String fieldName = binaryEval.getType().name() + "_" + context.seqId++; context.symbols.put(binaryEval, fieldName); context.classWriter.visitField(Opcodes.ACC_PRIVATE, fieldName, "L" + TajoGeneratorAdapter.getInternalName(InEval.class) + ";", null, null); } } return binaryEval; }
result = visitUnaryEval(context, (UnaryEval) evalNode, stack); } else if (evalNode instanceof BinaryEval) { result = visitBinaryEval(context, stack, (BinaryEval) evalNode); } else {
result = visitUnaryEval(context, (UnaryEval) evalNode, stack); } else if (evalNode instanceof BinaryEval) { result = visitBinaryEval(context, stack, (BinaryEval) evalNode); } else {
@Override public EvalNode visitBinaryEval(EvalTreeProtoBuilderContext context, Stack<EvalNode> stack, BinaryEval binary) { // visiting and registering childs super.visitBinaryEval(context, stack, binary); int [] childIds = registerGetChildIds(context, binary); // registering itself and building EvalNode PlanProto.EvalNode.Builder builder = createEvalBuilder(context, binary); // building itself PlanProto.BinaryEval.Builder binaryBuilder = PlanProto.BinaryEval.newBuilder(); binaryBuilder.setLhsId(childIds[0]); binaryBuilder.setRhsId(childIds[1]); if (binary instanceof InEval) { binaryBuilder.setNegative(((InEval)binary).isNot()); } else if (binary instanceof PatternMatchPredicateEval) { PatternMatchPredicateEval patternMatch = (PatternMatchPredicateEval) binary; binaryBuilder.setNegative(patternMatch.isNot()); builder.setPatternMatch( PlanProto.PatternMatchEvalSpec.newBuilder().setCaseSensitive(patternMatch.isCaseInsensitive())); } builder.setBinary(binaryBuilder); context.treeBuilder.addNodes(builder); return binary; }
@Override public EvalNode visitBinaryEval(EvalTreeProtoBuilderContext context, Stack<EvalNode> stack, BinaryEval binary) { // visiting and registering childs super.visitBinaryEval(context, stack, binary); int [] childIds = registerGetChildIds(context, binary); // registering itself and building EvalNode PlanProto.EvalNode.Builder builder = createEvalBuilder(context, binary); // building itself PlanProto.BinaryEval.Builder binaryBuilder = PlanProto.BinaryEval.newBuilder(); binaryBuilder.setLhsId(childIds[0]); binaryBuilder.setRhsId(childIds[1]); if (binary instanceof InEval) { binaryBuilder.setNegative(((InEval)binary).isNot()); } else if (binary instanceof PatternMatchPredicateEval) { PatternMatchPredicateEval patternMatch = (PatternMatchPredicateEval) binary; binaryBuilder.setNegative(patternMatch.isNot()); builder.setPatternMatch( PlanProto.PatternMatchEvalSpec.newBuilder().setCaseSensitive(patternMatch.isCaseInsensitive())); } builder.setBinary(binaryBuilder); context.treeBuilder.addNodes(builder); return binary; }