Search in sources :

Example 51 with DbType

use of com.alibaba.druid.DbType in project druid by alibaba.

the class MySqlParameterizedOutputVisitorTest_53_or method test_for_parameterize.

public void test_for_parameterize() throws Exception {
    final DbType dbType = JdbcConstants.MYSQL;
    String sql = "SELECT p.id as \"id\", p.rule_id as \"ruleId\", p.name as \"name\", p.param_type as \"type\", p.default_value as \"defaultValue\", p.description as \"description\" FROM rules_parameters p WHERE (( p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=? or p.rule_id=?))";
    SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
    List<SQLStatement> stmtList = parser.parseStatementList();
    SQLStatement statement = stmtList.get(0);
    StringBuilder out = new StringBuilder();
    SQLASTOutputVisitor visitor = SQLUtils.createOutputVisitor(out, JdbcConstants.MYSQL);
    List<Object> parameters = new ArrayList<Object>();
    visitor.setParameterized(true);
    visitor.setParameterizedMergeInList(true);
    visitor.setParameters(parameters);
    /*visitor.setPrettyFormat(false);*/
    statement.accept(visitor);
    /* JSONArray array = new JSONArray();
        for(String table : visitor.getTables()){
            array.add(table.replaceAll("`",""));
        }*/
    String psql = out.toString();
    System.out.println(psql);
    assertEquals("SELECT p.id AS \"id\", p.rule_id AS \"ruleId\", p.name AS \"name\", p.param_type AS \"type\", p.default_value AS \"defaultValue\"\n" + "\t, p.description AS \"description\"\n" + "FROM rules_parameters p\n" + "WHERE p.rule_id = ?", psql);
}
Also used : SQLStatementParser(com.alibaba.druid.sql.parser.SQLStatementParser) ArrayList(java.util.ArrayList) SQLASTOutputVisitor(com.alibaba.druid.sql.visitor.SQLASTOutputVisitor) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement) DbType(com.alibaba.druid.DbType)

Example 52 with DbType

use of com.alibaba.druid.DbType in project druid by alibaba.

the class SchemaStatTest14 method test_schemaStat.

public void test_schemaStat() throws Exception {
    String sql = "delete r from t_res r where id=1 ";
    DbType dbType = JdbcConstants.MYSQL;
    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) {
        // table1.id = table2.id
        System.out.println(relationship);
    }
    System.out.println("Tables : " + statVisitor.getTables());
    System.out.println(statVisitor.getColumns());
    // System.out.println(statVisitor.getGroupByColumns()); // group by
    // group by
    System.out.println("relationships : " + statVisitor.getRelationships());
    System.out.println(statVisitor.getConditions());
    assertEquals(0, relationships.size());
    assertEquals(1, statVisitor.getColumns().size());
    assertEquals(1, statVisitor.getConditions().size());
    assertEquals(0, statVisitor.getFunctions().size());
    assertTrue(statVisitor.containsTable("t_res"));
    assertTrue(statVisitor.containsColumn("t_res", "id"));
}
Also used : SQLStatementParser(com.alibaba.druid.sql.parser.SQLStatementParser) TableStat(com.alibaba.druid.stat.TableStat) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement) DbType(com.alibaba.druid.DbType) SchemaStatVisitor(com.alibaba.druid.sql.visitor.SchemaStatVisitor)

Example 53 with DbType

use of com.alibaba.druid.DbType in project druid by alibaba.

the class SchemaStatTest7 method test_schemaStat.

public void test_schemaStat() throws Exception {
    String sql = "select t.a,t.b from t where cast(t.statdate as decimal) >=20160626";
    DbType dbType = JdbcConstants.MYSQL;
    SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
    SQLStatement stmt = parser.parseStatementList().get(0);
    SchemaStatVisitor statVisitor = SQLUtils.createSchemaStatVisitor(dbType);
    stmt.accept(statVisitor);
    // System.out.println(statVisitor.getColumns());
    // System.out.println(statVisitor.getGroupByColumns()); // group by
    Assert.assertEquals(3, statVisitor.getColumns().size());
    Assert.assertEquals(1, statVisitor.getConditions().size());
}
Also used : SQLStatementParser(com.alibaba.druid.sql.parser.SQLStatementParser) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement) DbType(com.alibaba.druid.DbType) SchemaStatVisitor(com.alibaba.druid.sql.visitor.SchemaStatVisitor)

