diff --git a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java index 716b21142f..54b889986f 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/mysql/parser/MySqlCreateTableParser.java @@ -550,6 +550,10 @@ public class MySqlCreateTableParser extends SQLCreateTableParser { if (lexer.token() == (Token.ON)) { throw new ParserException("TODO"); } + + if (lexer.token() == (Token.AS)) { + lexer.nextToken(); + } if (lexer.token() == (Token.SELECT)) { SQLSelect query = new MySqlSelectParser(this.exprParser).select(); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest.java b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest.java index 071c4c8de0..41f5785006 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/mysql/MySqlCreateTableTest.java @@ -86,4 +86,24 @@ public class MySqlCreateTableTest extends MysqlTest { Assert.assertEquals(7, visitor.getColumns().size()); Assert.assertEquals(0, visitor.getConditions().size()); } + + + public void test_2() throws Exception { + String sql = "create table t2 as select * from t1"; + + MySqlStatementParser parser = new MySqlStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement statemen = statementList.get(0); + print(statementList); + + Assert.assertEquals(1, statementList.size()); + + MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); + statemen.accept(visitor); + + System.out.println("Tables : " + visitor.getTables()); + System.out.println("fields : " + visitor.getColumns()); + System.out.println("coditions : " + visitor.getConditions()); + System.out.println("orderBy : " + visitor.getOrderByColumns()); + } }