mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bug fixed for sql parser
This commit is contained in:
@@ -52,7 +52,7 @@ public class OracleBlockTest2 extends OracleTest {
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("wl_ship_order")));
|
||||
|
||||
Assert.assertEquals(4, visitor.getColumns().size());
|
||||
Assert.assertEquals(4, visitor.getConditions().size());
|
||||
Assert.assertEquals(3, visitor.getConditions().size());
|
||||
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("wl_ship_order", "id")));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleBlockTest5 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = "declare l_cnt number; "
|
||||
+ //
|
||||
"begin l_cnt := 0;"
|
||||
+ //
|
||||
" for c1 in (select id || '' id" +//
|
||||
" from escrow_trade" + //
|
||||
" where out_order_id in" + //
|
||||
" (select out_order_id from tab_ipay_out_order_ids)" + //
|
||||
" ) " + //
|
||||
" loop" + //
|
||||
" update ipay_contract" + //
|
||||
" set is_chargeback = 'N'" + //
|
||||
" where out_ref = c1.id and is_chargeback <> 'N'; l_cnt := l_cnt + 1; if (mod(l_cnt, 200) = 0) then commit; end if; dbms_application_info.set_client_info(l_cnt || ' rows updated!'); end loop; commit; exception when others then raise;"
|
||||
+ " rollback; " + //
|
||||
"end;;";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(3, visitor.getTables().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("escrow_trade")));
|
||||
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(7, visitor.getColumns().size());
|
||||
Assert.assertEquals(2, visitor.getConditions().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("departments", "department_id")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleBlockTest6 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = "declare" + //
|
||||
" l_line varchar2(32767);" + //
|
||||
" l_done number;" + //
|
||||
" l_buffer varchar2(32767) := '';" + //
|
||||
" l_lengthbuffer number := 0;" + //
|
||||
" l_lengthline number := 0; " + //
|
||||
"begin" + //
|
||||
" loop" + //
|
||||
" dbms_output.get_line( l_line, l_done );" + //
|
||||
" if (l_buffer is null) then" + //
|
||||
" l_lengthbuffer := 0;" + //
|
||||
" else" + //
|
||||
" l_lengthbuffer := length(l_buffer);" + //
|
||||
" end if;" + //
|
||||
" if (l_line is null) then" + //
|
||||
" l_lengthline := 0;" + //
|
||||
" else" + //
|
||||
" l_lengthline := length(l_line);" + //
|
||||
" end if;" + //
|
||||
" exit when l_lengthbuffer + l_lengthline > :maxbytes " + //
|
||||
" OR l_lengthbuffer + l_lengthline > 32767 OR l_done = 1;" + //
|
||||
" l_buffer := l_buffer || l_line || chr(10);" + //
|
||||
" end loop;" + //
|
||||
" :done := l_done;" + //
|
||||
" :buffer := l_buffer;" + //
|
||||
" :line := l_line; " + //
|
||||
"end;";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(0, visitor.getTables().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("escrow_trade")));
|
||||
|
||||
Assert.assertEquals(0, visitor.getColumns().size());
|
||||
Assert.assertEquals(0, visitor.getConditions().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("departments", "department_id")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleCreateSequenceTest extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = //
|
||||
"CREATE SEQUENCE customers_seq" + //
|
||||
" START WITH 1000" + //
|
||||
" INCREMENT BY 1" + //
|
||||
" NOCACHE" + //
|
||||
" NOCYCLE;";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(0, visitor.getTables().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("cdc.en_complaint_ipr_stat_fdt0")));
|
||||
|
||||
Assert.assertEquals(0, visitor.getColumns().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "*")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "YEAR")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "order_mode")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleCreateTableTest10 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = //
|
||||
"create global temporary table sys.ora_temp_1_ds_16247 on commit preserve rows cache noparallel " + //
|
||||
"as " + //
|
||||
"select /*+ no_parallel(t) no_parallel_index(t) dbms_stats cursor_sharing_exact use_weak_name_resl dynamic_sampling(0) no_monitoring */\"OBJ#\",\"INTCOL#\",\"SAVTIME\",\"FLAGS\",\"NULL_CNT\",\"MINIMUM\",\"MAXIMUM\",\"DISTCNT\",\"DENSITY\",\"LOWVAL\",\"HIVAL\",\"AVGCLN\",\"SAMPLE_DISTCNT\",\"SAMPLE_SIZE\",\"TIMESTAMP#\",\"SPARE1\",\"SPARE2\",\"SPARE3\",\"SPARE4\",\"SPARE5\",\"SPARE6\",SYS_EXTRACT_UTC(\"SAVTIME\") SYS_DS_ALIAS_22 from \"SYS\".\"WRI$_OPTSTAT_HISTHEAD_HISTORY\" sample ( 5.8764601401) t where 1 = 2";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(2, visitor.getTables().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("sys.ora_temp_1_ds_16247")));
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY")));
|
||||
|
||||
Assert.assertEquals(21, visitor.getColumns().size());
|
||||
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("SYS.WRI$_OPTSTAT_HISTHEAD_HISTORY", "OBJ#")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "order_mode")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleCreateTableTest11 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = //
|
||||
"create table zfj_en_click(" + //
|
||||
"P_M CHAR(6), KEYWORD VARCHAR2(256), " + //
|
||||
"REGION_NAME VARCHAR2(100), " + //
|
||||
"COUNTRY_ACCORD_NAME VARCHAR2(256), " + //
|
||||
"P_NAME VARCHAR2(256), " + //
|
||||
"P_VALUE VARCHAR2(256), " + //
|
||||
"CLICK_CNT NUMBER" + //
|
||||
") " + //
|
||||
"partition by range (p_m) " + //
|
||||
"(" + //
|
||||
"partition part_201108 values less than('201109')," + //
|
||||
"partition part_201109 values less than('201110')," + //
|
||||
"partition part_201110 values less than('201111'), " + //
|
||||
"partition part_201111 values less than('201112'), " + //
|
||||
"partition part_201112 values less than('201201'), " + //
|
||||
"partition part_201201 values less than('201202'), " + //
|
||||
"partition part_201202 values less than('201203'), " + //
|
||||
"partition part_201203 values less than('201204'), " + //
|
||||
"partition part_201204 values less than('201205'), " + //
|
||||
"partition part_201205 values less than('201206'), " + //
|
||||
"partition part_201206 values less than('201207'), " + //
|
||||
"partition part_201207 values less than('201208'), " + //
|
||||
"partition part_201208 values less than('201209'), " + //
|
||||
"partition part_201209 values less than('201210'), " + //
|
||||
"partition part_201210 values less than('201211'), " + //
|
||||
"partition part_201211 values less than('201212'), " + //
|
||||
"partition part_201212 values less than('201301'), " + //
|
||||
"partition part_201301 values less than('201302'), " + //
|
||||
"partition part_201302 values less than('201303'), " + //
|
||||
"partition part_201303 values less than('201304'), " + //
|
||||
"partition part_201304 values less than('201305'), " + //
|
||||
"partition part_201305 values less than('201306'), " + //
|
||||
"partition part_201306 values less than('201307') " + //
|
||||
") ";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(1, visitor.getTables().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("zfj_en_click")));
|
||||
|
||||
Assert.assertEquals(7, visitor.getColumns().size());
|
||||
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("zfj_en_click", "P_M")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("zfj_en_click", "KEYWORD")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("zfj_en_click", "REGION_NAME")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("zfj_en_click", "COUNTRY_ACCORD_NAME")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("zfj_en_click", "P_NAME")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("zfj_en_click", "P_VALUE")));
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("zfj_en_click", "CLICK_CNT")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "order_mode")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleDeleteTest extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = "delete from BILLING_LOG_MONITOR log where log.guid in (" + //
|
||||
"'wb_xinmin.zhao_test121','wb_xinmin.zhao_test122'" + //
|
||||
",'wb_xinmin.zhao_test123','wb_xinmin.zhao_test124'" + ")";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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());
|
||||
|
||||
Assert.assertEquals(1, visitor.getTables().size());
|
||||
Assert.assertEquals(1, visitor.getColumns().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("BILLING_LOG_MONITOR")));
|
||||
// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("employees")));
|
||||
//
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("BILLING_LOG_MONITOR", "guid")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "salary")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "commission_pct")));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleExplainTest3 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = //
|
||||
"explain plan for select 'enaliint'||m.login_id from vaccount v, company c, member m where m.company_id = c.id and v.id = c.id and v.status = 'enabled' and (v.service_type = 'cgs' or v.service_type = 'tp' or v.service_type = 'hkgs' or v.service_type = 'twgs') and m.company_id > 0 and m.status = 'enabled' and m.gmt_create > c.gmt_modified";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(0, visitor.getTables().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("\"DUAL\"")));
|
||||
|
||||
Assert.assertEquals(0, visitor.getColumns().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "*")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "YEAR")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("pivot_table", "order_mode")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleInsertTest8 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = "insert into AV_INFO_NEW (ID, GMT_CREATE, GMT_MODIFIED, COMPANY_ID, COMPANY_NAME_CN, COMPANY_NAME_EN, COMPANY_COUNTRY, "
|
||||
+ " COMPANY_PROVINCE, COMPANY_CITY, COMPANY_ADDR_CN, COMPANY_ADDR_EN, MEMBER_SEX, MEMBER_CN_NAME, MEMBER_FIRST_NAME, MEMBER_LAST_NAME,"
|
||||
+ " MEMBER_PHONE_COUNTRY, MEMBER_PHONE_AREA, MEMBER_PHONE_NUMBER, MEMBER_JOB_TITLE_CN, MEMBER_JOB_TITLE_EN, MEMBER_DEPT_EN, "
|
||||
+ " MEMBER_DEPT_CN, LINK_EMAIL, STATUS, AV_PROVIDER, AV_ORIGIN)"
|
||||
+ " values (1000236058, sysdate, sysdate, 1300904670, '��������5''TW'"
|
||||
+ ", 'Yunnan', 'sadf', '4r7V', 'fdgtg', 'M', '�����info_name4', 'Fnameinfo_name4'"
|
||||
+ ", '33', '4444', '6666', '���fgsgsdfg', 'fggtgth', '�������������', null, 'zeus'" + ")";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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());
|
||||
|
||||
Assert.assertEquals(1, visitor.getTables().size());
|
||||
Assert.assertEquals(26, visitor.getColumns().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("AV_INFO_NEW")));
|
||||
// Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("employees")));
|
||||
//
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "employee_id")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "salary")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "commission_pct")));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleInsertTest9 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = "INSERT INTO \"ZFJ_EN_CLICK\" \"A1\" (" + //
|
||||
"\"P_M\",\"KEYWORD\",\"REGION_NAME\"," + //
|
||||
"\"COUNTRY_ACCORD_NAME\",\"P_NAME\",\"P_VALUE\",\"CLICK_CNT\"" + //
|
||||
") " + "SELECT \"A2\".\"P_M\",\"A2\".\"KEYWORD\",\"A2\".\"REGION_NAME\"" + //
|
||||
" ,\"A2\".\"COUNTRY_NAME\",\"A2\".\"P_NAME\",\"A2\".\"P_VALUE\",\"A2\".\"CLICK_CNT\" " + //
|
||||
"FROM \"ZFJ_EN_CLICK_201202\"@! \"A2\"";
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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());
|
||||
|
||||
Assert.assertEquals(2, visitor.getTables().size());
|
||||
Assert.assertEquals(14, visitor.getColumns().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("ZFJ_EN_CLICK")));
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("ZFJ_EN_CLICK_201202@!")));
|
||||
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("ZFJ_EN_CLICK", "P_M")));
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("employees", "commission_pct")));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleSelectTest32 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = //
|
||||
"select * from ESCROW_LOGISTICS t -- where received_status <>'not_received ' and received_status <>'received' "; //
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(1, visitor.getTables().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("ESCROW_LOGISTICS")));
|
||||
|
||||
Assert.assertEquals(1, visitor.getColumns().size());
|
||||
|
||||
Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("ESCROW_LOGISTICS", "*")));
|
||||
|
||||
// Assert.assertTrue(visitor.getOrderByColumns().contains(new TableStat.Column("employees", "last_name")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleSelectTest33 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = //
|
||||
"SELECT /*+ Q1647000 NO_EXPAND ROWID(A1) */ " + //
|
||||
"A1.\"PRODUCT_ID\",A1.\"SUMMARY\",A1.\"DESCRIPTION\",A1.\"DESCRIPTION2\" " + //
|
||||
"FROM \"ALIBABA1949\".\"WS_PRODUCT_DETAIL\" A1"; //
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(1, visitor.getTables().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("ALIBABA1949.WS_PRODUCT_DETAIL")));
|
||||
|
||||
Assert.assertEquals(4, visitor.getColumns().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("ESCROW_LOGISTICS", "*")));
|
||||
|
||||
// Assert.assertTrue(visitor.getOrderByColumns().contains(new TableStat.Column("employees", "last_name")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.alibaba.druid.bvt.sql.oracle;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.alibaba.druid.sql.OracleTest;
|
||||
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;
|
||||
|
||||
public class OracleSelectTest34 extends OracleTest {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
String sql = //
|
||||
"select t.logistics_no, t.event_date, t.country, t.province" + //
|
||||
" , t.city,t.address, t.area_code,t.received_status " + //
|
||||
"from wl_tracking t " + //
|
||||
"where t.logistics_no in ( " + //
|
||||
" select el.logistics_no " + //
|
||||
" from escrow_logistics el" + //
|
||||
" where rownum <= 20" + //
|
||||
" and el.gmt_send between to_date ('2011-9-1', 'yyyy-mm-dd') " + //
|
||||
" and to_date ('2011-11-30 23:59:59','yyyy-mm-dd hh24:mi:ss')" + //
|
||||
" and el.received_status = 'received'" + //
|
||||
" and el.goods_direction = 'send_goods'" + //
|
||||
" and el.country = 'US'" + //
|
||||
" and el.logistics_company in ('Hongkong Post Air Mail','Hongkong Post Air Parcel','China Post Air Mail','China Post Air Parcel')" +
|
||||
" and el.recv_status_desc is null) and t.event_date is not null order by t.logistics_no, t.event_date"; //
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
print(statementList);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.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("orderBy : " + visitor.getOrderByColumns());
|
||||
|
||||
Assert.assertEquals(2, visitor.getTables().size());
|
||||
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("wl_tracking")));
|
||||
Assert.assertTrue(visitor.getTables().containsKey(new TableStat.Name("escrow_logistics")));
|
||||
|
||||
Assert.assertEquals(15, visitor.getColumns().size());
|
||||
|
||||
// Assert.assertTrue(visitor.getColumns().contains(new TableStat.Column("ESCROW_LOGISTICS", "*")));
|
||||
|
||||
// Assert.assertTrue(visitor.getOrderByColumns().contains(new TableStat.Column("employees", "last_name")));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,346 @@
|
||||
package com.alibaba.druid.sql;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.Date;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import junit.framework.Assert;
|
||||
import oracle.jdbc.OracleStatement;
|
||||
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
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.fastjson.JSON;
|
||||
|
||||
public class TestMigrate extends OracleTest {
|
||||
|
||||
private String jdbcUrl;
|
||||
private String user;
|
||||
private String password;
|
||||
private DruidDataSource dataSource;
|
||||
|
||||
public void setUp() throws Exception {
|
||||
jdbcUrl = "jdbc:oracle:thin:@10.20.149.18:1521:emdb";
|
||||
user = "wardon";
|
||||
password = "wardon";
|
||||
|
||||
dataSource = new DruidDataSource();
|
||||
dataSource.setInitialSize(1);
|
||||
dataSource.setUrl(jdbcUrl);
|
||||
dataSource.setUsername(user);
|
||||
dataSource.setPassword(password);
|
||||
dataSource.setMaxActive(50);
|
||||
dataSource.setPoolPreparedStatements(true);
|
||||
dataSource.setMaxOpenPreparedStatements(100);
|
||||
}
|
||||
|
||||
private int updateCount = 0;
|
||||
|
||||
public void updateRecord(String sqlId, String result) throws Exception {
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
PreparedStatement stmt = conn.prepareStatement("UPDATE db_day_sql_fulltext SET SQL_PARSE_RESULT = ? WHERE sql_id = ?");
|
||||
|
||||
stmt.setString(1, result);
|
||||
stmt.setString(2, sqlId);
|
||||
|
||||
int updateCount = stmt.executeUpdate();
|
||||
if (updateCount < 1) {
|
||||
throw new Exception();
|
||||
}
|
||||
|
||||
stmt.close();
|
||||
|
||||
conn.close();
|
||||
|
||||
System.out.println((this.updateCount++) + " : " + sqlId);
|
||||
}
|
||||
|
||||
|
||||
public void schemaStatInternal(Record r) throws Exception {
|
||||
String sql = r.getSqlText();
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
// print(statementList);
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.accept(visitor);
|
||||
|
||||
StringBuffer buf = new StringBuffer();
|
||||
buf.append("Tables : " + visitor.getTables().toString());
|
||||
buf.append("\nColumns : " + visitor.getColumns().toString());
|
||||
buf.append("\nCoditions : " + visitor.getConditions().toString());
|
||||
buf.append("\nrelationships " + visitor.getRelationships().toString());
|
||||
|
||||
System.out.println(buf.toString());
|
||||
|
||||
System.out.println();
|
||||
System.out.println();
|
||||
System.out.println();
|
||||
|
||||
updateRecord(r.getSqlId(), buf.toString());
|
||||
}
|
||||
|
||||
public void clearResult() throws Exception {
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
Statement stmt = conn.createStatement();
|
||||
|
||||
stmt.execute("DELETE FROM db_day_sql_fulltext");
|
||||
stmt.close();
|
||||
conn.close();
|
||||
}
|
||||
|
||||
public void test_migrate() throws Exception {
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
int count = 0;
|
||||
{
|
||||
String sql = "SELECT COUNT(*) FROM db_day_sqltext";
|
||||
Statement stmt = conn.createStatement();
|
||||
|
||||
ResultSet rs = stmt.executeQuery(sql);
|
||||
rs.next();
|
||||
count = rs.getInt(1);
|
||||
rs.close();
|
||||
stmt.close();
|
||||
}
|
||||
System.out.println("COUNT : " + count);
|
||||
|
||||
clearResult();
|
||||
|
||||
String sql = "SELECT SNAP_DATE, DBNAME, SQL_ID, PIECE, SQL_TEXT" + //
|
||||
" , COMMAND_TYPE, LAST_SNAP_DATE, DB_PK, SQL_PARSE_RESULT " + //
|
||||
" FROM db_day_sqltext " + //
|
||||
" WHERE snap_date = trunc(sysdate) " + //
|
||||
" ORDER BY db_pk, sql_id, piece";
|
||||
|
||||
Statement stmt = conn.createStatement();
|
||||
OracleStatement oracleStmt = stmt.unwrap(OracleStatement.class);
|
||||
oracleStmt.setRowPrefetch(1000);
|
||||
ResultSet rs = stmt.executeQuery(sql);
|
||||
|
||||
List<Record> list = new ArrayList<Record>();
|
||||
Record r = null;
|
||||
|
||||
String lastSqlId = null;
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
while (rs.next()) {
|
||||
j++;
|
||||
Date d1 = rs.getDate(1);
|
||||
String s2 = rs.getString(2);
|
||||
String sqlId = rs.getString(3);
|
||||
|
||||
if (lastSqlId == null || !lastSqlId.equals(sqlId)) {
|
||||
if (r != null) {
|
||||
System.out.println((i++) + "/" + j + " : " + r.getSqlId());
|
||||
System.out.println();
|
||||
|
||||
try {
|
||||
setInfo(r);
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
list.add(r);
|
||||
if (list.size() > 100) {
|
||||
insert(list);
|
||||
list.clear();
|
||||
}
|
||||
}
|
||||
|
||||
r = new Record();
|
||||
r.setSnapshotDate(d1);
|
||||
r.setDbName(s2);
|
||||
r.setSqlId(sqlId);
|
||||
r.setPiece(rs.getInt(4));
|
||||
r.setSqlText(rs.getString(5));
|
||||
|
||||
r.setCommandType(rs.getInt(6));
|
||||
r.setLastSnapshotDate(rs.getDate(7));
|
||||
r.setDbPk(rs.getLong(8));
|
||||
} else {
|
||||
String part = rs.getString(5);
|
||||
|
||||
if (part == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (part != null) {
|
||||
r.appendSqlText(part);
|
||||
}
|
||||
|
||||
}
|
||||
lastSqlId = sqlId;
|
||||
}
|
||||
|
||||
insert(list);
|
||||
rs.close();
|
||||
stmt.close();
|
||||
|
||||
conn.close();
|
||||
}
|
||||
|
||||
public void setInfo(Record r) {
|
||||
OracleStatementParser parser = new OracleStatementParser(r.getSqlText());
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
SQLStatement statemen = statementList.get(0);
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
// print(statementList);
|
||||
|
||||
OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor();
|
||||
statemen.accept(visitor);
|
||||
|
||||
StringBuffer buf = new StringBuffer();
|
||||
buf.append("Tables : " + visitor.getTables().toString());
|
||||
buf.append("\nColumns : " + visitor.getColumns().toString());
|
||||
buf.append("\nCoditions : " + visitor.getConditions().toString());
|
||||
buf.append("\nrelationships " + visitor.getRelationships().toString());
|
||||
|
||||
r.setResult(buf.toString());
|
||||
|
||||
}
|
||||
|
||||
public void insert(List<Record> list) throws Exception {
|
||||
if (list.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
String sql = "INSERT INTO db_day_sql_fulltext " + //
|
||||
"(SNAP_DATE, DBNAME, SQL_ID, PIECE, SQL_TEXT" + //
|
||||
", COMMAND_TYPE, LAST_SNAP_DATE, DB_PK, SQL_PARSE_RESULT)" + //
|
||||
" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
PreparedStatement stmt = conn.prepareStatement(sql);
|
||||
|
||||
for (Record r : list) {
|
||||
stmt.setDate(1, r.getSnapshotDate());
|
||||
stmt.setString(2, r.getDbName());
|
||||
stmt.setString(3, r.getSqlId());
|
||||
stmt.setInt(4, r.getPiece());
|
||||
stmt.setString(5, r.getSqlText());
|
||||
|
||||
stmt.setInt(6, r.getCommandType());
|
||||
stmt.setDate(7, r.getLastSnapshotDate());
|
||||
stmt.setLong(8, r.getDbPk());
|
||||
stmt.setString(9, r.getResult());
|
||||
|
||||
stmt.addBatch();
|
||||
}
|
||||
stmt.executeBatch();
|
||||
|
||||
stmt.close();
|
||||
|
||||
conn.close();
|
||||
}
|
||||
|
||||
public static class Record {
|
||||
|
||||
private Date snapshotDate;
|
||||
private String dbName;
|
||||
private String sqlId;
|
||||
private StringBuffer sqlText = new StringBuffer();
|
||||
private Integer piece;
|
||||
private Integer commandType;
|
||||
private Date lastSnapshotDate;
|
||||
private Long dbPk;
|
||||
private String result;
|
||||
|
||||
public String getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(String result) {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
public Date getSnapshotDate() {
|
||||
return snapshotDate;
|
||||
}
|
||||
|
||||
public void setSnapshotDate(Date snapshotDate) {
|
||||
this.snapshotDate = snapshotDate;
|
||||
}
|
||||
|
||||
public String getDbName() {
|
||||
return dbName;
|
||||
}
|
||||
|
||||
public void setDbName(String dbName) {
|
||||
this.dbName = dbName;
|
||||
}
|
||||
|
||||
public String getSqlId() {
|
||||
return sqlId;
|
||||
}
|
||||
|
||||
public void setSqlId(String sqlId) {
|
||||
this.sqlId = sqlId;
|
||||
}
|
||||
|
||||
public String getSqlText() {
|
||||
return sqlText.toString();
|
||||
}
|
||||
|
||||
public void setSqlText(String sqlText) {
|
||||
if (sqlText == null) {
|
||||
sqlText = "";
|
||||
}
|
||||
this.sqlText = new StringBuffer(sqlText);
|
||||
}
|
||||
|
||||
public void appendSqlText(String sqlText) {
|
||||
this.sqlText.append(sqlText);
|
||||
}
|
||||
|
||||
public Integer getPiece() {
|
||||
return piece;
|
||||
}
|
||||
|
||||
public void setPiece(Integer piece) {
|
||||
this.piece = piece;
|
||||
}
|
||||
|
||||
public Integer getCommandType() {
|
||||
return commandType;
|
||||
}
|
||||
|
||||
public void setCommandType(Integer commandType) {
|
||||
this.commandType = commandType;
|
||||
}
|
||||
|
||||
public Date getLastSnapshotDate() {
|
||||
return lastSnapshotDate;
|
||||
}
|
||||
|
||||
public void setLastSnapshotDate(Date lastSnapshotDate) {
|
||||
this.lastSnapshotDate = lastSnapshotDate;
|
||||
}
|
||||
|
||||
public Long getDbPk() {
|
||||
return dbPk;
|
||||
}
|
||||
|
||||
public void setDbPk(Long dbPk) {
|
||||
this.dbPk = dbPk;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,7 +76,7 @@ public class TestTransform extends OracleTest {
|
||||
System.out.println((this.updateCount++) + " : " + sqlId);
|
||||
}
|
||||
|
||||
public void f_test_transform() throws Exception {
|
||||
public void test_transform() throws Exception {
|
||||
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
@@ -131,7 +131,7 @@ public class TestTransform extends OracleTest {
|
||||
try {
|
||||
schemaStatInternal(r);
|
||||
} catch (Throwable e) {
|
||||
// e.printStackTrace();
|
||||
// e.printStackTrace();
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
@@ -147,7 +147,7 @@ public class TestTransform extends OracleTest {
|
||||
try {
|
||||
schemaStatInternal(r);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
// e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -155,6 +155,13 @@ public class TestTransform extends OracleTest {
|
||||
|
||||
public void schemaStatInternal(Record r) throws Exception {
|
||||
String sql = r.getSqlText();
|
||||
|
||||
sql = sql.replaceAll("5'HK'", "5''HK'");
|
||||
sql = sql.replaceAll("5'TW'", "5''TW'");
|
||||
sql = sql.replaceAll("5'CN'", "5''CN'");
|
||||
sql = sql.replaceAll("\\Qnull, 'zeus')\\E", "', null, 'zeus')");
|
||||
sql = sql.replaceAll("\\Q--+use_hash(v c m)\\E", "");
|
||||
sql = sql.replaceAll("\\Q--+ordered use_hash(v c m)\\E", "");
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
@@ -191,7 +198,7 @@ public class TestTransform extends OracleTest {
|
||||
conn.close();
|
||||
}
|
||||
|
||||
public void test_migrate() throws Exception {
|
||||
public void f_test_migrate() throws Exception {
|
||||
Connection conn = dataSource.getConnection();
|
||||
|
||||
int count = 0;
|
||||
@@ -390,6 +397,9 @@ public class TestTransform extends OracleTest {
|
||||
}
|
||||
|
||||
public void setSqlText(String sqlText) {
|
||||
if (sqlText == null) {
|
||||
sqlText = "";
|
||||
}
|
||||
this.sqlText = new StringBuffer(sqlText);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user