Example 54 with DbType

use of com.alibaba.druid.DbType in project druid by alibaba.

the class SchemaStatTest9 method test_schemaStat.

public void test_schemaStat() throws Exception {
    String sql = "select now() from t";
    DbType dbType = JdbcConstants.ORACLE;
    SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
    SQLStatement stmt = parser.parseStatementList().get(0);
    SchemaStatVisitor statVisitor = SQLUtils.createSchemaStatVisitor(dbType);
    stmt.accept(statVisitor);
    // System.out.println(statVisitor.getColumns());
    // System.out.println(statVisitor.getGroupByColumns()); // group by
    // System.out.println("relationships : " + statVisitor.getRelationships()); // group by
    Assert.assertEquals(0, statVisitor.getColumns().size());
    Assert.assertEquals(0, statVisitor.getConditions().size());
    assertEquals(1, statVisitor.getFunctions().size());
    assertEquals("now", statVisitor.getFunctions().get(0).getMethodName());
}
Also used : SQLStatementParser(com.alibaba.druid.sql.parser.SQLStatementParser) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement) DbType(com.alibaba.druid.DbType) SchemaStatVisitor(com.alibaba.druid.sql.visitor.SchemaStatVisitor)

Example 55 with DbType

use of com.alibaba.druid.DbType in project druid by alibaba.

the class CreateTableSetSchemaDemo method test_schemaStat.

public void test_schemaStat() throws Exception {
    String sql = "create table t(fid varchar(20))";
    DbType dbType = DbType.oracle;
    SQLStatementParser parser = SQLParserUtils.createSQLStatementParser(sql, dbType);
    List<SQLStatement> stmtList = parser.parseStatementList();
    SchemaStatVisitor statVisitor = SQLUtils.createSchemaStatVisitor(dbType);
    for (SQLStatement stmt : stmtList) {
        SQLCreateTableStatement createTable = ((SQLCreateTableStatement) stmt);
        createTable.setSchema("sc001");
    }
    String sql2 = SQLUtils.toSQLString(stmtList, DbType.oracle);
    System.out.println(sql2);
}
Also used : SQLCreateTableStatement(com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement) SQLStatementParser(com.alibaba.druid.sql.parser.SQLStatementParser) SQLStatement(com.alibaba.druid.sql.ast.SQLStatement) DbType(com.alibaba.druid.DbType) SchemaStatVisitor(com.alibaba.druid.sql.visitor.SchemaStatVisitor)

Aggregations

DbType (com.alibaba.druid.DbType)114 SQLStatement (com.alibaba.druid.sql.ast.SQLStatement)76 SQLStatementParser (com.alibaba.druid.sql.parser.SQLStatementParser)70 ArrayList (java.util.ArrayList)50 SQLASTOutputVisitor (com.alibaba.druid.sql.visitor.SQLASTOutputVisitor)45 SchemaStatVisitor (com.alibaba.druid.sql.visitor.SchemaStatVisitor)21 TableStat (com.alibaba.druid.stat.TableStat)10 JSONArray (com.alibaba.fastjson.JSONArray)10 MySqlExportParameterVisitor (com.alibaba.druid.sql.dialect.mysql.visitor.MySqlExportParameterVisitor)5 ExportParameterVisitor (com.alibaba.druid.sql.visitor.ExportParameterVisitor)5 ParserException (com.alibaba.druid.sql.parser.ParserException)4 Map (java.util.Map)4 JdbcParameter (com.alibaba.druid.proxy.jdbc.JdbcParameter)2 SQLExpr (com.alibaba.druid.sql.ast.SQLExpr)2 SQLDeleteStatement (com.alibaba.druid.sql.ast.statement.SQLDeleteStatement)2 SQLSelectQueryBlock (com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock)2 SQLSelectStatement (com.alibaba.druid.sql.ast.statement.SQLSelectStatement)2 SQLUpdateStatement (com.alibaba.druid.sql.ast.statement.SQLUpdateStatement)2 MySqlSchemaStatVisitor (com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor)2 OracleSQLObject (com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject)2