Search in sources :

Example 36 with Column

use of com.alibaba.druid.stat.TableStat.Column in project druid by alibaba.

the class MySqlUpdateTest_4 method test_0.

public void test_0() throws Exception {
    String sql = "insert into darenai_stat_url SET user='nologin',ip='58.101.223.183',reffer='http://item.taobao.com/item.htm?spm=a230r.1.14.419.KDVewC&id=17052767689',url='/d/jingpinhui?spm=2013.1.0.0.zr4nLz&ac=shop&imageid=1019937265&s=1259538&s=1259538',shopnick='零利润3232',time=NOW()";
    MySqlStatementParser parser = new MySqlStatementParser(sql);
    List<SQLStatement> statementList = parser.parseStatementList();
    SQLStatement stmt = statementList.get(0);
    //        print(statementList);
    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(6, visitor.getColumns().size());
    Assert.assertEquals(0, visitor.getConditions().size());
    Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("darenai_stat_url")));
    Assert.assertTrue(visitor.getColumns().contains(new Column("darenai_stat_url", "user")));
    Assert.assertTrue(visitor.getColumns().contains(new Column("darenai_stat_url", "ip")));
    {
        String output = SQLUtils.toMySqlString(stmt);
        Assert.assertEquals("INSERT INTO darenai_stat_url (user, ip, reffer, url, shopnick" + "\n\t, time)" + "\nVALUES ('nologin', '58.101.223.183', 'http://item.taobao.com/item.htm?spm=a230r.1.14.419.KDVewC&amp;id=17052767689', '/d/jingpinhui?spm=2013.1.0.0.zr4nLz&amp;ac=shop&amp;imageid=1019937265&amp;s=1259538&amp;s=1259538', '零利润3232'" + //
        "\n\t, NOW())", output);
    }
    {
        String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
        Assert.assertEquals("insert into darenai_stat_url (user, ip, reffer, url, shopnick" + "\n\t, time)" + "\nvalues ('nologin', '58.101.223.183', 'http://item.taobao.com/item.htm?spm=a230r.1.14.419.KDVewC&amp;id=17052767689', '/d/jingpinhui?spm=2013.1.0.0.zr4nLz&amp;ac=shop&amp;imageid=1019937265&amp;s=1259538&amp;s=1259538', '零利润3232'" + //
        "\n\t, NOW())", output);
    }
}
Also used : MySqlSchemaStatVisitor(com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor) Column(com.alibaba.druid.stat.TableStat.Column) MySqlStatementParser(com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement)

Example 37 with Column

use of com.alibaba.druid.stat.TableStat.Column in project druid by alibaba.

the class MySqlUpdateTest_9 method test_0.

public void test_0() throws Exception {
    String sql = "update tb1 a , tb2 b set a.name='abc' where a.id=b.id";
    MySqlStatementParser parser = new MySqlStatementParser(sql);
    List<SQLStatement> statementList = parser.parseStatementList();
    SQLStatement stmt = statementList.get(0);
    print(statementList);
    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(2, visitor.getTables().size());
    Assert.assertEquals(3, visitor.getColumns().size());
    // Assert.assertEquals(2, visitor.getConditions().size());
    Assert.assertTrue(visitor.containsTable("tb1"));
    Assert.assertTrue(visitor.containsTable("tb2"));
    Assert.assertTrue(visitor.getColumns().contains(new Column("tb1", "id")));
    Assert.assertTrue(visitor.getColumns().contains(new Column("tb1", "name")));
    Assert.assertTrue(visitor.getColumns().contains(new Column("tb2", "id")));
    {
        String output = SQLUtils.toMySqlString(stmt);
        Assert.assertEquals("UPDATE tb1 a, tb2 b\n" + "SET a.name = 'abc'\n" + //
        "WHERE a.id = b.id", output);
    }
    {
        String output = SQLUtils.toMySqlString(stmt, SQLUtils.DEFAULT_LCASE_FORMAT_OPTION);
        Assert.assertEquals("update tb1 a, tb2 b\n" + "set a.name = 'abc'\n" + //
        "where a.id = b.id", output);
    }
}
Also used : MySqlSchemaStatVisitor(com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor) Column(com.alibaba.druid.stat.TableStat.Column) MySqlStatementParser(com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement)

Example 38 with Column

use of com.alibaba.druid.stat.TableStat.Column in project druid by alibaba.

the class MySqlSchemaStatVisitorTest1 method test_0.

