Search in sources :

Example 81 with Expression

use of com.alibaba.cobar.parser.ast.expression.Expression in project cobar by alibaba.

the class MySQLDALParser method where.

private Expression where() throws SQLSyntaxErrorException {
    match(KW_WHERE);
    Expression where = exprParser.expression();
    return where;
}
Also used : Expression(com.alibaba.cobar.parser.ast.expression.Expression) VariableExpression(com.alibaba.cobar.parser.ast.expression.primary.VariableExpression)

Example 82 with Expression

use of com.alibaba.cobar.parser.ast.expression.Expression in project cobar by alibaba.

the class MySQLDDLParser method alterTable.

/**
     * token of table name has been consumed
     * 
     * @throws SQLSyntaxErrorException
     */
private DDLAlterTableStatement alterTable(DDLAlterTableStatement stmt) throws SQLSyntaxErrorException {
    TableOptions options = new TableOptions();
    stmt.setTableOptions(options);
    Identifier id = null;
    Identifier id2 = null;
    Identifier id3 = null;
    ColumnDefinition colDef = null;
    IndexDefinition indexDef = null;
    Expression expr = null;
    for (int i = 0; lexer.token() != EOF; ++i) {
        if (i > 0) {
            match(PUNC_COMMA);
        }
        if (tableOptions(options)) {
            continue;
        }
        main_switch: switch(lexer.token()) {
            case KW_CONVERT:
                // | CONVERT TO CHARACTER SET charset_name [COLLATE
                // collation_name]
                lexer.nextToken();
                match(KW_TO);
                match(KW_CHARACTER);
                match(KW_SET);
                id = identifier();
                id2 = null;
                if (lexer.token() == KW_COLLATE) {
                    lexer.nextToken();
                    id2 = identifier();
                }
                stmt.setConvertCharset(new Pair<Identifier, Identifier>(id, id2));
                break main_switch;
            case KW_RENAME:
                // | RENAME [TO] new_tbl_name
                if (lexer.nextToken() == KW_TO) {
                    lexer.nextToken();
                }
                id = identifier();
                stmt.setRenameTo(id);
                break main_switch;
            case KW_DROP:
                drop_switch: switch(lexer.nextToken()) {
                    case KW_INDEX:
                    case KW_KEY:
                        // | DROP {INDEX|KEY} index_name
                        lexer.nextToken();
                        id = identifier();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.DropIndex(id));
                        break drop_switch;
                    case KW_PRIMARY:
                        // | DROP PRIMARY KEY
                        lexer.nextToken();
                        match(KW_KEY);
                        stmt.addAlterSpecification(new DDLAlterTableStatement.DropPrimaryKey());
                        break drop_switch;
                    case IDENTIFIER:
                        // | DROP [COLUMN] col_name
                        id = identifier();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.DropColumn(id));
                        break drop_switch;
                    case KW_COLUMN:
                        // | DROP [COLUMN] col_name
                        lexer.nextToken();
                        id = identifier();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.DropColumn(id));
                        break drop_switch;
                    default:
                        throw new SQLSyntaxErrorException("ALTER TABLE error for DROP");
                }
                break main_switch;
            case KW_CHANGE:
                // [FIRST|AFTER col_name]
                if (lexer.nextToken() == KW_COLUMN) {
                    lexer.nextToken();
                }
                id = identifier();
                id2 = identifier();
                colDef = columnDefinition();
                if (lexer.token() == IDENTIFIER) {
                    if ("FIRST".equals(lexer.stringValueUppercase())) {
                        lexer.nextToken();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.ChangeColumn(id, id2, colDef, null));
                    } else if ("AFTER".equals(lexer.stringValueUppercase())) {
                        lexer.nextToken();
                        id3 = identifier();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.ChangeColumn(id, id2, colDef, id3));
                    } else {
                        stmt.addAlterSpecification(new DDLAlterTableStatement.ChangeColumn(id, id2, colDef));
                    }
                } else {
                    stmt.addAlterSpecification(new DDLAlterTableStatement.ChangeColumn(id, id2, colDef));
                }
                break main_switch;
            case KW_ALTER:
                // DEFAULT}
                if (lexer.nextToken() == KW_COLUMN) {
                    lexer.nextToken();
                }
                id = identifier();
                switch(lexer.token()) {
                    case KW_SET:
                        lexer.nextToken();
                        match(KW_DEFAULT);
                        expr = exprParser.expression();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.AlterColumnDefaultVal(id, expr));
                        break;
                    case KW_DROP:
                        lexer.nextToken();
                        match(KW_DEFAULT);
                        stmt.addAlterSpecification(new DDLAlterTableStatement.AlterColumnDefaultVal(id));
                        break;
                    default:
                        throw new SQLSyntaxErrorException("ALTER TABLE error for ALTER");
                }
                break main_switch;
            case KW_ADD:
                add_switch: switch(lexer.nextToken()) {
                    case IDENTIFIER:
                        // | ADD [COLUMN] col_name column_definition [FIRST | AFTER
                        // col_name ]
                        id = identifier();
                        colDef = columnDefinition();
                        if (lexer.token() == IDENTIFIER) {
                            if ("FIRST".equals(lexer.stringValueUppercase())) {
                                lexer.nextToken();
                                stmt.addAlterSpecification(new DDLAlterTableStatement.AddColumn(id, colDef, null));
                            } else if ("AFTER".equals(lexer.stringValueUppercase())) {
                                lexer.nextToken();
                                id2 = identifier();
                                stmt.addAlterSpecification(new DDLAlterTableStatement.AddColumn(id, colDef, id2));
                            } else {
                                stmt.addAlterSpecification(new DDLAlterTableStatement.AddColumn(id, colDef));
                            }
                        } else {
                            stmt.addAlterSpecification(new DDLAlterTableStatement.AddColumn(id, colDef));
                        }
                        break add_switch;
                    case PUNC_LEFT_PAREN:
                        // | ADD [COLUMN] (col_name column_definition,...)
                        lexer.nextToken();
                        for (int j = 0; lexer.token() != PUNC_RIGHT_PAREN; ++j) {
                            DDLAlterTableStatement.AddColumns addColumns = new DDLAlterTableStatement.AddColumns();
                            stmt.addAlterSpecification(addColumns);
                            if (j > 0) {
                                match(PUNC_COMMA);
                            }
                            id = identifier();
                            colDef = columnDefinition();
                            addColumns.addColumn(id, colDef);
                        }
                        match(PUNC_RIGHT_PAREN);
                        break add_switch;
                    case KW_COLUMN:
                        if (lexer.nextToken() == PUNC_LEFT_PAREN) {
                            // | ADD [COLUMN] (col_name column_definition,...)
                            lexer.nextToken();
                            for (int j = 0; lexer.token() != PUNC_RIGHT_PAREN; ++j) {
                                DDLAlterTableStatement.AddColumns addColumns = new DDLAlterTableStatement.AddColumns();
                                stmt.addAlterSpecification(addColumns);
                                if (j > 0) {
                                    match(PUNC_COMMA);
                                }
                                id = identifier();
                                colDef = columnDefinition();
                                addColumns.addColumn(id, colDef);
                            }
                            match(PUNC_RIGHT_PAREN);
                        } else {
                            // | ADD [COLUMN] col_name column_definition [FIRST |
                            // AFTER col_name ]
                            id = identifier();
                            colDef = columnDefinition();
                            if (lexer.token() == IDENTIFIER) {
                                if ("FIRST".equals(lexer.stringValueUppercase())) {
                                    lexer.nextToken();
                                    stmt.addAlterSpecification(new DDLAlterTableStatement.AddColumn(id, colDef, null));
                                } else if ("AFTER".equals(lexer.stringValueUppercase())) {
                                    lexer.nextToken();
                                    id2 = identifier();
                                    stmt.addAlterSpecification(new DDLAlterTableStatement.AddColumn(id, colDef, id2));
                                } else {
                                    stmt.addAlterSpecification(new DDLAlterTableStatement.AddColumn(id, colDef));
                                }
                            } else {
                                stmt.addAlterSpecification(new DDLAlterTableStatement.AddColumn(id, colDef));
                            }
                        }
                        break add_switch;
                    case KW_INDEX:
                    case KW_KEY:
                        // | ADD {INDEX|KEY} [index_name] [index_type]
                        // (index_col_name,...) [index_option] ...
                        id = null;
                        if (lexer.nextToken() == IDENTIFIER) {
                            id = identifier();
                        }
                        indexDef = indexDefinition();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.AddIndex(id, indexDef));
                        break add_switch;
                    case KW_PRIMARY:
                        // | ADD PRIMARY KEY [index_type] (index_col_name,...)
                        // [index_option] ...
                        lexer.nextToken();
                        match(KW_KEY);
                        indexDef = indexDefinition();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.AddPrimaryKey(indexDef));
                        break add_switch;
                    case KW_UNIQUE:
                        // (index_col_name,...) [index_option] ...
                        switch(lexer.nextToken()) {
                            case KW_INDEX:
                            case KW_KEY:
                                lexer.nextToken();
                        }
                        id = null;
                        if (lexer.token() == IDENTIFIER) {
                            id = identifier();
                        }
                        indexDef = indexDefinition();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.AddUniqueKey(id, indexDef));
                        break add_switch;
                    case KW_FULLTEXT:
                        // (index_col_name,...) [index_option] ...
                        switch(lexer.nextToken()) {
                            case KW_INDEX:
                            case KW_KEY:
                                lexer.nextToken();
                        }
                        id = null;
                        if (lexer.token() == IDENTIFIER) {
                            id = identifier();
                        }
                        indexDef = indexDefinition();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.AddFullTextIndex(id, indexDef));
                        break add_switch;
                    case KW_SPATIAL:
                        // (index_col_name,...) [index_option] ...
                        switch(lexer.nextToken()) {
                            case KW_INDEX:
                            case KW_KEY:
                                lexer.nextToken();
                        }
                        id = null;
                        if (lexer.token() == IDENTIFIER) {
                            id = identifier();
                        }
                        indexDef = indexDefinition();
                        stmt.addAlterSpecification(new DDLAlterTableStatement.AddSpatialIndex(id, indexDef));
                        break add_switch;
                    default:
                        throw new SQLSyntaxErrorException("ALTER TABLE error for ADD");
                }
                break main_switch;
            case IDENTIFIER:
                SpecialIdentifier si = specialIdentifiers.get(lexer.stringValueUppercase());
                if (si != null) {
                    switch(si) {
                        case IMPORT:
                            // | IMPORT TABLESPACE
                            lexer.nextToken();
                            matchIdentifier("TABLESPACE");
                            stmt.setImportTableSpace(true);
                            break main_switch;
                        case DISCARD:
                            // | DISCARD TABLESPACE
                            lexer.nextToken();
                            matchIdentifier("TABLESPACE");
                            stmt.setDiscardTableSpace(true);
                            break main_switch;
                        case ENABLE:
                            // | ENABLE KEYS
                            lexer.nextToken();
                            match(KW_KEYS);
                            stmt.setEnableKeys(true);
                            break main_switch;
                        case DISABLE:
                            // | DISABLE KEYS
                            lexer.nextToken();
                            match(KW_KEYS);
                            stmt.setDisableKeys(true);
                            break main_switch;
                        case MODIFY:
                            // AFTER col_name]
                            if (lexer.nextToken() == KW_COLUMN) {
                                lexer.nextToken();
                            }
                            id = identifier();
                            colDef = columnDefinition();
                            if (lexer.token() == IDENTIFIER) {
                                if ("FIRST".equals(lexer.stringValueUppercase())) {
                                    lexer.nextToken();
                                    stmt.addAlterSpecification(new DDLAlterTableStatement.ModifyColumn(id, colDef, null));
                                } else if ("AFTER".equals(lexer.stringValueUppercase())) {
                                    lexer.nextToken();
                                    id2 = identifier();
                                    stmt.addAlterSpecification(new DDLAlterTableStatement.ModifyColumn(id, colDef, id2));
                                } else {
                                    stmt.addAlterSpecification(new DDLAlterTableStatement.ModifyColumn(id, colDef));
                                }
                            } else {
                                stmt.addAlterSpecification(new DDLAlterTableStatement.ModifyColumn(id, colDef));
                            }
                            break main_switch;
                    }
                }
            default:
                throw new SQLSyntaxErrorException("unknown ALTER specification");
        }
    }
    return stmt;
}
Also used : SQLSyntaxErrorException(java.sql.SQLSyntaxErrorException) DDLAlterTableStatement(com.alibaba.cobar.parser.ast.stmt.ddl.DDLAlterTableStatement) TableOptions(com.alibaba.cobar.parser.ast.fragment.ddl.TableOptions) Identifier(com.alibaba.cobar.parser.ast.expression.primary.Identifier) IndexDefinition(com.alibaba.cobar.parser.ast.fragment.ddl.index.IndexDefinition) Pair(com.alibaba.cobar.parser.util.Pair) ColumnDefinition(com.alibaba.cobar.parser.ast.fragment.ddl.ColumnDefinition) Expression(com.alibaba.cobar.parser.ast.expression.Expression)

