mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fxied for schema_stat
This commit is contained in:
@@ -47,13 +47,12 @@ public class MySqlSelectTest_0 extends MysqlTest {
|
||||
System.out.println("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(1, visitor.getTables().size());
|
||||
Assert.assertEquals(3, visitor.getColumns().size());
|
||||
Assert.assertEquals(2, visitor.getColumns().size());
|
||||
Assert.assertEquals(0, visitor.getConditions().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("mytable")));
|
||||
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "last_name")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "first_name")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("mytable", "full_name")));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,11 +23,26 @@ import com.alibaba.druid.sql.MysqlTest;
|
||||
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.stat.TableStat.Column;
|
||||
|
||||
public class MySqlSelectTest_18 extends MysqlTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = "SELECT host.id as id, host.item_id as itemId, host.node_id as nodeId, host.node_type as nodeType, host.begin_time as beginTime, host.end_time as endTime, host.gmt_create as gmtCreate, host.gmt_modify as gmtModify, host.reason as reason, host.creator_id as creatorId, host.modifier_id as modifierId, user.name as creator, user.name as modifier, user.nick_name as nickName FROM notice_close_node host left join sys_user user on user.id = host.modifier_id";
|
||||
String sql = "SELECT host.id as id" //
|
||||
+ ", host.item_id as itemId" //
|
||||
+ ", host.node_id as nodeId" //
|
||||
+ ", host.node_type as nodeType" //
|
||||
+ ", host.begin_time as beginTime" //
|
||||
+ ", host.end_time as endTime" //
|
||||
+ ", host.gmt_create as gmtCreate" //
|
||||
+ ", host.gmt_modify as gmtModify" //
|
||||
+ ", host.reason as reason" //
|
||||
+ ", host.creator_id as creatorId" //
|
||||
+ ", host.modifier_id as modifierId" //
|
||||
+ ", user.name as creator" //
|
||||
+ ", user.name as modifier" //
|
||||
+ ", user.nick_name as nickName " //
|
||||
+ " FROM notice_close_node host left join sys_user user on user.id = host.modifier_id";
|
||||
|
||||
MySqlStatementParser parser = new MySqlStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
@@ -45,8 +60,10 @@ public class MySqlSelectTest_18 extends MysqlTest {
|
||||
System.out.println("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(2, visitor.getTables().size());
|
||||
Assert.assertEquals(14, visitor.getColumns().size());
|
||||
Assert.assertEquals(15, visitor.getColumns().size());
|
||||
Assert.assertEquals(2, visitor.getConditions().size());
|
||||
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("sys_user", "id")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("notice_close_node", "modifier_id")));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,11 +24,15 @@ import com.alibaba.druid.sql.SQLUtils;
|
||||
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.stat.TableStat.Column;
|
||||
|
||||
public class MySqlSelectTest_20 extends MysqlTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = "select bsvariety,max(bsh) as bsh,min(bsl) as bsl from exchange_market_info where bsdate>date_sub(now(),interval 1 day) group by bsvariety desc;";
|
||||
String sql = "select bsvariety, max(bsh) as bsh, min(bsl) as bsl "
|
||||
+ " from exchange_market_info "
|
||||
+ " where bsdate>date_sub(now(),interval 1 day)"
|
||||
+ " group by bsvariety desc;";
|
||||
|
||||
|
||||
MySqlStatementParser parser = new MySqlStatementParser(sql);
|
||||
@@ -46,6 +50,11 @@ public class MySqlSelectTest_20 extends MysqlTest {
|
||||
System.out.println("coditions : " + visitor.getConditions());
|
||||
System.out.println("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("exchange_market_info", "bsvariety")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("exchange_market_info", "bsh")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("exchange_market_info", "bsl")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("exchange_market_info", "bsdate")));
|
||||
|
||||
Assert.assertEquals(1, visitor.getTables().size());
|
||||
Assert.assertEquals(4, visitor.getColumns().size());
|
||||
Assert.assertEquals(1, visitor.getConditions().size());
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.alibaba.druid.bvt.sql.odps.udf;
|
||||
|
||||
import org.junit.Assert;
|
||||
|
||||
import com.alibaba.druid.support.opds.udf.ExportSelectListColumns;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
public class ExportSelectListColumnsTest2 extends TestCase {
|
||||
|
||||
private ExportSelectListColumns udf = new ExportSelectListColumns();
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = "SELECT * "
|
||||
+ "\n FROM fund_base_cv_ad_auction_ocr_pv_tfs a"
|
||||
+ "\n WHERE ds=20150819";
|
||||
|
||||
String text = udf.evaluate(sql, "odps");
|
||||
|
||||
Assert.assertEquals("fund_base_cv_ad_auction_ocr_pv_tfs.*", text);
|
||||
}
|
||||
}
|
||||
@@ -51,7 +51,7 @@ public class OracleMergeTest3 extends OracleTest {
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("tab$")));
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("sys.mon_mods_all$")));
|
||||
|
||||
Assert.assertEquals(15, visitor.getColumns().size());
|
||||
Assert.assertEquals(16, visitor.getColumns().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "employee_id")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "salary")));
|
||||
|
||||
@@ -58,7 +58,7 @@ public class OracleMergeTest6 extends OracleTest {
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("console_stb_ipstatus")));
|
||||
|
||||
Assert.assertEquals(7, visitor.getColumns().size());
|
||||
Assert.assertEquals(6, visitor.getColumns().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "employee_id")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "salary")));
|
||||
|
||||
@@ -61,7 +61,7 @@ public class OracleSelectTest19 extends OracleTest {
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("sys.dba_data_files")));
|
||||
|
||||
Assert.assertEquals(17, visitor.getColumns().size());
|
||||
Assert.assertEquals(18, visitor.getColumns().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "*")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "YEAR")));
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser;
|
||||
import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor;
|
||||
import com.alibaba.druid.stat.TableStat;
|
||||
import com.alibaba.druid.stat.TableStat.Column;
|
||||
|
||||
public class OracleSelectTest21 extends OracleTest {
|
||||
|
||||
@@ -66,7 +67,16 @@ public class OracleSelectTest21 extends OracleTest {
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("DBA_HIST_SYSTEM_EVENT")));
|
||||
|
||||
Assert.assertEquals(13, visitor.getColumns().size());
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("DBA_HIST_SYSTEM_EVENT", "EVENT_NAME")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("DBA_HIST_SYSTEM_EVENT", "TOTAL_WAITS")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("DBA_HIST_SYSTEM_EVENT", "TIME_WAITED_MICRO")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("DBA_HIST_SYSTEM_EVENT", "SNAP_ID")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("DBA_HIST_SYSTEM_EVENT", "INSTANCE_NUMBER")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("DBA_HIST_SYSTEM_EVENT", "DBID")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("DBA_HIST_SYSTEM_EVENT", "WAIT_CLASS")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new Column("DBA_HIST_SYSTEM_EVENT", "EVENT_ID")));
|
||||
|
||||
Assert.assertEquals(9, visitor.getColumns().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "*")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "YEAR")));
|
||||
|
||||
@@ -55,7 +55,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(20, visitor.getColumns().size());
|
||||
Assert.assertEquals(19, visitor.getColumns().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "*")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "YEAR")));
|
||||
|
||||
@@ -79,7 +79,7 @@ public class OracleSelectTest38 extends OracleTest {
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("acduser.vw_acd_info")));
|
||||
|
||||
Assert.assertEquals(15, visitor.getColumns().size());
|
||||
Assert.assertEquals(12, visitor.getColumns().size());
|
||||
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("acduser.vw_acd_info", "xzqh")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("acduser.vw_acd_info", "sglx")));
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.alibaba.druid.bvt.sql.schemaStat;
|
||||
import org.junit.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.ast.SQLStatement;
|
||||
import com.alibaba.druid.sql.dialect.odps.parser.OdpsStatementParser;
|
||||
import com.alibaba.druid.sql.dialect.odps.visitor.OdpsSchemaStatVisitor;
|
||||
import com.alibaba.druid.sql.parser.SQLStatementParser;
|
||||
import com.alibaba.druid.sql.visitor.SchemaStatVisitor;
|
||||
|
||||
@@ -10,14 +12,19 @@ import junit.framework.TestCase;
|
||||
|
||||
public class SchemaStatTest extends TestCase {
|
||||
public void test_schemaStat() throws Exception {
|
||||
String sql = "select id as orderId from t_order order by orderId";
|
||||
String sql = "select "
|
||||
+ " create_time_dd as 来电日期"
|
||||
+ " from alisec_app.adl_tb_wing_rubbish_laidian_new_reason_realname_fdt "
|
||||
+ " order by 来电日期 desc limit 30;";
|
||||
|
||||
SQLStatementParser parser = new SQLStatementParser(sql);
|
||||
SQLStatementParser parser = new OdpsStatementParser(sql);
|
||||
SQLStatement stmt = parser.parseStatementList().get(0);
|
||||
|
||||
SchemaStatVisitor statVisitor = new SchemaStatVisitor();
|
||||
SchemaStatVisitor statVisitor = new OdpsSchemaStatVisitor();
|
||||
stmt.accept(statVisitor);
|
||||
|
||||
System.out.println(statVisitor.getColumns());
|
||||
|
||||
Assert.assertEquals(1, statVisitor.getColumns().size());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user