@Override protected EvalNode visitBetween(LogicalPlanner.PlanContext context, BetweenPredicateEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); EvalNode predicand = visit(context, evalNode.getPredicand(), stack); EvalNode begin = visit(context, evalNode.getBegin(), stack); EvalNode end = visit(context, evalNode.getEnd(), stack); evalNode.setPredicand(predicand); evalNode.setBegin(begin); evalNode.setEnd(end); return evalNode; }
@Override protected EvalNode visitBetween(Object o, BetweenPredicateEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); visit(o, evalNode.getPredicand(), stack); Expr predicand = exprs.pop(); visit(o, evalNode.getBegin(), stack); Expr begin = exprs.pop(); visit(o, evalNode.getEnd(), stack); Expr end = exprs.pop(); Expr expr = new BetweenPredicate(evalNode.isNot(), evalNode.isSymmetric(), predicand, begin, end); exprs.push(expr); stack.pop(); return null; }
protected EvalNode visitBetween(CONTEXT context, BetweenPredicateEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); visit(context, evalNode.getPredicand(), stack); visit(context, evalNode.getBegin(), stack); visit(context, evalNode.getEnd(), stack); return evalNode; }
if (betweenEval.getBegin().getType() == EvalType.CONST && betweenEval.getEnd().getType() == EvalType.CONST) { Datum value = ((ConstEval) betweenEval.getBegin()).getValue(); if (startDatum != null) { if (value.compareTo(startDatum) > 0) { value = ((ConstEval) betweenEval.getEnd()).getValue(); if (endDatum != null) { if (value.compareTo(endDatum) < 0) {
@Override public EvalNode visitBetween(EvalTreeProtoBuilderContext context, BetweenPredicateEval between, Stack<EvalNode> stack) { // visiting and registering childs super.visitBetween(context, between, stack); int [] childIds = registerGetChildIds(context, between); Preconditions.checkState(childIds.length == 3, "Between must have three childs, but there are " + childIds.length + " child nodes"); // building itself PlanProto.BetweenEval.Builder betweenBuilder = PlanProto.BetweenEval.newBuilder(); betweenBuilder.setNegative(between.isNot()); betweenBuilder.setSymmetric(between.isSymmetric()); betweenBuilder.setPredicand(childIds[0]); betweenBuilder.setBegin(childIds[1]); betweenBuilder.setEnd(childIds[2]); // registering itself and building EvalNode PlanProto.EvalNode.Builder builder = createEvalBuilder(context, between); builder.setBetween(betweenBuilder); context.treeBuilder.addNodes(builder); return between; }
@Override public EvalNode visitBetween(Context ctx, Stack<Expr> stack, BetweenPredicate between) throws TajoException { stack.push(between); EvalNode predicand = visit(ctx, stack, between.predicand()); EvalNode begin = visit(ctx, stack, between.begin()); EvalNode end = visit(ctx, stack, between.end()); stack.pop(); // implicit type conversion DataType widestType = CatalogUtil.getWidestType(predicand.getValueType(), begin.getValueType(), end.getValueType()); BetweenPredicateEval betweenEval = new BetweenPredicateEval( between.isNot(), between.isSymmetric(), predicand, begin, end); betweenEval = (BetweenPredicateEval) convertType(ctx, betweenEval, widestType); return betweenEval; }
protected EvalNode visitBetween(CONTEXT context, BetweenPredicateEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); visit(context, evalNode.getPredicand(), stack); visit(context, evalNode.getBegin(), stack); visit(context, evalNode.getEnd(), stack); return evalNode; }
if (betweenEval.getBegin().getType() == EvalType.CONST && betweenEval.getEnd().getType() == EvalType.CONST) { Datum value = ((ConstEval) betweenEval.getBegin()).getValue(); if (startDatum != null) { if (value.compareTo(startDatum) > 0) { value = ((ConstEval) betweenEval.getEnd()).getValue(); if (endDatum != null) { if (value.compareTo(endDatum) < 0) {
@Override public EvalNode visitBetween(EvalTreeProtoBuilderContext context, BetweenPredicateEval between, Stack<EvalNode> stack) { // visiting and registering childs super.visitBetween(context, between, stack); int [] childIds = registerGetChildIds(context, between); Preconditions.checkState(childIds.length == 3, "Between must have three childs, but there are " + childIds.length + " child nodes"); // building itself PlanProto.BetweenEval.Builder betweenBuilder = PlanProto.BetweenEval.newBuilder(); betweenBuilder.setNegative(between.isNot()); betweenBuilder.setSymmetric(between.isSymmetric()); betweenBuilder.setPredicand(childIds[0]); betweenBuilder.setBegin(childIds[1]); betweenBuilder.setEnd(childIds[2]); // registering itself and building EvalNode PlanProto.EvalNode.Builder builder = createEvalBuilder(context, between); builder.setBetween(betweenBuilder); context.treeBuilder.addNodes(builder); return between; }
@Override public EvalNode visitBetween(Context ctx, Stack<Expr> stack, BetweenPredicate between) throws TajoException { stack.push(between); EvalNode predicand = visit(ctx, stack, between.predicand()); EvalNode begin = visit(ctx, stack, between.begin()); EvalNode end = visit(ctx, stack, between.end()); stack.pop(); // implicit type conversion DataType widestType = CatalogUtil.getWidestType( convert(predicand.getValueType()).getDataType(), convert(begin.getValueType()).getDataType(), convert(end.getValueType()).getDataType()); BetweenPredicateEval betweenEval = new BetweenPredicateEval( between.isNot(), between.isSymmetric(), predicand, begin, end); betweenEval = (BetweenPredicateEval) convertType(ctx, betweenEval, TypeConverter.convert(widestType)); return betweenEval; }
if (between.getPredicand().equals(evalNode)) { between.setPredicand(tobeReplaced); if (between.getBegin().equals(evalNode)) { between.setBegin(tobeReplaced); if (between.getEnd().equals(evalNode)) { between.setEnd(tobeReplaced);
@Override public RESULT visitBetween(CONTEXT context, BetweenPredicateEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); RESULT result = visit(context, evalNode.getPredicand(), stack); visit(context, evalNode.getBegin(), stack); visit(context, evalNode.getEnd(), stack); return result; }
public EvalNode visitBetween(EvalCodeGenContext context, BetweenPredicateEval between, Stack<EvalNode> stack) { EvalNode predicand = between.getPredicand(); EvalNode begin = between.getBegin(); EvalNode end = between.getEnd(); if (between.isSymmetric()) { Label ifFirstMatchFailed = new Label(); Label ifSecondMatchFailed = new Label(); context.pushBooleanOfThreeValuedLogic(between.isNot() ? false : true); context.pushNullFlag(true); emitGotoLabel(context, afterEnd); context.pushBooleanOfThreeValuedLogic(between.isNot() ? true : false); context.pushNullFlag(true); emitGotoLabel(context, afterEnd);
current = new BetweenPredicateEval(betweenProto.getNegative(), betweenProto.getSymmetric(), evalNodeMap.get(betweenProto.getPredicand()), evalNodeMap.get(betweenProto.getBegin()),
if (between.getPredicand().equals(evalNode)) { between.setPredicand(tobeReplaced); if (between.getBegin().equals(evalNode)) { between.setBegin(tobeReplaced); if (between.getEnd().equals(evalNode)) { between.setEnd(tobeReplaced);
@Override public RESULT visitBetween(CONTEXT context, BetweenPredicateEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); RESULT result = visit(context, evalNode.getPredicand(), stack); visit(context, evalNode.getBegin(), stack); visit(context, evalNode.getEnd(), stack); return result; }
public EvalNode visitBetween(EvalCodeGenContext context, BetweenPredicateEval between, Stack<EvalNode> stack) { EvalNode predicand = between.getPredicand(); EvalNode begin = between.getBegin(); EvalNode end = between.getEnd(); if (between.isSymmetric()) { Label ifFirstMatchFailed = new Label(); Label ifSecondMatchFailed = new Label(); context.pushBooleanOfThreeValuedLogic(between.isNot() ? false : true); context.pushNullFlag(true); emitGotoLabel(context, afterEnd); context.pushBooleanOfThreeValuedLogic(between.isNot() ? true : false); context.pushNullFlag(true); emitGotoLabel(context, afterEnd);
current = new BetweenPredicateEval(betweenProto.getNegative(), betweenProto.getSymmetric(), evalNodeMap.get(betweenProto.getPredicand()), evalNodeMap.get(betweenProto.getBegin()),
BetweenPredicateEval between = (BetweenPredicateEval) evalNode; between.setPredicand(convertType(ctx, between.getPredicand(), toType)); between.setBegin(convertType(ctx, between.getBegin(), toType)); between.setEnd(convertType(ctx, between.getEnd(), toType));
@Override protected EvalNode visitBetween(Context context, BetweenPredicateEval evalNode, Stack<EvalNode> stack) { stack.push(evalNode); visit(context, evalNode.getPredicand(), stack); context.append("BETWEEN"); visit(context, evalNode.getBegin(), stack); context.append("AND"); visit(context, evalNode.getEnd(), stack); return evalNode; }