Example 83 with Expression

use of com.alibaba.cobar.parser.ast.expression.Expression in project cobar by alibaba.

the class MySQLDDLParser method ddlStmt.

/**
     * nothing has been pre-consumed
     */
public DDLStatement ddlStmt() throws SQLSyntaxErrorException {
    Identifier idTemp1;
    Identifier idTemp2;
    SpecialIdentifier siTemp;
    switch(lexer.token()) {
        case KW_ALTER:
            boolean ignore = false;
            if (lexer.nextToken() == KW_IGNORE) {
                ignore = true;
                lexer.nextToken();
            }
            switch(lexer.token()) {
                case KW_TABLE:
                    lexer.nextToken();
                    idTemp1 = identifier();
                    DDLAlterTableStatement alterTableStatement = new DDLAlterTableStatement(ignore, idTemp1);
                    return alterTable(alterTableStatement);
                default:
                    throw err("Only ALTER TABLE is supported");
            }
        case KW_CREATE:
            switch(lexer.nextToken()) {
                case KW_UNIQUE:
                case KW_FULLTEXT:
                case KW_SPATIAL:
                    lexer.nextToken();
                case KW_INDEX:
                    lexer.nextToken();
                    idTemp1 = identifier();
                    for (; lexer.token() != KW_ON; lexer.nextToken()) ;
                    lexer.nextToken();
                    idTemp2 = identifier();
                    return new DDLCreateIndexStatement(idTemp1, idTemp2);
                case KW_TABLE:
                    lexer.nextToken();
                    return createTable(false);
                case IDENTIFIER:
                    siTemp = specialIdentifiers.get(lexer.stringValueUppercase());
                    if (siTemp != null) {
                        switch(siTemp) {
                            case TEMPORARY:
                                lexer.nextToken();
                                match(KW_TABLE);
                                return createTable(true);
                            case POLICY:
                                lexer.nextToken();
                                Identifier policyName = identifier();
                                match(PUNC_LEFT_PAREN);
                                ExtDDLCreatePolicy policy = new ExtDDLCreatePolicy(policyName);
                                for (int j = 0; lexer.token() != PUNC_RIGHT_PAREN; ++j) {
                                    if (j > 0) {
                                        match(PUNC_COMMA);
                                    }
                                    Integer id = lexer.integerValue().intValue();
                                    match(LITERAL_NUM_PURE_DIGIT);
                                    Expression val = exprParser.expression();
                                    policy.addProportion(id, val);
                                }
                                match(PUNC_RIGHT_PAREN);
                                return policy;
                        }
                    }
                default:
                    throw err("unsupported DDL for CREATE");
            }
        case KW_DROP:
            switch(lexer.nextToken()) {
                case KW_INDEX:
                    lexer.nextToken();
                    idTemp1 = identifier();
                    match(KW_ON);
                    idTemp2 = identifier();
                    return new DDLDropIndexStatement(idTemp1, idTemp2);
                case KW_TABLE:
                    lexer.nextToken();
                    return dropTable(false);
                case IDENTIFIER:
                    siTemp = specialIdentifiers.get(lexer.stringValueUppercase());
                    if (siTemp != null) {
                        switch(siTemp) {
                            case TEMPORARY:
                                lexer.nextToken();
                                match(KW_TABLE);
                                return dropTable(true);
                            case POLICY:
                                lexer.nextToken();
                                Identifier policyName = identifier();
                                return new ExtDDLDropPolicy(policyName);
                        }
                    }
                default:
                    throw err("unsupported DDL for DROP");
            }
        case KW_RENAME:
            lexer.nextToken();
            match(KW_TABLE);
            idTemp1 = identifier();
            match(KW_TO);
            idTemp2 = identifier();
            List<Pair<Identifier, Identifier>> list;
            if (lexer.token() != PUNC_COMMA) {
                list = new ArrayList<Pair<Identifier, Identifier>>(1);
                list.add(new Pair<Identifier, Identifier>(idTemp1, idTemp2));
                return new DDLRenameTableStatement(list);
            }
            list = new LinkedList<Pair<Identifier, Identifier>>();
            list.add(new Pair<Identifier, Identifier>(idTemp1, idTemp2));
            for (; lexer.token() == PUNC_COMMA; ) {
                lexer.nextToken();
                idTemp1 = identifier();
                match(KW_TO);
                idTemp2 = identifier();
                list.add(new Pair<Identifier, Identifier>(idTemp1, idTemp2));
            }
            return new DDLRenameTableStatement(list);
        case IDENTIFIER:
            SpecialIdentifier si = specialIdentifiers.get(lexer.stringValueUppercase());
            if (si != null) {
                switch(si) {
                    case TRUNCATE:
                        return truncate();
                }
            }
        default:
            throw err("unsupported DDL");
    }
}
Also used : DDLRenameTableStatement(com.alibaba.cobar.parser.ast.stmt.ddl.DDLRenameTableStatement) ExtDDLCreatePolicy(com.alibaba.cobar.parser.ast.stmt.extension.ExtDDLCreatePolicy) DDLAlterTableStatement(com.alibaba.cobar.parser.ast.stmt.ddl.DDLAlterTableStatement) DDLCreateIndexStatement(com.alibaba.cobar.parser.ast.stmt.ddl.DDLCreateIndexStatement) DDLDropIndexStatement(com.alibaba.cobar.parser.ast.stmt.ddl.DDLDropIndexStatement) Identifier(com.alibaba.cobar.parser.ast.expression.primary.Identifier) Expression(com.alibaba.cobar.parser.ast.expression.Expression) ExtDDLDropPolicy(com.alibaba.cobar.parser.ast.stmt.extension.ExtDDLDropPolicy) Pair(com.alibaba.cobar.parser.util.Pair)

