@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; }
@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; }
current = new BetweenPredicateEval(betweenProto.getNegative(), betweenProto.getSymmetric(), evalNodeMap.get(betweenProto.getPredicand()), evalNodeMap.get(betweenProto.getBegin()),
current = new BetweenPredicateEval(betweenProto.getNegative(), betweenProto.getSymmetric(), evalNodeMap.get(betweenProto.getPredicand()), evalNodeMap.get(betweenProto.getBegin()),