Loading sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/SQLJudgeEngine.java +37 −13 Original line number Diff line number Diff line Loading @@ -60,27 +60,20 @@ public final class SQLJudgeEngine { while (true) { TokenType tokenType = lexerEngine.getCurrentToken().getType(); if (tokenType instanceof Keyword) { if (DefaultKeyword.SELECT == tokenType) { if (isDQL(tokenType)) { return new SelectStatement(); } if (DefaultKeyword.INSERT == tokenType || DefaultKeyword.UPDATE == tokenType || DefaultKeyword.DELETE == tokenType) { if (isDML(tokenType)) { return new DMLStatement(); } if (DefaultKeyword.CREATE == tokenType || DefaultKeyword.ALTER == tokenType || DefaultKeyword.DROP == tokenType || DefaultKeyword.TRUNCATE == tokenType) { if (isDDL(tokenType)) { return new DDLStatement(); } if (DefaultKeyword.SET == tokenType || DefaultKeyword.COMMIT == tokenType || DefaultKeyword.ROLLBACK == tokenType || DefaultKeyword.SAVEPOINT == tokenType || DefaultKeyword.BEGIN == tokenType) { if (isTCL(tokenType)) { return new TCLStatement(); } if (DefaultKeyword.USE == tokenType) { return new UseStatement(); } if (DefaultKeyword.DESC == tokenType) { return new DescribeStatement(); } if (MySQLKeyword.SHOW == tokenType) { return getShowStatement(lexerEngine); if (isDAL(tokenType)) { return getDALStatement(tokenType, lexerEngine); } } if (tokenType instanceof Assist && Assist.END == tokenType) { Loading @@ -90,6 +83,37 @@ public final class SQLJudgeEngine { } } private boolean isDQL(final TokenType tokenType) { return DefaultKeyword.SELECT == tokenType; } private boolean isDML(final TokenType tokenType) { return DefaultKeyword.INSERT == tokenType || DefaultKeyword.UPDATE == tokenType || DefaultKeyword.DELETE == tokenType; } private boolean isDDL(final TokenType tokenType) { return DefaultKeyword.CREATE == tokenType || DefaultKeyword.ALTER == tokenType || DefaultKeyword.DROP == tokenType || DefaultKeyword.TRUNCATE == tokenType; } private boolean isTCL(final TokenType tokenType) { return DefaultKeyword.SET == tokenType || DefaultKeyword.COMMIT == tokenType || DefaultKeyword.ROLLBACK == tokenType || DefaultKeyword.SAVEPOINT == tokenType || DefaultKeyword.BEGIN == tokenType; } private boolean isDAL(final TokenType tokenType) { return DefaultKeyword.USE == tokenType || DefaultKeyword.DESC == tokenType || MySQLKeyword.DESCRIBE == tokenType || MySQLKeyword.SHOW == tokenType; } private SQLStatement getDALStatement(final TokenType tokenType, final LexerEngine lexerEngine) { if (DefaultKeyword.USE == tokenType) { return new UseStatement(); } if (DefaultKeyword.DESC == tokenType || MySQLKeyword.DESCRIBE == tokenType) { return new DescribeStatement(); } return getShowStatement(lexerEngine); } private SQLStatement getShowStatement(final LexerEngine lexerEngine) { lexerEngine.nextToken(); if (MySQLKeyword.DATABASES == lexerEngine.getCurrentToken().getType()) { Loading Loading
sharding-jdbc-core/src/main/java/io/shardingjdbc/core/parsing/SQLJudgeEngine.java +37 −13 Original line number Diff line number Diff line Loading @@ -60,27 +60,20 @@ public final class SQLJudgeEngine { while (true) { TokenType tokenType = lexerEngine.getCurrentToken().getType(); if (tokenType instanceof Keyword) { if (DefaultKeyword.SELECT == tokenType) { if (isDQL(tokenType)) { return new SelectStatement(); } if (DefaultKeyword.INSERT == tokenType || DefaultKeyword.UPDATE == tokenType || DefaultKeyword.DELETE == tokenType) { if (isDML(tokenType)) { return new DMLStatement(); } if (DefaultKeyword.CREATE == tokenType || DefaultKeyword.ALTER == tokenType || DefaultKeyword.DROP == tokenType || DefaultKeyword.TRUNCATE == tokenType) { if (isDDL(tokenType)) { return new DDLStatement(); } if (DefaultKeyword.SET == tokenType || DefaultKeyword.COMMIT == tokenType || DefaultKeyword.ROLLBACK == tokenType || DefaultKeyword.SAVEPOINT == tokenType || DefaultKeyword.BEGIN == tokenType) { if (isTCL(tokenType)) { return new TCLStatement(); } if (DefaultKeyword.USE == tokenType) { return new UseStatement(); } if (DefaultKeyword.DESC == tokenType) { return new DescribeStatement(); } if (MySQLKeyword.SHOW == tokenType) { return getShowStatement(lexerEngine); if (isDAL(tokenType)) { return getDALStatement(tokenType, lexerEngine); } } if (tokenType instanceof Assist && Assist.END == tokenType) { Loading @@ -90,6 +83,37 @@ public final class SQLJudgeEngine { } } private boolean isDQL(final TokenType tokenType) { return DefaultKeyword.SELECT == tokenType; } private boolean isDML(final TokenType tokenType) { return DefaultKeyword.INSERT == tokenType || DefaultKeyword.UPDATE == tokenType || DefaultKeyword.DELETE == tokenType; } private boolean isDDL(final TokenType tokenType) { return DefaultKeyword.CREATE == tokenType || DefaultKeyword.ALTER == tokenType || DefaultKeyword.DROP == tokenType || DefaultKeyword.TRUNCATE == tokenType; } private boolean isTCL(final TokenType tokenType) { return DefaultKeyword.SET == tokenType || DefaultKeyword.COMMIT == tokenType || DefaultKeyword.ROLLBACK == tokenType || DefaultKeyword.SAVEPOINT == tokenType || DefaultKeyword.BEGIN == tokenType; } private boolean isDAL(final TokenType tokenType) { return DefaultKeyword.USE == tokenType || DefaultKeyword.DESC == tokenType || MySQLKeyword.DESCRIBE == tokenType || MySQLKeyword.SHOW == tokenType; } private SQLStatement getDALStatement(final TokenType tokenType, final LexerEngine lexerEngine) { if (DefaultKeyword.USE == tokenType) { return new UseStatement(); } if (DefaultKeyword.DESC == tokenType || MySQLKeyword.DESCRIBE == tokenType) { return new DescribeStatement(); } return getShowStatement(lexerEngine); } private SQLStatement getShowStatement(final LexerEngine lexerEngine) { lexerEngine.nextToken(); if (MySQLKeyword.DATABASES == lexerEngine.getCurrentToken().getType()) { Loading