Example 84 with Expression

use of com.alibaba.cobar.parser.ast.expression.Expression in project cobar by alibaba.

the class MySQLDMLDeleteParser method delete.

/**
     * first token is {@link MySQLToken#KW_DELETE} <code><pre>
     * 'DELETE' 'LOW_PRIORITY'? 'QUICK'? 'IGNORE'? (
     *     'FROM' tid ( (',' tid)* 'USING' table_refs ('WHERE' cond)?  
     *                | ('WHERE' cond)? ('ORDER' 'BY' ids)? ('LIMIT' count)?  )  // single table
     *    | tid (',' tid)* 'FROM' table_refs ('WHERE' cond)? )
     * </pre></code>
     */
public DMLDeleteStatement delete() throws SQLSyntaxErrorException {
    match(KW_DELETE);
    boolean lowPriority = false;
    boolean quick = false;
    boolean ignore = false;
    loopOpt: for (; ; lexer.nextToken()) {
        switch(lexer.token()) {
            case KW_LOW_PRIORITY:
                lowPriority = true;
                break;
            case KW_IGNORE:
                ignore = true;
                break;
            case IDENTIFIER:
                SpecialIdentifier si = specialIdentifiers.get(lexer.stringValueUppercase());
                if (SpecialIdentifier.QUICK == si) {
                    quick = true;
                    break;
                }
            default:
                break loopOpt;
        }
    }
    List<Identifier> tempList;
    TableReferences tempRefs;
    Expression tempWhere;
    if (lexer.token() == KW_FROM) {
        lexer.nextToken();
        Identifier id = identifier();
        tempList = new ArrayList<Identifier>(1);
        tempList.add(id);
        switch(lexer.token()) {
            case PUNC_COMMA:
                tempList = buildIdList(id);
            case KW_USING:
                lexer.nextToken();
                tempRefs = tableRefs();
                if (lexer.token() == KW_WHERE) {
                    lexer.nextToken();
                    tempWhere = exprParser.expression();
                    return new DMLDeleteStatement(lowPriority, quick, ignore, tempList, tempRefs, tempWhere);
                }
                return new DMLDeleteStatement(lowPriority, quick, ignore, tempList, tempRefs);
            case KW_WHERE:
            case KW_ORDER:
            case KW_LIMIT:
                break;
            default:
                return new DMLDeleteStatement(lowPriority, quick, ignore, id);
        }
        tempWhere = null;
        OrderBy orderBy = null;
        Limit limit = null;
        if (lexer.token() == KW_WHERE) {
            lexer.nextToken();
            tempWhere = exprParser.expression();
        }
        if (lexer.token() == KW_ORDER) {
            orderBy = orderBy();
        }
        if (lexer.token() == KW_LIMIT) {
            limit = limit();
        }
        return new DMLDeleteStatement(lowPriority, quick, ignore, id, tempWhere, orderBy, limit);
    }
    tempList = idList();
    match(KW_FROM);
    tempRefs = tableRefs();
    if (lexer.token() == KW_WHERE) {
        lexer.nextToken();
        tempWhere = exprParser.expression();
        return new DMLDeleteStatement(lowPriority, quick, ignore, tempList, tempRefs, tempWhere);
    }
    return new DMLDeleteStatement(lowPriority, quick, ignore, tempList, tempRefs);
}
Also used : OrderBy(com.alibaba.cobar.parser.ast.fragment.OrderBy) Identifier(com.alibaba.cobar.parser.ast.expression.primary.Identifier) Expression(com.alibaba.cobar.parser.ast.expression.Expression) Limit(com.alibaba.cobar.parser.ast.fragment.Limit) TableReferences(com.alibaba.cobar.parser.ast.fragment.tableref.TableReferences) DMLDeleteStatement(com.alibaba.cobar.parser.ast.stmt.dml.DMLDeleteStatement)

