Search in sources :

Example 1 with ShowColumnsStatement

use of io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowColumnsStatement in project sharding-jdbc by shardingjdbc.

the class MySQLShowParser method parse.

@Override
public DALStatement parse() {
    lexerEngine.nextToken();
    lexerEngine.skipIfEqual(DefaultKeyword.FULL);
    if (lexerEngine.equalAny(MySQLKeyword.DATABASES)) {
        return new ShowDatabasesStatement();
    }
    if (lexerEngine.skipIfEqual(MySQLKeyword.TABLES)) {
        DALStatement result = new ShowTablesStatement();
        if (lexerEngine.equalAny(DefaultKeyword.FROM, DefaultKeyword.IN)) {
            int beginPosition = lexerEngine.getCurrentToken().getEndPosition() - lexerEngine.getCurrentToken().getLiterals().length();
            lexerEngine.nextToken();
            lexerEngine.nextToken();
            result.getSqlTokens().add(new RemoveToken(beginPosition, lexerEngine.getCurrentToken().getEndPosition()));
        }
        return result;
    }
    if (lexerEngine.skipIfEqual(MySQLKeyword.COLUMNS, MySQLKeyword.FIELDS)) {
        DALStatement result = new ShowColumnsStatement();
        lexerEngine.skipIfEqual(DefaultKeyword.FROM, DefaultKeyword.IN);
        tableReferencesClauseParser.parseSingleTableWithoutAlias(result);
        if (lexerEngine.skipIfEqual(DefaultKeyword.FROM, DefaultKeyword.IN)) {
            int beginPosition = lexerEngine.getCurrentToken().getEndPosition() - lexerEngine.getCurrentToken().getLiterals().length();
            result.getSqlTokens().add(new SchemaToken(beginPosition, lexerEngine.getCurrentToken().getLiterals(), result.getTables().getSingleTableName()));
        }
        return result;
    }
    if (lexerEngine.skipIfEqual(DefaultKeyword.CREATE) && lexerEngine.skipIfEqual(DefaultKeyword.TABLE)) {
        DALStatement result = new ShowCreateTableStatement();
        tableReferencesClauseParser.parseSingleTableWithoutAlias(result);
        return result;
    }
    return new ShowOtherStatement();
}
Also used : ShowCreateTableStatement(io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowCreateTableStatement) ShowOtherStatement(io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowOtherStatement) ShowTablesStatement(io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowTablesStatement) ShowColumnsStatement(io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowColumnsStatement) ShowDatabasesStatement(io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowDatabasesStatement) DALStatement(io.shardingjdbc.core.parsing.parser.sql.dal.DALStatement) RemoveToken(io.shardingjdbc.core.parsing.parser.token.RemoveToken) SchemaToken(io.shardingjdbc.core.parsing.parser.token.SchemaToken)

Aggregations

ShowColumnsStatement (io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowColumnsStatement)1 ShowCreateTableStatement (io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowCreateTableStatement)1 ShowDatabasesStatement (io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowDatabasesStatement)1 ShowOtherStatement (io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowOtherStatement)1 ShowTablesStatement (io.shardingjdbc.core.parsing.parser.dialect.mysql.statement.ShowTablesStatement)1 DALStatement (io.shardingjdbc.core.parsing.parser.sql.dal.DALStatement)1 RemoveToken (io.shardingjdbc.core.parsing.parser.token.RemoveToken)1 SchemaToken (io.shardingjdbc.core.parsing.parser.token.SchemaToken)1