improve sql parser

This commit is contained in:
yakolee
2014-05-08 17:21:11 +08:00
parent d4fcdf60a4
commit 9bd4b7a2b0
3 changed files with 46 additions and 14 deletions
@@ -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());
}
}