public void test_0() throws Exception {
    String sql = "select a.name, b.name FROM users a, usergroups b on a.groupId = b.id";
    MySqlStatementParser parser = new MySqlStatementParser(sql);
    List<SQLStatement> statementList = parser.parseStatementList();
    SQLStatement statemen = statementList.get(0);
    Assert.assertEquals(1, statementList.size());
    MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
    statemen.accept(visitor);
    System.out.println(sql);
    System.out.println("Tables : " + visitor.getTables());
    System.out.println("fields : " + visitor.getColumns());
    Assert.assertEquals(2, visitor.getTables().size());
    Assert.assertEquals(true, visitor.containsTable("users"));
    Assert.assertEquals(true, visitor.containsTable("usergroups"));
    Assert.assertEquals(4, visitor.getColumns().size());
    Assert.assertEquals(true, visitor.getColumns().contains(new Column("users", "groupId")));
    Assert.assertEquals(true, visitor.getColumns().contains(new Column("users", "name")));
    Assert.assertEquals(true, visitor.getColumns().contains(new Column("usergroups", "id")));
    Assert.assertEquals(true, visitor.getColumns().contains(new Column("usergroups", "name")));
}
Also used : MySqlSchemaStatVisitor(com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor) Column(com.alibaba.druid.stat.TableStat.Column) MySqlStatementParser(com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement)

Example 39 with Column

use of com.alibaba.druid.stat.TableStat.Column in project druid by alibaba.

the class MySqlSelectTest_1 method test_0.

public void test_0() throws Exception {
    String sql = "SELECT t1.name, t2.salary FROM employee t1, info t2  WHERE t1.name = t2.name;";
    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(2, visitor.getTables().size());
    Assert.assertEquals(3, visitor.getColumns().size());
    Assert.assertEquals(2, visitor.getConditions().size());
    Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("employee")));
    Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("info")));
    Assert.assertTrue(visitor.getColumns().contains(new Column("employee", "name")));
    Assert.assertTrue(visitor.getColumns().contains(new Column("info", "name")));
    Assert.assertTrue(visitor.getColumns().contains(new Column("info", "salary")));
}
Also used : MySqlSchemaStatVisitor(com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor) Column(com.alibaba.druid.stat.TableStat.Column) MySqlStatementParser(com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement)

Example 40 with Column

use of com.alibaba.druid.stat.TableStat.Column in project druid by alibaba.

the class MySqlSchemaStatVisitorTest3 method test_0.

public void test_0() throws Exception {
    String sql = "insert into users2 (id2, name2) select id, name FROM users where loginCount > 1";
    MySqlStatementParser parser = new MySqlStatementParser(sql);
    List<SQLStatement> statementList = parser.parseStatementList();
    SQLStatement statemen = statementList.get(0);
    Assert.assertEquals(1, statementList.size());
    MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
    statemen.accept(visitor);
    System.out.println(sql);
    System.out.println("Tables : " + visitor.getTables());
    System.out.println("fields : " + visitor.getColumns());
    Assert.assertEquals(2, visitor.getTables().size());
    Assert.assertEquals(true, visitor.containsTable("users"));
    Assert.assertEquals(true, visitor.containsTable("users2"));
    Assert.assertEquals(5, visitor.getColumns().size());
    Assert.assertEquals(true, visitor.getColumns().contains(new Column("users", "id")));
    Assert.assertEquals(true, visitor.getColumns().contains(new Column("users", "name")));
    Assert.assertEquals(true, visitor.getColumns().contains(new Column("users", "loginCount")));
    Assert.assertEquals(true, visitor.getColumns().contains(new Column("users2", "name2")));
    Assert.assertEquals(true, visitor.getColumns().contains(new Column("users2", "id2")));
}
Also used : MySqlSchemaStatVisitor(com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor) Column(com.alibaba.druid.stat.TableStat.Column) MySqlStatementParser(com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement)

Aggregations

Column (com.alibaba.druid.stat.TableStat.Column)134 SQLStatement (com.alibaba.druid.sql.ast.SQLStatement)122 MySqlSchemaStatVisitor (com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor)74 MySqlStatementParser (com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser)73 OracleStatementParser (com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser)19 OracleSchemaStatVisitor (com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor)19 SQLServerStatementParser (com.alibaba.druid.sql.dialect.sqlserver.parser.SQLServerStatementParser)12 SQLServerSchemaStatVisitor (com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerSchemaStatVisitor)12 SQLCreateTableStatement (com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement)10 DB2StatementParser (com.alibaba.druid.sql.dialect.db2.parser.DB2StatementParser)8 DB2SchemaStatVisitor (com.alibaba.druid.sql.dialect.db2.visitor.DB2SchemaStatVisitor)8 SchemaStatVisitor (com.alibaba.druid.sql.visitor.SchemaStatVisitor)8 OracleOutputVisitor (com.alibaba.druid.sql.dialect.oracle.visitor.OracleOutputVisitor)6 MysqlTest (com.alibaba.druid.sql.MysqlTest)5 SQLExpr (com.alibaba.druid.sql.ast.SQLExpr)5 SQLObject (com.alibaba.druid.sql.ast.SQLObject)5 SQLIdentifierExpr (com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr)5 Test (org.junit.Test)5 SQLCreateViewStatement (com.alibaba.druid.sql.ast.statement.SQLCreateViewStatement)4 MySqlCreateTableStatement (com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement)4