@Override protected EvalNode visitRowConstant(Object o, RowConstantEval evalNode, Stack<EvalNode> stack) { Expr[] values = new Expr[evalNode.getValues().length]; for (int i = 0; i < evalNode.getValues().length; i++) { Datum datum = evalNode.getValues()[i]; values[i] = convertDatumToExpr(datum.kind(), datum); } ValueListExpr expr = new ValueListExpr(values); exprs.push(expr); return super.visitRowConstant(o, evalNode, stack); }
public static void emitRowConstantEval(TajoGeneratorAdapter adapter, MethodVisitor mv, RowConstantEval evalNode) { mv.visitLdcInsn(evalNode.toJson()); adapter.invokeStatic(EvalCodeGenerator.class, "createRowConstantEval", RowConstantEval.class, new Class[] {String.class}); }
RowConstantEval original = (RowConstantEval) evalNode; Datum[] datums = original.getValues(); Datum[] convertedDatum = new Datum[datums.length]; RowConstantEval convertedRowConstant = new RowConstantEval(convertedDatum);
RowConstantEval rowConstantEval = new RowConstantEval(new Datum[]{}); try { rowConstantEval.eval(null); fail("EvalNode is not binded"); } catch (IllegalStateException e) { assertEquals(rowConstantEval.bind(null, null).eval(null).isNull(), true);
@Override public EvalNode visitValueListExpr(Context ctx, Stack<Expr> stack, ValueListExpr expr) throws TajoException { Datum[] values = new Datum[expr.getValues().length]; EvalNode [] evalNodes = new EvalNode[expr.getValues().length]; for (int i = 0; i < expr.getValues().length; i++) { evalNodes[i] = visit(ctx, stack, expr.getValues()[i]); if (!EvalTreeUtil.checkIfCanBeConstant(evalNodes[i])) { throw makeSyntaxError("Non constant values cannot be included in IN PREDICATE."); } values[i] = EvalTreeUtil.evaluateImmediately(null, evalNodes[i]); } return new RowConstantEval(values); }
RowConstantEval original = (RowConstantEval) evalNode; Datum[] datums = original.getValues(); Datum[] convertedDatum = new Datum[datums.length]; RowConstantEval convertedRowConstant = new RowConstantEval(convertedDatum);
@Override public EvalNode visitValueListExpr(Context ctx, Stack<Expr> stack, ValueListExpr expr) throws TajoException { Datum[] values = new Datum[expr.getValues().length]; EvalNode [] evalNodes = new EvalNode[expr.getValues().length]; for (int i = 0; i < expr.getValues().length; i++) { evalNodes[i] = visit(ctx, stack, expr.getValues()[i]); if (!EvalTreeUtil.checkIfCanBeConstant(evalNodes[i])) { throw makeSyntaxError("Non constant values cannot be included in IN PREDICATE."); } values[i] = EvalTreeUtil.evaluateImmediately(null, evalNodes[i]); } return new RowConstantEval(values); }
protected EvalNode visitRowConstant(Context context, RowConstantEval row, Stack<EvalNode> stack) { StringBuilder sb = new StringBuilder("("); sb.append(StringUtils.join(row.getValues(), ",", new Function<Datum, String>() { @Override public String apply(Datum v) { return convertDatumToSQLLiteral(v); } })); sb.append(")"); context.append(sb.toString()); return row; }
, new RowConstantEval(datums) ); qualMap.put(joinQual, Boolean.FALSE);
public static void emitRowConstantEval(TajoGeneratorAdapter adapter, MethodVisitor mv, RowConstantEval evalNode) { mv.visitLdcInsn(evalNode.toJson()); adapter.invokeStatic(EvalCodeGenerator.class, "createRowConstantEval", RowConstantEval.class, new Class[] {String.class}); }
protected EvalNode visitRowConstant(Context context, RowConstantEval row, Stack<EvalNode> stack) { StringBuilder sb = new StringBuilder("("); sb.append(StringUtils.join(row.getValues(), ",", new Function<Datum, String>() { @Override public String apply(Datum v) { return convertDatumToSQLLiteral(v); } })); sb.append(")"); context.append(sb.toString()); return row; }
, new RowConstantEval(datums) ); scanMap.put(scanQual, Boolean.FALSE);
@Override public EvalNode visitRowConstant(EvalTreeProtoBuilderContext context, RowConstantEval rowConst, Stack<EvalNode> stack) { PlanProto.RowConstEval.Builder rowConstBuilder = PlanProto.RowConstEval.newBuilder(); for (Datum d : rowConst.getValues()) { rowConstBuilder.addValues(serialize(d)); } PlanProto.EvalNode.Builder builder = createEvalBuilder(context, rowConst); builder.setRowConst(rowConstBuilder); context.treeBuilder.addNodes(builder); return rowConst; }
values[i] = deserialize(rowConstProto.getValues(i)); current = new RowConstantEval(values);
@Override public EvalNode visitRowConstant(EvalTreeProtoBuilderContext context, RowConstantEval rowConst, Stack<EvalNode> stack) { PlanProto.RowConstEval.Builder rowConstBuilder = PlanProto.RowConstEval.newBuilder(); for (Datum d : rowConst.getValues()) { rowConstBuilder.addValues(serialize(d)); } PlanProto.EvalNode.Builder builder = createEvalBuilder(context, rowConst); builder.setRowConst(rowConstBuilder); context.treeBuilder.addNodes(builder); return rowConst; }
values[i] = deserialize(rowConstProto.getValues(i)); current = new RowConstantEval(values);