private RexLiteral item(Ast.Node node, RelDataType type) {
final RexBuilder rexBuilder = builder.getRexBuilder();
switch (node.op) {
case LITERAL:
final Ast.Literal literal = (Ast.Literal) node;
return (RexLiteral) rexBuilder.makeLiteral(literal.value, type, false);
case TUPLE:
final Ast.Call tuple = (Ast.Call) node;
final ImmutableList<RexLiteral> list = tuple(tuple.operands, type);
return (RexLiteral) rexBuilder.makeLiteral(list, type, false);
case BAG:
final Ast.Call bag = (Ast.Call) node;
final ImmutableList<RexLiteral> list2 = bag(bag.operands, type);
return (RexLiteral) rexBuilder.makeLiteral(list2, type, false);
default:
throw new IllegalArgumentException("not a literal: " + node);
}
}
|