diff --git a/src/test/java/com/alibaba/druid/sql/oracle/bvt/OracleSQLParserResourceTest.java b/src/test/java/com/alibaba/druid/sql/oracle/bvt/OracleSQLParserResourceTest.java index a2d18be129..7f62f45f4e 100644 --- a/src/test/java/com/alibaba/druid/sql/oracle/bvt/OracleSQLParserResourceTest.java +++ b/src/test/java/com/alibaba/druid/sql/oracle/bvt/OracleSQLParserResourceTest.java @@ -16,51 +16,13 @@ import com.alibaba.druid.util.JdbcUtils; public class OracleSQLParserResourceTest extends TestCase { public void test_0() throws Exception { - exec_test("bvt/parser/oracle-0.txt"); - exec_test("bvt/parser/oracle-1.txt"); - exec_test("bvt/parser/oracle-2.txt"); - exec_test("bvt/parser/oracle-3.txt"); - exec_test("bvt/parser/oracle-4.txt"); - exec_test("bvt/parser/oracle-5.txt"); - exec_test("bvt/parser/oracle-6.txt"); // PARTITION - exec_test("bvt/parser/oracle-7.txt"); - exec_test("bvt/parser/oracle-8.txt"); - exec_test("bvt/parser/oracle-9.txt"); - exec_test("bvt/parser/oracle-10.txt"); - exec_test("bvt/parser/oracle-11.txt"); - exec_test("bvt/parser/oracle-12.txt"); - exec_test("bvt/parser/oracle-13.txt"); - exec_test("bvt/parser/oracle-14.txt"); - exec_test("bvt/parser/oracle-15.txt"); - exec_test("bvt/parser/oracle-16.txt"); - exec_test("bvt/parser/oracle-17.txt"); - exec_test("bvt/parser/oracle-18.txt"); - exec_test("bvt/parser/oracle-19.txt"); - exec_test("bvt/parser/oracle-20.txt"); - exec_test("bvt/parser/oracle-21.txt"); - exec_test("bvt/parser/oracle-22.txt"); - exec_test("bvt/parser/oracle-23.txt"); - exec_test("bvt/parser/oracle-24.txt"); - exec_test("bvt/parser/oracle-25.txt"); - exec_test("bvt/parser/oracle-26.txt"); - exec_test("bvt/parser/oracle-27.txt"); - exec_test("bvt/parser/oracle-28.txt"); - exec_test("bvt/parser/oracle-29.txt"); - exec_test("bvt/parser/oracle-30.txt"); - exec_test("bvt/parser/oracle-31.txt"); - exec_test("bvt/parser/oracle-32.txt"); - exec_test("bvt/parser/oracle-33.txt"); - exec_test("bvt/parser/oracle-34.txt"); - exec_test("bvt/parser/oracle-35.txt"); - exec_test("bvt/parser/oracle-36.txt"); - exec_test("bvt/parser/oracle-37.txt"); - exec_test("bvt/parser/oracle-38.txt"); - exec_test("bvt/parser/oracle-39.txt"); - exec_test("bvt/parser/oracle-40.txt"); - exec_test("bvt/parser/oracle-41.txt"); + for (int i = 0; i <= 46; ++i) { + String resource = "bvt/parser/oracle-" + i + ".txt"; + exec_test(resource); + } + // exec_test("bvt/parser/oracle-0.txt"); } - - + public void exec_test(String resource) throws Exception { System.out.println(resource); InputStream is = null; @@ -72,16 +34,16 @@ public class OracleSQLParserResourceTest extends TestCase { String[] items = input.split("---------------------------"); String sql = items[0].trim(); String expect = items[1].trim(); - + OracleStatementParser parser = new OracleStatementParser(sql); List statementList = parser.parseStatementList(); - + Assert.assertEquals(1, statementList.size()); - + String text = output(statementList); System.out.println(text); Assert.assertEquals(expect, text.trim()); - + } private String output(List stmtList) { diff --git a/src/test/java/com/alibaba/druid/sql/parser/SQLMergeTest.java b/src/test/java/com/alibaba/druid/sql/parser/SQLMergeTest.java index c535fd1633..aedd10ca04 100644 --- a/src/test/java/com/alibaba/druid/sql/parser/SQLMergeTest.java +++ b/src/test/java/com/alibaba/druid/sql/parser/SQLMergeTest.java @@ -14,9 +14,18 @@ import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; public class SQLMergeTest extends TestCase { + protected String sql; + + protected void setUp() throws Exception { + sql = "SELECT /*mark for picman*/ * FROM WP_ALBUM WHERE MEMBER_ID = ? AND ID IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + + sql = "SELECT * FROM my_table WHERE TRUNC(SYSDATE) = DATE '2002-10-03';"; + } + public void test_merge_1() throws Exception { String result = merge(); System.out.println(result); + } public void test_merge_2() throws Exception { @@ -24,6 +33,12 @@ public class SQLMergeTest extends TestCase { System.out.println(result); } + public void test_perf() { + for (int i = 0; i < 10; ++i) { + perf(); + } + } + void perf() { long startMillis = System.currentTimeMillis(); for (int i = 0; i < 1000 * 1000; ++i) { @@ -34,11 +49,8 @@ public class SQLMergeTest extends TestCase { } private String merge() { - String sql = "SELECT /*mark for picman*/ * FROM WP_ALBUM WHERE MEMBER_ID = ? AND ID IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; - StringBuilder out = new StringBuilder(); OracleOutputVisitor visitor = new OracleOutputVisitor(out) { - public boolean visit(SQLInListExpr x) { x.getExpr().accept(this); @@ -147,7 +159,7 @@ public class SQLMergeTest extends TestCase { statement.accept(visitor); visitor.println(); } - + return out.toString(); } } diff --git a/src/test/resources/bvt/parser/oracle-42.txt b/src/test/resources/bvt/parser/oracle-42.txt new file mode 100644 index 0000000000..326bf97107 --- /dev/null +++ b/src/test/resources/bvt/parser/oracle-42.txt @@ -0,0 +1,9 @@ +SELECT 3 FROM DUAL + INTERSECT +SELECT 3f FROM DUAL; +--------------------------- +SELECT 3 +FROM DUAL +INTERSECT +SELECT 3.0F +FROM DUAL; \ No newline at end of file diff --git a/src/test/resources/bvt/parser/oracle-43.txt b/src/test/resources/bvt/parser/oracle-43.txt new file mode 100644 index 0000000000..c3c5fe2619 --- /dev/null +++ b/src/test/resources/bvt/parser/oracle-43.txt @@ -0,0 +1,11 @@ +SELECT location_id, department_name "Department", + TO_CHAR(NULL) "Warehouse" FROM departments + UNION + SELECT location_id, TO_CHAR(NULL) "Department", warehouse_name + FROM warehouses; +--------------------------- +SELECT location_id, department_name AS "Department", TO_CHAR(NULL) AS "Warehouse" +FROM departments +UNION +SELECT location_id, TO_CHAR(NULL) AS "Department", warehouse_name +FROM warehouses; \ No newline at end of file diff --git a/src/test/resources/bvt/parser/oracle-44.txt b/src/test/resources/bvt/parser/oracle-44.txt new file mode 100644 index 0000000000..903ac2308c --- /dev/null +++ b/src/test/resources/bvt/parser/oracle-44.txt @@ -0,0 +1,11 @@ +SELECT location_id FROM locations +UNION ALL +SELECT location_id FROM departments +ORDER BY location_id; +--------------------------- +SELECT location_id +FROM locations +UNION ALL +SELECT location_id +FROM departments +ORDER BY location_id; \ No newline at end of file diff --git a/src/test/resources/bvt/parser/oracle-45.txt b/src/test/resources/bvt/parser/oracle-45.txt new file mode 100644 index 0000000000..efafa08499 --- /dev/null +++ b/src/test/resources/bvt/parser/oracle-45.txt @@ -0,0 +1,11 @@ +SELECT product_id FROM inventories +MINUS +SELECT product_id FROM order_items +ORDER BY product_id; +--------------------------- +SELECT product_id +FROM inventories +MINUS +SELECT product_id +FROM order_items +ORDER BY product_id; \ No newline at end of file diff --git a/src/test/resources/bvt/parser/oracle-46.txt b/src/test/resources/bvt/parser/oracle-46.txt new file mode 100644 index 0000000000..32da8fddbb --- /dev/null +++ b/src/test/resources/bvt/parser/oracle-46.txt @@ -0,0 +1,7 @@ +SELECT employee_id, manager_id + FROM employees + WHERE employees.manager_id(+) = employees.employee_id; +--------------------------- +SELECT employee_id, manager_id +FROM employees +WHERE manager_id(+) = employees.employee_id; \ No newline at end of file