Example 85 with Expression

use of com.alibaba.cobar.parser.ast.expression.Expression in project cobar by alibaba.

the class MySQLExprParser method arithmeticFactorOperatorExpression.

/**
     * <code>higherExpr ( ('*'|'/'|'%'|'DIV'|'MOD') higherExpr)+</code>
     */
private Expression arithmeticFactorOperatorExpression(String consumed, String consumedUp) throws SQLSyntaxErrorException {
    Expression temp;
    for (Expression expr = bitXORExpression(consumed, consumedUp); ; ) {
        switch(lexer.token()) {
            case OP_ASTERISK:
                lexer.nextToken();
                temp = bitXORExpression(null, null);
                expr = new ArithmeticMultiplyExpression(expr, temp).setCacheEvalRst(cacheEvalRst);
                break;
            case OP_SLASH:
                lexer.nextToken();
                temp = bitXORExpression(null, null);
                expr = new ArithmeticDivideExpression(expr, temp).setCacheEvalRst(cacheEvalRst);
                break;
            case KW_DIV:
                lexer.nextToken();
                temp = bitXORExpression(null, null);
                expr = new ArithmeticIntegerDivideExpression(expr, temp).setCacheEvalRst(cacheEvalRst);
                break;
            case OP_PERCENT:
            case KW_MOD:
                lexer.nextToken();
                temp = bitXORExpression(null, null);
                expr = new ArithmeticModExpression(expr, temp).setCacheEvalRst(cacheEvalRst);
                break;
            default:
                return expr;
        }
    }
}
Also used : ArithmeticIntegerDivideExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticIntegerDivideExpression) ArithmeticMultiplyExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticMultiplyExpression) ArithmeticDivideExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticDivideExpression) SubqueryAllExpression(com.alibaba.cobar.parser.ast.expression.misc.SubqueryAllExpression) MinusExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.MinusExpression) BetweenAndExpression(com.alibaba.cobar.parser.ast.expression.comparison.BetweenAndExpression) BitAndExpression(com.alibaba.cobar.parser.ast.expression.bit.BitAndExpression) ComparisionEqualsExpression(com.alibaba.cobar.parser.ast.expression.comparison.ComparisionEqualsExpression) NegativeValueExpression(com.alibaba.cobar.parser.ast.expression.logical.NegativeValueExpression) QueryExpression(com.alibaba.cobar.parser.ast.expression.misc.QueryExpression) CastBinaryExpression(com.alibaba.cobar.parser.ast.expression.type.CastBinaryExpression) InExpression(com.alibaba.cobar.parser.ast.expression.comparison.InExpression) BitInvertExpression(com.alibaba.cobar.parser.ast.expression.bit.BitInvertExpression) BitXORExpression(com.alibaba.cobar.parser.ast.expression.bit.BitXORExpression) FunctionExpression(com.alibaba.cobar.parser.ast.expression.primary.function.FunctionExpression) BitShiftExpression(com.alibaba.cobar.parser.ast.expression.bit.BitShiftExpression) BitOrExpression(com.alibaba.cobar.parser.ast.expression.bit.BitOrExpression) ComparisionGreaterThanOrEqualsExpression(com.alibaba.cobar.parser.ast.expression.comparison.ComparisionGreaterThanOrEqualsExpression) MatchExpression(com.alibaba.cobar.parser.ast.expression.primary.MatchExpression) ComparisionIsExpression(com.alibaba.cobar.parser.ast.expression.comparison.ComparisionIsExpression) LogicalOrExpression(com.alibaba.cobar.parser.ast.expression.logical.LogicalOrExpression) ComparisionGreaterThanExpression(com.alibaba.cobar.parser.ast.expression.comparison.ComparisionGreaterThanExpression) ComparisionLessOrGreaterThanExpression(com.alibaba.cobar.parser.ast.expression.comparison.ComparisionLessOrGreaterThanExpression) SubqueryAnyExpression(com.alibaba.cobar.parser.ast.expression.misc.SubqueryAnyExpression) RegexpExpression(com.alibaba.cobar.parser.ast.expression.string.RegexpExpression) LogicalAndExpression(com.alibaba.cobar.parser.ast.expression.logical.LogicalAndExpression) ArithmeticMultiplyExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticMultiplyExpression) ComparisionLessThanOrEqualsExpression(com.alibaba.cobar.parser.ast.expression.comparison.ComparisionLessThanOrEqualsExpression) ComparisionNullSafeEqualsExpression(com.alibaba.cobar.parser.ast.expression.comparison.ComparisionNullSafeEqualsExpression) LikeExpression(com.alibaba.cobar.parser.ast.expression.string.LikeExpression) ArithmeticSubtractExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticSubtractExpression) SoundsLikeExpression(com.alibaba.cobar.parser.ast.expression.string.SoundsLikeExpression) ArithmeticIntegerDivideExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticIntegerDivideExpression) CollateExpression(com.alibaba.cobar.parser.ast.expression.type.CollateExpression) LogicalNotExpression(com.alibaba.cobar.parser.ast.expression.logical.LogicalNotExpression) Expression(com.alibaba.cobar.parser.ast.expression.Expression) AssignmentExpression(com.alibaba.cobar.parser.ast.expression.misc.AssignmentExpression) CaseWhenOperatorExpression(com.alibaba.cobar.parser.ast.expression.primary.CaseWhenOperatorExpression) LogicalXORExpression(com.alibaba.cobar.parser.ast.expression.logical.LogicalXORExpression) UserExpression(com.alibaba.cobar.parser.ast.expression.misc.UserExpression) ArithmeticAddExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticAddExpression) ComparisionNotEqualsExpression(com.alibaba.cobar.parser.ast.expression.comparison.ComparisionNotEqualsExpression) RowExpression(com.alibaba.cobar.parser.ast.expression.primary.RowExpression) ComparisionLessThanExpression(com.alibaba.cobar.parser.ast.expression.comparison.ComparisionLessThanExpression) ArithmeticModExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticModExpression) ArithmeticDivideExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticDivideExpression) ArithmeticModExpression(com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticModExpression)

