mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
improve sql parser
This commit is contained in:
@@ -53,4 +53,37 @@ public class MySqlCreateTableTest extends MysqlTest {
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "last_name")));
|
||||
}
|
||||
|
||||
|
||||
public void test_1() throws Exception {
|
||||
String sql = "CREATE TABLE `ins_ebay_auth` ("
|
||||
+ " `auth_id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键id',"
|
||||
+ " `usr_id` int(10) NOT NULL COMMENT '外键,用户表',"
|
||||
+ " `status` char(1) COLLATE utf8_bin NOT NULL COMMENT '状态 0.有效?1.无效',"
|
||||
+ " `ebay_token` varchar(255) COLLATE utf8_bin NOT NULL COMMENT 'eBay授权码',"
|
||||
+ " `ebay_name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT 'eBay唯一名',"
|
||||
+ " `create_time` datetime NOT NULL COMMENT '授权时间', "
|
||||
+ " `invalid_time` datetime NOT NULL COMMENT '授权失效时间',"
|
||||
+ " PRIMARY KEY (`auth_id`)"
|
||||
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='INS_EBAY_AUTH';";
|
||||
|
||||
MySqlStatementParser parser = new MySqlStatementParser(sql);
|
||||
List<SQLStatement> 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());
|
||||
|
||||
Assert.assertEquals(1, visitor.getTables().size());
|
||||
Assert.assertEquals(7, visitor.getColumns().size());
|
||||
Assert.assertEquals(0, visitor.getConditions().size());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user