refactor sql parser.

This commit is contained in:
wenshao
2017-08-30 16:51:50 +08:00
parent aa260c9ee3
commit 99fe9112b4
75 changed files with 994 additions and 974 deletions
@@ -33,14 +33,14 @@ public class MySqlParameterizedBenchmark extends TestCase {
// perf(sql3); // 15093 10392 10416 10154 10007 9126 8907
// perf(sql4); // 4429 4190 4023 3747
// perf_parse(sql); // 4643 4377 4345 3801 3627 3228 2961
// perf_parse(sql); // 4643 4377 4345 3801 3627 3228 2961 2959
// perf_parse(sql2); // 1918 1779 1666 1646
// perf_parse(sql3); // 9174 5875 5805 5536 5717
// perf_parse(sql4); // 2953 2502
perf_stat(sql); // 11793 13628 13561 13259 9819
perf_stat(sql); // 11793 13628 13561 13259 9946 7637
// perf_resolve(sql); // 4970 4586
// perf_resolve(sql); // 4970 4586 3600
}
}
public void perf(String sql) {
@@ -32,7 +32,7 @@ public class HashTest_1_propertyExpr extends TestCase {
public void test_issue_5() throws Exception {
assertEquals(
FnvHash.fnv_64_lower("a.b"),
FnvHash.fnv1a_64_lower("a.b"),
new SQLPropertyExpr("\"a\"","\"b\"")
.hashCode64()
);
@@ -40,7 +40,7 @@ public class HashTest_1_propertyExpr extends TestCase {
public void test_issue_6() throws Exception {
assertEquals(
FnvHash.fnv_64_lower("ESCROW.HT_TASK_TRADE_HISTORY_NEW"),
FnvHash.fnv1a_64_lower("ESCROW.HT_TASK_TRADE_HISTORY_NEW"),
new SQLPropertyExpr("\"ESCROW\"","\"HT_TASK_TRADE_HISTORY_NEW\"").hashCode64());
}
@@ -42,14 +42,15 @@ public class DB2SelectTest_10 extends DB2Test {
DB2StatementParser parser = new DB2StatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
SQLStatement stmt = statementList.get(0);
print(statementList);
System.out.println(stmt);
Assert.assertEquals(1, statementList.size());
DB2SchemaStatVisitor visitor = new DB2SchemaStatVisitor();
stmt.accept(visitor);
// System.out.println("Tables : " + visitor.getTables());
System.out.println("Tables : " + visitor.getTables());
System.out.println("fields : " + visitor.getColumns());
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
@@ -36,25 +36,28 @@ public class DB2SelectTest_12 extends DB2Test {
DB2StatementParser parser = new DB2StatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
SQLStatement stmt = statementList.get(0);
print(statementList);
System.out.println(stmt);
Assert.assertEquals(1, statementList.size());
DB2SchemaStatVisitor visitor = new DB2SchemaStatVisitor();
stmt.accept(visitor);
// System.out.println("Tables : " + visitor.getTables());
// System.out.println("fields : " + visitor.getColumns());
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(2, visitor.getColumns().size());
Assert.assertEquals(3, visitor.getColumns().size());
Assert.assertEquals(1, visitor.getConditions().size());
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("TASK_POLICE_QUERY_BATCH")));
Assert.assertTrue(visitor.getColumns().contains(new Column("TASK_POLICE_QUERY_BATCH", "STATUS")));
Assert.assertTrue(visitor.getColumns().contains(new Column("TASK_POLICE_QUERY_BATCH", "*")));
Assert.assertTrue(visitor.getColumns().contains(new Column("TASK_POLICE_QUERY_BATCH", "PRIORITY")));
// Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "first_name")));
// Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "full_name")));
@@ -40,25 +40,30 @@ public class DB2SelectTest_22 extends DB2Test {
DB2StatementParser parser = new DB2StatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
SQLStatement stmt = statementList.get(0);
print(statementList);
System.out.println(stmt);
Assert.assertEquals(1, statementList.size());
DB2SchemaStatVisitor visitor = new DB2SchemaStatVisitor();
stmt.accept(visitor);
// System.out.println("Tables : " + visitor.getTables());
// System.out.println("fields : " + visitor.getColumns());
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(4, visitor.getColumns().size());
Assert.assertEquals(5, visitor.getColumns().size());
Assert.assertEquals(1, visitor.getConditions().size());
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("BUSINESS_ENTERPRISE_BUSIINFO")));
// Assert.assertTrue(visitor.getColumns().contains(new Column("DSN8B10.EMP", "WORKDEPT")));
Assert.assertTrue(visitor.getColumns().contains(new Column("BUSINESS_ENTERPRISE_BUSIINFO", "ID")));
Assert.assertTrue(visitor.getColumns().contains(new Column("BUSINESS_ENTERPRISE_BUSIINFO", "IDENTITY")));
Assert.assertTrue(visitor.getColumns().contains(new Column("BUSINESS_ENTERPRISE_BUSIINFO", "BUSICODE")));
Assert.assertTrue(visitor.getColumns().contains(new Column("BUSINESS_ENTERPRISE_BUSIINFO", "SYSCODE")));
Assert.assertTrue(visitor.getColumns().contains(new Column("BUSINESS_ENTERPRISE_BUSIINFO", "INTIME")));
// Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "first_name")));
// Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "full_name")));
@@ -46,11 +46,11 @@ public class DB2SelectTest_23 extends DB2Test {
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
Assert.assertEquals(1, visitor.getColumns().size());
Assert.assertEquals(0, visitor.getConditions().size());
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("dual")));
Assert.assertFalse(visitor.getTables().containsKey(new TableStat.Name("dual")));
// Assert.assertTrue(visitor.getColumns().contains(new Column("DSN8B10.EMP", "WORKDEPT")));
// Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "first_name")));
@@ -65,7 +65,7 @@ public class DB2SelectTest_hierarchical_1 extends MysqlTest {
assertEquals(1, visitor.getTables().size());
assertEquals(3, visitor.getColumns().size());
assertEquals(0, visitor.getConditions().size());
assertEquals(2, visitor.getConditions().size());
// assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store")));
@@ -172,7 +172,7 @@ public class MySqlReplaceTest_1 extends MysqlTest {
assertEquals(3, visitor.getTables().size());
assertEquals(12, visitor.getColumns().size());
assertEquals(4, visitor.getConditions().size());
assertEquals(6, visitor.getConditions().size());
assertTrue(visitor.containsTable("tb_001"));
@@ -46,7 +46,7 @@ public class MySqlSelectTest_27 extends MysqlTest {
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
Assert.assertEquals(0, visitor.getColumns().size());
Assert.assertEquals(0, visitor.getConditions().size());
Assert.assertEquals(0, visitor.getOrderByColumns().size());
@@ -42,16 +42,25 @@ public class MySqlSelectTest_42_with_cte extends MysqlTest {
SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(JdbcConstants.MYSQL);
stmt.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(1, visitor.getColumns().size());
// Assert.assertEquals(0, visitor.getConditions().size());
// Assert.assertEquals(0, visitor.getOrderByColumns().size());
System.out.println(stmt);
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(2, visitor.getTables().size());
Assert.assertEquals(4, visitor.getColumns().size());
Assert.assertEquals(2, visitor.getConditions().size());
Assert.assertEquals(0, visitor.getOrderByColumns().size());
assertTrue(visitor.containsTable("table1"));
assertTrue(visitor.containsTable("table2"));
assertTrue(visitor.containsColumn("table1", "a"));
assertTrue(visitor.containsColumn("table1", "b"));
assertTrue(visitor.containsColumn("table2", "c"));
assertTrue(visitor.containsColumn("table2", "d"));
{
String output = SQLUtils.toMySqlString(stmt);
Assert.assertEquals("WITH cte1 AS (\n" +
@@ -62,7 +71,7 @@ public class MySqlSelectTest_42_with_cte extends MysqlTest {
"\t\tSELECT c, d\n" +
"\t\tFROM table2\n" +
"\t)\n" +
"SELECT b, d\n" +
"SELECT cte1.b, cte2.d\n" +
"FROM cte1\n" +
"\tJOIN cte2\n" +
"WHERE cte1.a = cte2.c;", //
@@ -78,7 +87,7 @@ public class MySqlSelectTest_42_with_cte extends MysqlTest {
"\t\tselect c, d\n" +
"\t\tfrom table2\n" +
"\t)\n" +
"select b, d\n" +
"select cte1.b, cte2.d\n" +
"from cte1\n" +
"\tjoin cte2\n" +
"where cte1.a = cte2.c;", //
@@ -95,7 +104,7 @@ public class MySqlSelectTest_42_with_cte extends MysqlTest {
"\t\tSELECT c, d\n" +
"\t\tFROM table2\n" +
"\t)\n" +
"SELECT b, d\n" +
"SELECT cte1.b, cte2.d\n" +
"FROM cte1\n" +
"\tJOIN cte2\n" +
"WHERE cte1.a = cte2.c;", //
@@ -62,7 +62,7 @@ public class MySqlSelectTest_43_with_cte extends MysqlTest {
"\t\tSELECT c, d\n" +
"\t\tFROM table2\n" +
"\t)\n" +
"SELECT b, d\n" +
"SELECT cte1.b, cte2.d\n" +
"FROM cte1\n" +
"\tJOIN cte2\n" +
"WHERE cte1.a = cte2.c;", //
@@ -78,7 +78,7 @@ public class MySqlSelectTest_43_with_cte extends MysqlTest {
"\t\tselect c, d\n" +
"\t\tfrom table2\n" +
"\t)\n" +
"select b, d\n" +
"select cte1.b, cte2.d\n" +
"from cte1\n" +
"\tjoin cte2\n" +
"where cte1.a = cte2.c;", //
@@ -95,7 +95,7 @@ public class MySqlSelectTest_43_with_cte extends MysqlTest {
"\t\tSELECT c, d\n" +
"\t\tFROM table2\n" +
"\t)\n" +
"SELECT b, d\n" +
"SELECT cte1.b, cte2.d\n" +
"FROM cte1\n" +
"\tJOIN cte2\n" +
"WHERE cte1.a = cte2.c;", //
@@ -35,6 +35,8 @@ public class MySqlSelectTest_crossjoin extends MysqlTest {
MySqlStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
SQLStatement stmt = statementList.get(0);
System.out.println(stmt);
SQLSelectStatement selectStmt = (SQLSelectStatement) stmt;
@@ -50,9 +52,9 @@ public class MySqlSelectTest_crossjoin extends MysqlTest {
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
// System.out.println("Tables : " + visitor.getTables());
// System.out.println("fields : " + visitor.getColumns());
// System.out.println("coditions : " + visitor.getConditions());
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(2, visitor.getTables().size());
@@ -49,13 +49,20 @@ public class MySqlSelectTest_group_concat extends MysqlTest {
MySqlSelectQueryBlock queryBlock = (MySqlSelectQueryBlock) select.getQuery();
Assert.assertNotNull(queryBlock.getOrderBy());
// print(statementList);
System.out.println(stmt);
Assert.assertEquals(1, statementList.size());
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.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(4, visitor.getColumns().size());
Assert.assertEquals(2, visitor.getConditions().size());
@@ -35,12 +35,14 @@ public class MySqlSchemaStatVisitorTest5 extends TestCase {
// sql = "select columnName from table1 where id in (select id from table3 where name = ?)";
MySqlStatementParser parser = new MySqlStatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
SQLStatement statemen = statementList.get(0);
SQLStatement stmt = statementList.get(0);
Assert.assertEquals(1, statementList.size());
System.out.println(stmt);
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
statemen.accept(visitor);
stmt.accept(visitor);
System.out.println(sql);
System.out.println("Tables : " + visitor.getTables());
@@ -42,14 +42,13 @@ public class MySqlSchemaStatVisitorTest_Subquery extends TestCase {
System.out.println(sql);
System.out.println("Tables : " + visitor.getTables());
System.out.println("fields : " + visitor.getColumns());
System.out.println("alias : " + visitor.getAliasMap());
System.out.println("conditions : " + visitor.getConditions());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(22, visitor.getConditions().get(0).getValues().get(0));
Assert.assertEquals(2, visitor.getColumns().size());
Assert.assertEquals(4, visitor.getColumns().size());
Assert.assertEquals(true, visitor.getColumns().contains(new Column("users", "id")));
Assert.assertEquals(true, visitor.getColumns().contains(new Column("users", "name")));
@@ -59,7 +59,7 @@ public class OceanbaseSelectTest extends MysqlTest {
assertEquals(1, visitor.getTables().size());
assertEquals(3, visitor.getColumns().size());
assertEquals(0, visitor.getConditions().size());
assertEquals(3, visitor.getConditions().size());
// assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store")));
@@ -65,7 +65,7 @@ public class OceanbaseSelectTest_hierarchical_1 extends MysqlTest {
assertEquals(1, visitor.getTables().size());
assertEquals(3, visitor.getColumns().size());
assertEquals(0, visitor.getConditions().size());
assertEquals(2, visitor.getConditions().size());
// assertTrue(visitor.getTables().containsKey(new TableStat.Name("t_basic_store")));
@@ -48,7 +48,7 @@ public class OdpsSelectTest14 extends TestCase {
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
Assert.assertEquals(1, visitor.getColumns().size());
Assert.assertEquals(0, visitor.getConditions().size());
@@ -48,7 +48,7 @@ public class OdpsSelectTest15 extends TestCase {
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
Assert.assertEquals(0, visitor.getColumns().size());
Assert.assertEquals(0, visitor.getConditions().size());
@@ -48,7 +48,7 @@ public class OdpsSelectTest16 extends TestCase {
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
Assert.assertEquals(0, visitor.getColumns().size());
Assert.assertEquals(0, visitor.getConditions().size());
@@ -136,6 +136,8 @@ public class OdpsSelectTest22 extends TestCase {
List<SQLStatement> statementList = SQLUtils.parseStatements(sql, JdbcConstants.ODPS);
SQLStatement stmt = statementList.get(0);
System.out.println(stmt);
assertEquals(1, statementList.size());
SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(JdbcConstants.ODPS);
@@ -143,8 +145,8 @@ public class OdpsSelectTest22 extends TestCase {
// System.out.println("Tables : " + visitor.getTables());
System.out.println("fields : " + visitor.getColumns());
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
System.out.println("coditions : " + visitor.getConditions());
System.out.println("orderBy : " + visitor.getOrderByColumns());
assertEquals(2, visitor.getTables().size());
assertEquals(15, visitor.getColumns().size());
@@ -55,7 +55,7 @@ public class OdpsSelectTest23 extends TestCase {
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
assertEquals(1, visitor.getTables().size());
assertEquals(0, visitor.getTables().size());
assertEquals(1, visitor.getColumns().size());
assertEquals(0, visitor.getConditions().size());
@@ -205,12 +205,12 @@ public class OdpsSelectTest24 extends TestCase {
System.out.println("Tables : " + visitor.getTables());
System.out.println("fields : " + visitor.getColumns());
// System.out.println("coditions : " + visitor.getConditions());
System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
assertEquals(3, visitor.getTables().size());
assertEquals(18, visitor.getColumns().size());
assertEquals(12, visitor.getConditions().size());
assertEquals(13, visitor.getConditions().size());
// System.out.println(SQLUtils.formatOdps(sql));
@@ -133,7 +133,7 @@ public class OdpsSelectTest25 extends TestCase {
assertEquals(2, visitor.getTables().size());
assertEquals(6, visitor.getColumns().size());
assertEquals(2, visitor.getConditions().size());
assertEquals(4, visitor.getConditions().size());
// System.out.println(SQLUtils.formatOdps(sql));
@@ -49,7 +49,7 @@ public class OdpsSelectTest30 extends TestCase {
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
assertEquals(1, visitor.getTables().size());
assertEquals(0, visitor.getTables().size());
assertEquals(1, visitor.getColumns().size());
assertEquals(0, visitor.getConditions().size());
@@ -32,6 +32,8 @@ public class OracleListAggTest1 extends OracleTest {
SQLStatement stmt = statementList.get(0);
// print(statementList);
System.out.println(stmt);
Assert.assertEquals(1, statementList.size());
Assert.assertEquals("SELECT COUNT(0)\n" +
@@ -58,13 +60,13 @@ public class OracleListAggTest1 extends OracleTest {
System.out.println("relationships : " + visitor.getRelationships());
Assert.assertEquals(3, visitor.getTables().size());
Assert.assertEquals(9, visitor.getColumns().size());
Assert.assertEquals(8, visitor.getColumns().size());
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("WEP_USER_ROLE")));
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("WEP_ROLE")));
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("WEP_USER_ROLE", "IS_DELETED")));
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("WEP_ROLE", "IS_DELETED")));
Assert.assertTrue(visitor.containsColumn("WEP_USER_ROLE", "IS_DELETED"));
Assert.assertTrue(visitor.containsColumn("WEP_ROLE", "IS_DELETED"));
WallUtils.isValidateOracle(sql);
}
@@ -38,13 +38,14 @@ public class OracleMergeTest6 extends OracleTest {
OracleStatementParser parser = new OracleStatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
SQLStatement statemen = statementList.get(0);
print(statementList);
SQLStatement stmt = statementList.get(0);
System.out.println(stmt);
Assert.assertEquals(1, statementList.size());
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
statemen.accept(visitor);
stmt.accept(visitor);
System.out.println("Tables : " + visitor.getTables());
System.out.println("fields : " + visitor.getColumns());
@@ -66,9 +66,11 @@ public class OracleBlockTest2 extends OracleTest {
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("wl_ship_order")));
Assert.assertEquals(4, visitor.getColumns().size());
Assert.assertEquals(3, visitor.getColumns().size());
Assert.assertEquals(3, visitor.getConditions().size());
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("wl_ship_order", "id")));
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("wl_ship_order", "forwarder_service")));
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("wl_ship_order", "status")));
}
}
@@ -69,9 +69,13 @@ public class OracleBlockTest5 extends OracleTest {
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("tab_ipay_out_order_ids")));
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("ipay_contract")));
Assert.assertEquals(6, visitor.getColumns().size());
Assert.assertEquals(5, visitor.getColumns().size());
Assert.assertEquals(3, visitor.getConditions().size());
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("departments", "department_id")));
Assert.assertTrue(visitor.containsColumn("escrow_trade", "id"));
Assert.assertTrue(visitor.containsColumn("escrow_trade", "out_order_id"));
Assert.assertTrue(visitor.containsColumn("tab_ipay_out_order_ids", "out_order_id"));
Assert.assertTrue(visitor.containsColumn("ipay_contract", "is_chargeback"));
Assert.assertTrue(visitor.containsColumn("ipay_contract", "out_ref"));
}
}
@@ -44,15 +44,19 @@ public class Oracle_pl_0 extends OracleTest {
statement.accept(visitor);
}
// System.out.println("Tables : " + visitor.getTables());
// System.out.println("fields : " + visitor.getColumns());
// System.out.println("coditions : " + visitor.getConditions());
// System.out.println("relationships : " + visitor.getRelationships());
System.out.println(stmt);
System.out.println("Tables : " + visitor.getTables());
System.out.println("fields : " + visitor.getColumns());
System.out.println("coditions : " + visitor.getConditions());
System.out.println("relationships : " + visitor.getRelationships());
// System.out.println("orderBy : " + visitor.getOrderByColumns());
assertEquals(1, visitor.getTables().size());
assertEquals(1, visitor.getColumns().size());
// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("employees")));
assertTrue(visitor.containsTable("employees"));
assertTrue(visitor.containsColumn("employees", "employee_id"));
// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("emp_name")));
// Assert.assertEquals(7, visitor.getColumns().size());
@@ -46,9 +46,9 @@ public class OracleSelectTest15 extends OracleTest {
System.out.println("relationships : " + visitor.getRelationships());
System.out.println("orderBy : " + visitor.getOrderByColumns());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("DUAL")));
Assert.assertFalse(visitor.getTables().containsKey(new TableStat.Name("DUAL")));
Assert.assertEquals(0, visitor.getColumns().size());
@@ -56,7 +56,7 @@ public class OracleSelectTest27 extends OracleTest {
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("search.retl_table_config_search")));
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("sys.col$")));
Assert.assertEquals(18, visitor.getColumns().size());
Assert.assertEquals(17, visitor.getColumns().size());
Assert.assertTrue(visitor.containsColumn("search.retl_table_config_search", "tid"));
Assert.assertTrue(visitor.containsColumn("dba_objects", "owner"));
@@ -52,7 +52,8 @@ public class OracleSelectTest40 extends OracleTest {
OracleStatementParser parser = new OracleStatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
SQLStatement stmt = statementList.get(0);
print(statementList);
System.out.println(stmt);
Assert.assertEquals(1, statementList.size());
@@ -67,7 +68,7 @@ public class OracleSelectTest40 extends OracleTest {
Assert.assertEquals(6, visitor.getTables().size());
Assert.assertEquals(19, visitor.getColumns().size());
Assert.assertEquals(18, visitor.getColumns().size());
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("acduser.vw_acd_info", "xzqh")));
@@ -46,10 +46,10 @@ public class OracleSelectTest5 extends OracleTest {
System.out.println("coditions : " + visitor.getConditions());
System.out.println("relationships : " + visitor.getRelationships());
Assert.assertEquals(2, visitor.getTables().size());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("hr_info")));
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("hr_info.people")));
// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("hr_info.people")));
Assert.assertEquals(3, visitor.getColumns().size());
@@ -50,6 +50,6 @@ public class PGSelectTest26 extends PGTest {
// System.out.println("coditions : " + visitor.getConditions());
Assert.assertEquals(0, visitor.getColumns().size());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
}
}
@@ -50,6 +50,6 @@ public class PGSelectTest27 extends PGTest {
// System.out.println("coditions : " + visitor.getConditions());
Assert.assertEquals(0, visitor.getColumns().size());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
}
}
@@ -50,6 +50,6 @@ public class PGSelectTest28 extends PGTest {
// System.out.println("coditions : " + visitor.getConditions());
Assert.assertEquals(0, visitor.getColumns().size());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
}
}
@@ -50,6 +50,6 @@ public class PGSelectTest29 extends PGTest {
// System.out.println("coditions : " + visitor.getConditions());
Assert.assertEquals(0, visitor.getColumns().size());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
}
}
@@ -51,6 +51,6 @@ public class PGSelectTest31 extends PGTest {
// System.out.println("coditions : " + visitor.getConditions());
Assert.assertEquals(2, visitor.getColumns().size());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(0, visitor.getTables().size());
}
}
@@ -37,6 +37,8 @@ public class PGSelectTest49 extends TestCase {
List<SQLStatement> stmtList = SQLUtils.parseStatements(sql, dbType);
SQLStatement stmt = stmtList.get(0);
System.out.println(stmt);
assertEquals("WITH sel AS (\n" +
"\t\tSELECT unnest(ARRAY[4275]) AS gdid, unnest(ARRAY[1]) AS gdnumber\n" +
"\t)\n" +
@@ -58,8 +60,8 @@ public class PGSelectTest49 extends TestCase {
SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(dbType);
stmt.accept(visitor);
// System.out.println("Tables : " + visitor.getTables());
// System.out.println("fields : " + visitor.getColumns());
System.out.println("Tables : " + visitor.getTables());
System.out.println("fields : " + visitor.getColumns());
// System.out.println("coditions : " + visitor.getConditions());
assertEquals(4, visitor.getColumns().size());
@@ -107,9 +107,9 @@ public class PGSelectTest51 extends TestCase {
SchemaStatVisitor visitor = SQLUtils.createSchemaStatVisitor(dbType);
stmt.accept(visitor);
// System.out.println("Tables : " + visitor.getTables());
// System.out.println("fields : " + visitor.getColumns());
// System.out.println("coditions : " + visitor.getConditions());
System.out.println("Tables : " + visitor.getTables());
System.out.println("fields : " + visitor.getColumns());
System.out.println("coditions : " + visitor.getConditions());
assertEquals(15, visitor.getColumns().size());
assertEquals(2, visitor.getTables().size());
@@ -21,6 +21,8 @@ public class SchemaStatTest11 extends TestCase {
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
SQLStatement stmt = parser.parseStatementList().get(0);
System.out.println(stmt);
SchemaStatVisitor statVisitor = SQLUtils.createSchemaStatVisitor(dbType);
stmt.accept(statVisitor);
@@ -29,8 +31,8 @@ public class SchemaStatTest11 extends TestCase {
System.out.println(relationship); // table1.id = table2.id
}
// System.out.println(statVisitor.getColumns());
// System.out.println(statVisitor.getGroupByColumns()); // group by
System.out.println(statVisitor.getColumns());
System.out.println(statVisitor.getGroupByColumns()); // group by
System.out.println("relationships : " + statVisitor.getRelationships()); // group by
System.out.println(statVisitor.getConditions());
assertEquals(1, relationships.size());
@@ -36,6 +36,8 @@ public class SchemaStatTest12 extends TestCase {
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
SQLStatement stmt = parser.parseStatementList().get(0);
System.out.println(stmt);
SchemaStatVisitor statVisitor = SQLUtils.createSchemaStatVisitor(dbType);
stmt.accept(statVisitor);
@@ -44,14 +46,15 @@ public class SchemaStatTest12 extends TestCase {
System.out.println(relationship); // table1.id = table2.id
}
// System.out.println(statVisitor.getColumns());
// System.out.println(statVisitor.getGroupByColumns()); // group by
System.out.println("relationships : " + statVisitor.getRelationships()); // group by
System.out.println(statVisitor.getConditions());
System.out.println("columns : " + statVisitor.getColumns());
System.out.println("group by : " + statVisitor.getGroupByColumns());
System.out.println("relationships : " + statVisitor.getRelationships());
System.out.println("conditions : " + statVisitor.getConditions());
System.out.println("functionns : " + statVisitor.getFunctions());
assertEquals(3, relationships.size());
Assert.assertEquals(22, statVisitor.getColumns().size());
Assert.assertEquals(20, statVisitor.getConditions().size());
Assert.assertEquals(21, statVisitor.getColumns().size());
Assert.assertEquals(19, statVisitor.getConditions().size());
assertEquals(1, statVisitor.getFunctions().size());
}
}
@@ -21,18 +21,17 @@ public class SchemaStatTest13 extends TestCase {
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
SQLStatement stmt = parser.parseStatementList().get(0);
System.out.println(stmt);
SchemaStatVisitor statVisitor = SQLUtils.createSchemaStatVisitor(dbType);
stmt.accept(statVisitor);
Set<TableStat.Relationship> relationships = statVisitor.getRelationships();
for (TableStat.Relationship relationship : relationships) {
System.out.println(relationship); // table1.id = table2.id
}
// System.out.println(statVisitor.getColumns());
// System.out.println(statVisitor.getGroupByColumns()); // group by
System.out.println("columns : " + statVisitor.getColumns());
System.out.println("groups : " + statVisitor.getGroupByColumns()); // group by
System.out.println("relationships : " + statVisitor.getRelationships()); // group by
System.out.println(statVisitor.getConditions());
System.out.println("conditions : " + statVisitor.getConditions());
assertEquals(2, relationships.size());
Assert.assertEquals(5, statVisitor.getColumns().size());
@@ -21,6 +21,8 @@ public class SchemaStatTest14 extends TestCase {
SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
SQLStatement stmt = parser.parseStatementList().get(0);
System.out.println(stmt);
SchemaStatVisitor statVisitor = SQLUtils.createSchemaStatVisitor(dbType);
stmt.accept(statVisitor);