Aggregations

Expression (com.alibaba.cobar.parser.ast.expression.Expression)128 RowExpression (com.alibaba.cobar.parser.ast.expression.primary.RowExpression)96 QueryExpression (com.alibaba.cobar.parser.ast.expression.misc.QueryExpression)93 InExpression (com.alibaba.cobar.parser.ast.expression.comparison.InExpression)91 ComparisionEqualsExpression (com.alibaba.cobar.parser.ast.expression.comparison.ComparisionEqualsExpression)88 LogicalAndExpression (com.alibaba.cobar.parser.ast.expression.logical.LogicalAndExpression)88 BetweenAndExpression (com.alibaba.cobar.parser.ast.expression.comparison.BetweenAndExpression)87 ComparisionIsExpression (com.alibaba.cobar.parser.ast.expression.comparison.ComparisionIsExpression)87 ComparisionNullSafeEqualsExpression (com.alibaba.cobar.parser.ast.expression.comparison.ComparisionNullSafeEqualsExpression)87 LogicalOrExpression (com.alibaba.cobar.parser.ast.expression.logical.LogicalOrExpression)87 UserExpression (com.alibaba.cobar.parser.ast.expression.misc.UserExpression)87 CaseWhenOperatorExpression (com.alibaba.cobar.parser.ast.expression.primary.CaseWhenOperatorExpression)87 LikeExpression (com.alibaba.cobar.parser.ast.expression.string.LikeExpression)87 CollateExpression (com.alibaba.cobar.parser.ast.expression.type.CollateExpression)87 FunctionExpression (com.alibaba.cobar.parser.ast.expression.primary.function.FunctionExpression)76 MatchExpression (com.alibaba.cobar.parser.ast.expression.primary.MatchExpression)71 BinaryOperatorExpression (com.alibaba.cobar.parser.ast.expression.BinaryOperatorExpression)58 PolyadicOperatorExpression (com.alibaba.cobar.parser.ast.expression.PolyadicOperatorExpression)58 UnaryOperatorExpression (com.alibaba.cobar.parser.ast.expression.UnaryOperatorExpression)58 ArithmeticAddExpression (com.alibaba.cobar.parser.ast.expression.arithmeic.ArithmeticAddExpression)45