添加SQL统计功能,统计SQL中所使用的表和字段

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@274 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-06-22 02:27:21 +00:00
parent b42fe2909d
commit e96cd02a8b
19 changed files with 89 additions and 52 deletions
@@ -29,8 +29,8 @@ public class MySqlSchemaStatVisitorTest1 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(2, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.getTables().containsKey("usergroups"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(true, visitor.containsTable("usergroups"));
Assert.assertEquals(4, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "groupId")));
@@ -57,8 +57,8 @@ public class MySqlSchemaStatVisitorTest1 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(2, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.getTables().containsKey("usergroups"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(true, visitor.containsTable("usergroups"));
Assert.assertEquals(4, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "groupId")));
@@ -29,7 +29,7 @@ public class MySqlSchemaStatVisitorTest2 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -54,7 +54,7 @@ public class MySqlSchemaStatVisitorTest2 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -79,7 +79,7 @@ public class MySqlSchemaStatVisitorTest2 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,8 +29,8 @@ public class MySqlSchemaStatVisitorTest3 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(2, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.getTables().containsKey("users2"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(true, visitor.containsTable("users2"));
Assert.assertEquals(5, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,7 +29,7 @@ public class MySqlSchemaStatVisitorTest4 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,7 +29,7 @@ public class MySqlSchemaStatVisitorTest_Delete extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,7 +29,7 @@ public class MySqlSchemaStatVisitorTest_Subquery extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,8 +29,8 @@ public class MySqlSchemaStatVisitorTest_Subquery2 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(2, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.getTables().containsKey("groups"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(true, visitor.containsTable("groups"));
Assert.assertEquals(5, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,7 +29,7 @@ public class MySqlSchemaStatVisitorTest_Update extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -6,8 +6,6 @@ import junit.framework.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor;
import com.alibaba.druid.sql.dialect.oracle.ast.visitor.OracleSchemaStatVisitor;
import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser;
import com.alibaba.druid.stat.TableStat.Column;
@@ -31,8 +29,8 @@ public class OracleSchemaStatVisitorTest1 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(2, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.getTables().containsKey("usergroups"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(true, visitor.containsTable("usergroups"));
Assert.assertEquals(4, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "groupId")));
@@ -45,13 +43,13 @@ public class OracleSchemaStatVisitorTest1 extends TestCase {
public void test_1() throws Exception {
String sql = "select a.name, b.name FROM users a, usergroups b on a.groupId = b.id where a.groupID = ?";
MySqlStatementParser parser = new MySqlStatementParser(sql);
OracleStatementParser parser = new OracleStatementParser(sql);
List<SQLStatement> statementList = parser.parseStatementList();
SQLStatement statemen = statementList.get(0);
Assert.assertEquals(1, statementList.size());
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
statemen.accept(visitor);
System.out.println(sql);
@@ -59,8 +57,8 @@ public class OracleSchemaStatVisitorTest1 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(2, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.getTables().containsKey("usergroups"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(true, visitor.containsTable("usergroups"));
Assert.assertEquals(4, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "groupId")));
@@ -29,7 +29,7 @@ public class OracleSchemaStatVisitorTest2 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -54,7 +54,7 @@ public class OracleSchemaStatVisitorTest2 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -79,7 +79,7 @@ public class OracleSchemaStatVisitorTest2 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,8 +29,8 @@ public class OracleSchemaStatVisitorTest3 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(2, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.getTables().containsKey("users2"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(true, visitor.containsTable("users2"));
Assert.assertEquals(5, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,7 +29,7 @@ public class OracleSchemaStatVisitorTest4 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,7 +29,7 @@ public class OracleSchemaStatVisitorTest_Delete extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,7 +29,7 @@ public class OracleSchemaStatVisitorTest_Subquery extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,8 +29,8 @@ public class OracleSchemaStatVisitorTest_Subquery2 extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(2, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.getTables().containsKey("groups"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(true, visitor.containsTable("groups"));
Assert.assertEquals(5, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));
@@ -29,7 +29,7 @@ public class OracleSchemaStatVisitorTest_Update extends TestCase {
System.out.println("fields : " + visitor.getFields());
Assert.assertEquals(1, visitor.getTables().size());
Assert.assertEquals(true, visitor.getTables().containsKey("users"));
Assert.assertEquals(true, visitor.containsTable("users"));
Assert.assertEquals(2, visitor.getFields().size());
Assert.assertEquals(true, visitor.getFields().contains(new Column("users", "id")));