@Override public Expr visitArray(ArrayContext ctx) { int size = ctx.numeric_value_expression().size(); Expr[] exprs = new Expr[size]; for (int i = 0; i < size; i++) { exprs[i] = visit(ctx.numeric_value_expression(i)); } return new ValueListExpr(exprs); }
@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); }
@Override public Expr visitIn_predicate_value(In_predicate_valueContext ctx) { if (checkIfExist(ctx.in_value_list())) { int size = ctx.in_value_list().row_value_predicand().size(); Expr [] exprs = new Expr[size]; for (int i = 0; i < size; i++) { exprs[i] = visitRow_value_predicand(ctx.in_value_list().row_value_predicand(i)); } return new ValueListExpr(exprs); } else { return new SimpleTableSubquery(visitChildren(ctx.table_subquery())); } }
@Override public Expr visitIn_predicate_value(In_predicate_valueContext ctx) { if (checkIfExist(ctx.in_value_list())) { int size = ctx.in_value_list().row_value_predicand().size(); Expr [] exprs = new Expr[size]; for (int i = 0; i < size; i++) { exprs[i] = visitRow_value_predicand(ctx.in_value_list().row_value_predicand(i)); } return new ValueListExpr(exprs); } else { return new SimpleTableSubquery(visitChildren(ctx.table_subquery())); } }
new ValueListExpr(exprs)));
new ValueListExpr(exprs)));