mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
添加测试
git-svn-id: http://code.alibabatech.com/svn/druid/trunk@141 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
@@ -350,6 +350,11 @@ public class OracleSelectParser extends SQLSelectParser {
|
||||
lexer.nextToken();
|
||||
joinType = OracleSelectJoin.JoinType.JOIN;
|
||||
}
|
||||
|
||||
if (lexer.token() == (Token.COMMA)) {
|
||||
lexer.nextToken();
|
||||
joinType = OracleSelectJoin.JoinType.COMMA;
|
||||
}
|
||||
|
||||
if (joinType != null) {
|
||||
OracleSelectJoin join = new OracleSelectJoin();
|
||||
@@ -369,7 +374,7 @@ public class OracleSelectParser extends SQLSelectParser {
|
||||
|
||||
return join;
|
||||
}
|
||||
|
||||
|
||||
return tableSource;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,51 +16,19 @@ import com.alibaba.druid.util.JdbcUtils;
|
||||
public class OracleSQLParserResourceTest extends TestCase {
|
||||
|
||||
public void test_0() throws Exception {
|
||||
InputStream is = null;
|
||||
|
||||
is = Thread.currentThread().getContextClassLoader().getResourceAsStream("bvt/parser/oracle-0.txt");
|
||||
Reader reader = new InputStreamReader(is);
|
||||
String input = JdbcUtils.read(reader);
|
||||
JdbcUtils.close(reader);
|
||||
String[] items = input.split("---------------------------");
|
||||
String sql = items[0].trim();
|
||||
String expect = items[1].trim();
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
String text = output(statementList);
|
||||
Assert.assertEquals(expect, text.trim());
|
||||
System.out.println(text);
|
||||
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");
|
||||
}
|
||||
|
||||
public void test_1() throws Exception {
|
||||
InputStream is = null;
|
||||
|
||||
is = Thread.currentThread().getContextClassLoader().getResourceAsStream("bvt/parser/oracle-0.txt");
|
||||
Reader reader = new InputStreamReader(is);
|
||||
String input = JdbcUtils.read(reader);
|
||||
JdbcUtils.close(reader);
|
||||
String[] items = input.split("---------------------------");
|
||||
String sql = items[0].trim();
|
||||
String expect = items[1].trim();
|
||||
|
||||
OracleStatementParser parser = new OracleStatementParser(sql);
|
||||
List<SQLStatement> statementList = parser.parseStatementList();
|
||||
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
String text = output(statementList);
|
||||
Assert.assertEquals(expect, text.trim());
|
||||
System.out.println(text);
|
||||
}
|
||||
|
||||
public void test_2() throws Exception {
|
||||
public void exec_test(String resource) throws Exception {
|
||||
InputStream is = null;
|
||||
|
||||
is = Thread.currentThread().getContextClassLoader().getResourceAsStream("bvt/parser/oracle-0.txt");
|
||||
is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource);
|
||||
Reader reader = new InputStreamReader(is);
|
||||
String input = JdbcUtils.read(reader);
|
||||
JdbcUtils.close(reader);
|
||||
@@ -74,8 +42,9 @@ public class OracleSQLParserResourceTest extends TestCase {
|
||||
Assert.assertEquals(1, statementList.size());
|
||||
|
||||
String text = output(statementList);
|
||||
Assert.assertEquals(expect, text.trim());
|
||||
System.out.println(text);
|
||||
Assert.assertEquals(expect, text.trim());
|
||||
|
||||
}
|
||||
|
||||
private String output(List<SQLStatement> stmtList) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
SELECT employee_id FROM (SELECT * FROM employees)
|
||||
FOR UPDATE OF employee_id;
|
||||
SELECT employee_id FROM (SELECT employee_id+1 AS employee_id FROM employees)
|
||||
FOR UPDATE;
|
||||
---------------------------
|
||||
SELECT employee_id
|
||||
FROM (SELECT *
|
||||
FROM (SELECT employee_id + 1 AS employee_id
|
||||
FROM employees)
|
||||
FOR UPDATE(employee_id);
|
||||
FOR UPDATE;
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
SELECT employee_id FROM (SELECT employee_id+1 AS employee_id FROM employees)
|
||||
FOR UPDATE;
|
||||
---------------------------
|
||||
SELECT employee_id
|
||||
FROM (SELECT employee_id + 1 AS employee_id
|
||||
FROM employees)
|
||||
FOR UPDATE;
|
||||
@@ -0,0 +1,9 @@
|
||||
SELECT *
|
||||
FROM employees
|
||||
WHERE department_id = 30
|
||||
ORDER BY last_name;
|
||||
---------------------------
|
||||
SELECT *
|
||||
FROM employees
|
||||
WHERE department_id = 30
|
||||
ORDER BY last_name;
|
||||
@@ -0,0 +1,17 @@
|
||||
SELECT a.department_id "Department",
|
||||
a.num_emp/b.total_count "%_Employees",
|
||||
a.sal_sum/b.total_sal "%_Salary"
|
||||
FROM
|
||||
(SELECT department_id, COUNT(*) num_emp, SUM(salary) sal_sum
|
||||
FROM employees
|
||||
GROUP BY department_id) a,
|
||||
(SELECT COUNT(*) total_count, SUM(salary) total_sal
|
||||
FROM employees) b
|
||||
ORDER BY a.department_id;
|
||||
---------------------------
|
||||
SELECT a.department_id AS 'department_id', a.num_emp / b.total_count AS 'total_count', a.sal_sum / b.total_sal AS 'total_sal'
|
||||
FROM (SELECT department_id, COUNT(*) AS 'num_emp', SUM(salary) AS 'sal_sum'
|
||||
FROM employees
|
||||
GROUP BY department_id) 'a' , (SELECT COUNT(*) AS 'total_count', SUM(salary) AS 'total_sal'
|
||||
FROM employees) 'b'
|
||||
ORDER BY a.department_id;
|
||||
Reference in New Issue
Block a user