Search in sources :

Example 1 with Literal

use of io.mycat.hbt.ast.base.Literal in project Mycat2 by MyCATApache.

the class SchemaConvertor method values.

public List<Object> values(ParseNode fields) {
    CallExpr callExpr = (CallExpr) fields;
    List<ParseNode> exprs = callExpr.getArgs().getExprs();
    return exprs.stream().map(i -> ((Literal) transforExpr(i)).getValue()).collect(Collectors.toList());
}
Also used : io.mycat.hbt.parser.literal(io.mycat.hbt.parser.literal) java.util(java.util) Literal(io.mycat.hbt.ast.base.Literal) HBTOp(io.mycat.hbt.ast.HBTOp) io.mycat.hbt.ast.base(io.mycat.hbt.ast.base) MergeModify(io.mycat.hbt.ast.modify.MergeModify) CallExpr(io.mycat.hbt.parser.CallExpr) ParenthesesExpr(io.mycat.hbt.parser.ParenthesesExpr) Collectors(java.util.stream.Collectors) ParseNode(io.mycat.hbt.parser.ParseNode) BigDecimal(java.math.BigDecimal) ModifyFromSql(io.mycat.hbt.ast.modify.ModifyFromSql) NotNull(org.jetbrains.annotations.NotNull) io.mycat.hbt.ast.query(io.mycat.hbt.ast.query) Literal(io.mycat.hbt.ast.base.Literal) ParseNode(io.mycat.hbt.parser.ParseNode) CallExpr(io.mycat.hbt.parser.CallExpr)

Example 2 with Literal

use of io.mycat.hbt.ast.base.Literal in project Mycat2 by MyCATApache.

the class SchemaConvertor method transforExpr.

public Expr transforExpr(ParseNode parseNode) {
    if (parseNode instanceof CallExpr) {
        CallExpr parseNode1 = (CallExpr) parseNode;
        String name = parseNode1.getName();
        List<ParseNode> exprs = parseNode1.getArgs().getExprs();
        List<Expr> collect = exprs.stream().map(i -> transforExpr(i)).collect(Collectors.toList());
        return new Fun(name, collect);
    } else if (parseNode instanceof DecimalLiteral) {
        return new Literal(((DecimalLiteral) parseNode).getNumber());
    } else if (parseNode instanceof IdLiteral) {
        return new Identifier(((IdLiteral) parseNode).getId());
    } else if (parseNode instanceof StringLiteral) {
        return new Literal(((StringLiteral) parseNode).getString());
    } else if (parseNode instanceof IntegerLiteral) {
        return new Literal(((IntegerLiteral) parseNode).getNumber());
    } else if (parseNode instanceof ParenthesesExpr) {
        ParenthesesExpr parseNode1 = (ParenthesesExpr) parseNode;
        List<ParseNode> exprs = parseNode1.getExprs();
        if (exprs.size() == 1) {
            return transforExpr(exprs.get(0));
        }
    } else if (parseNode instanceof BooleanLiteral) {
        return new Literal(((BooleanLiteral) parseNode).getValue());
    } else if (parseNode instanceof NullLiteral) {
        return new Literal(null);
    } else if (parseNode instanceof ParamLiteral) {
        if (params.isEmpty()) {
            return new Param();
        }
        return new Literal(params.get(index++));
    }
    throw new UnsupportedOperationException();
}
Also used : io.mycat.hbt.parser.literal(io.mycat.hbt.parser.literal) java.util(java.util) Literal(io.mycat.hbt.ast.base.Literal) HBTOp(io.mycat.hbt.ast.HBTOp) io.mycat.hbt.ast.base(io.mycat.hbt.ast.base) MergeModify(io.mycat.hbt.ast.modify.MergeModify) CallExpr(io.mycat.hbt.parser.CallExpr) ParenthesesExpr(io.mycat.hbt.parser.ParenthesesExpr) Collectors(java.util.stream.Collectors) ParseNode(io.mycat.hbt.parser.ParseNode) BigDecimal(java.math.BigDecimal) ModifyFromSql(io.mycat.hbt.ast.modify.ModifyFromSql) NotNull(org.jetbrains.annotations.NotNull) io.mycat.hbt.ast.query(io.mycat.hbt.ast.query) CallExpr(io.mycat.hbt.parser.CallExpr) ParenthesesExpr(io.mycat.hbt.parser.ParenthesesExpr) Literal(io.mycat.hbt.ast.base.Literal) ParseNode(io.mycat.hbt.parser.ParseNode) CallExpr(io.mycat.hbt.parser.CallExpr) ParenthesesExpr(io.mycat.hbt.parser.ParenthesesExpr)

Aggregations

HBTOp (io.mycat.hbt.ast.HBTOp)2 io.mycat.hbt.ast.base (io.mycat.hbt.ast.base)2 Literal (io.mycat.hbt.ast.base.Literal)2 MergeModify (io.mycat.hbt.ast.modify.MergeModify)2 ModifyFromSql (io.mycat.hbt.ast.modify.ModifyFromSql)2 io.mycat.hbt.ast.query (io.mycat.hbt.ast.query)2 CallExpr (io.mycat.hbt.parser.CallExpr)2 ParenthesesExpr (io.mycat.hbt.parser.ParenthesesExpr)2 ParseNode (io.mycat.hbt.parser.ParseNode)2 io.mycat.hbt.parser.literal (io.mycat.hbt.parser.literal)2 BigDecimal (java.math.BigDecimal)2 java.util (java.util)2 Collectors (java.util.stream.Collectors)2 NotNull (org.jetbrains.annotations.NotNull)2