Search in sources :

Example 1 with Lexer

use of com.alibaba.druid.sql.parser.Lexer in project druid by alibaba.

the class FirstCommentTest method test_first_commnet.

public void test_first_commnet() throws Exception {
    String sql = "/*test sql*/select age from user where name = 'xx';";
    Lexer lexer = new MySqlLexer(sql);
    lexer.setKeepComments(true);
    lexer.nextToken();
    List<String> comments = lexer.readAndResetComments();
    Assert.assertEquals("/*test sql*/", comments.get(0));
}
Also used : MySqlLexer(com.alibaba.druid.sql.dialect.mysql.parser.MySqlLexer) Lexer(com.alibaba.druid.sql.parser.Lexer) MySqlLexer(com.alibaba.druid.sql.dialect.mysql.parser.MySqlLexer)

Example 2 with Lexer

use of com.alibaba.druid.sql.parser.Lexer in project sharding-jdbc by dangdangdotcom.

the class SQLUtil method getTypeByStart.

/**
     * 根据SQL第一个单词判断SQL类型.
     * 
     * @param sql SQL语句
     * @return SQL类型
     */
public static SQLStatementType getTypeByStart(final String sql) {
    //TODO: Use new Lexer Util.
    Lexer lexer = new Lexer(sql);
    lexer.nextToken();
    while (true) {
        switch(lexer.token()) {
            case SELECT:
                return SQLStatementType.SELECT;
            case INSERT:
                return SQLStatementType.INSERT;
            case UPDATE:
                return SQLStatementType.UPDATE;
            case DELETE:
                return SQLStatementType.DELETE;
            case EOF:
                throw new SQLParserException("Unsupported SQL statement: [%s]", sql);
            default:
                lexer.nextToken();
        }
    }
}
Also used : Lexer(com.alibaba.druid.sql.parser.Lexer) SQLParserException(com.dangdang.ddframe.rdb.sharding.exception.SQLParserException)

Aggregations

Lexer (com.alibaba.druid.sql.parser.Lexer)2 MySqlLexer (com.alibaba.druid.sql.dialect.mysql.parser.MySqlLexer)1 SQLParserException (com.dangdang.ddframe.rdb.sharding.exception.SQLParserException)1