修正测试

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@169 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-05-21 02:53:42 +00:00
parent e707d5a0c9
commit 6e6111b147
24 changed files with 105 additions and 63 deletions
@@ -26,6 +26,7 @@ import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.ast.expr.SQLAllColumnExpr;
import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr;
import com.alibaba.druid.sql.ast.expr.SQLObjectCreateExpr;
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource.JoinType;
import com.alibaba.druid.sql.ast.statement.SQLSelect;
import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock;
import com.alibaba.druid.sql.dialect.oracle.ast.OracleDataTypeInterval;
@@ -556,8 +557,14 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
public boolean visit(OracleSelectJoin x) {
x.getLeft().accept(this);
print(" ");
print(OracleSelectJoin.JoinType.toString(x.getJoinType()));
if (x.getJoinType() == JoinType.COMMA) {
print(",");
} else {
print(" ");
print(JoinType.toString(x.getJoinType()));
}
print(" ");
x.getRight().accept(this);
@@ -1621,7 +1628,7 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
println();
x.getSearchClause().accept(this);
}
if (x.getCycleClause() != null) {
println();
x.getCycleClause().accept(this);
@@ -1684,6 +1691,5 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
public void endVisit(CycleClause x) {
}
}
@@ -65,7 +65,16 @@ public class SQLParser {
return alias;
}
throw new ParserException("Error", 0, 0);
switch (lexer.token()) {
case KEY:
alias = lexer.token().name();
lexer.nextToken();
return alias;
default:
break;
}
throw new ParserException("Error : " + lexer.token());
}
if (lexer.token() == Token.LITERAL_ALIAS) {
@@ -78,6 +87,16 @@ public class SQLParser {
alias = "'" + lexer.stringVal() + "'";
lexer.nextToken();
}
switch (lexer.token()) {
case KEY:
alias = lexer.token().name();
lexer.nextToken();
return alias;
default:
break;
}
return alias;
}
@@ -63,6 +63,7 @@ import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement;
import com.alibaba.druid.sql.ast.statement.SQLInsertStatement.ValuesClause;
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource;
import com.alibaba.druid.sql.ast.statement.SQLJoinTableSource.JoinType;
import com.alibaba.druid.sql.ast.statement.SQLSelect;
import com.alibaba.druid.sql.ast.statement.SQLSelectGroupByClause;
import com.alibaba.druid.sql.ast.statement.SQLSelectItem;
@@ -76,7 +77,6 @@ import com.alibaba.druid.sql.ast.statement.SQLUnionQuery;
import com.alibaba.druid.sql.ast.statement.SQLUniqueConstraint;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleSelectJoin;
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.SQLSelectSubqueryQuery;
public class SQLASTOutputVisitor extends SQLASTVisitorAdapter {
@@ -144,7 +144,7 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter {
if (i % 5 == 0) {
println();
}
print(", ");
}
@@ -748,8 +748,12 @@ public class SQLASTOutputVisitor extends SQLASTVisitorAdapter {
@Override
public boolean visit(SQLJoinTableSource x) {
x.getLeft().accept(this);
print(" ");
print(OracleSelectJoin.JoinType.toString(x.getJoinType()));
if (x.getJoinType() == JoinType.COMMA) {
print(",");
} else {
print(" ");
print(JoinType.toString(x.getJoinType()));
}
print(" ");
x.getRight().accept(this);
@@ -16,41 +16,42 @@ 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-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");
}
+1 -1
View File
@@ -9,6 +9,6 @@ ORDER BY e.word_alias,a.createtime DESC
---------------------------
SELECT Count(*)
FROM q_matchrelation a , q_offerdetail b , q_keyword e , Q_ADCREATIVE f
FROM q_matchrelation a, q_offerdetail b, q_keyword e, Q_ADCREATIVE f
WHERE a.offerid = b.offerid AND a.keywordid = e.keywordid AND a.offerid = f.offerid AND a.issuspect = '1'
ORDER BY e.word_alias, a.createtime DESC
+1 -1
View File
@@ -41,5 +41,5 @@ SELECT count(*)
FROM (SELECT a.activity_offer_id AS adResourceId, a.title AS adResourceName, a.b2boffer_url AS adResourceURL, a.custid, b.memberid
, c.position_name AS positionName, c.charge_setting AS feeRegulation, a.priority_weight AS priorityWeight, a.audit_state AS adResourceState, 0 AS adResourceType
, a.gmt_create, a.refuse_remark
FROM q_activity_offer_enroll a , q_custinfo b , q_activity_position c
FROM q_activity_offer_enroll a, q_custinfo b, q_activity_position c
WHERE a.custid = b.custid AND a.activity_position_id = c.activity_position_id AND c.activity_id = ?)
+1 -1
View File
@@ -11,7 +11,7 @@ WHERE a.examine_id = b.examine_id
---------------------------
SELECT a.examine_id AS examineId, a.examine_name AS examineName, a.level_limit AS levelLimit
FROM c_examinepaper a , (SELECT examine_id
FROM c_examinepaper a, (SELECT examine_id
FROM c_examinepaper
WHERE level_limit = ? AND status = 1
MINUS
+1 -1
View File
@@ -8,7 +8,7 @@ SELECT DECODE(GROUPING(department_name), 1, 'All Departments',
ORDER BY department_name, job_id;
---------------------------
SELECT DECODE(GROUPING(department_name), 1, 'All Departments', department_name) AS department_name, DECODE(GROUPING(job_id), 1, 'All Jobs', job_id) AS job_id, COUNT(*) AS "Total Empl", AVG(salary) * 12 AS "Average Sal"
FROM employees e , departments d
FROM employees e, departments d
WHERE d.department_id = e.department_id
GROUP BY CUBE(department_name, job_id)
ORDER BY department_name, job_id;
+1 -1
View File
@@ -14,7 +14,7 @@ SELECT channel_desc, calendar_month_desc, co.country_id,
(calendar_month_desc, co.country_id) );
---------------------------
SELECT channel_desc, calendar_month_desc, co.country_id, TO_CHAR(sum(amount_sold), '9,999,999,999') AS SALES$
FROM sales , customers , times , channels , countries co
FROM sales, customers, times, channels, countries co
WHERE sales.time_id = times.time_id AND sales.cust_id = customers.cust_id AND sales.channel_id = channels.channel_id AND customers.country_id = co.country_id AND (channels.channel_desc IN ('Direct Sales', 'Internet') AND (times.calendar_month_desc IN ('2000-09', '2000-10') AND co.country_iso_code IN ('UK', 'US')))
GROUP BY GROUPING SETS ((channel_desc, calendar_month_desc, co.country_id), (channel_desc, co.country_id), (calendar_month_desc, co.country_id));
+3 -3
View File
@@ -25,11 +25,11 @@ FROM (SELECT A.*, rownum AS cnt
, C.CONTNAME, C.CONTPHONECITYCODE, C.CONTPHONE, C.CONTMOBPHONE, C.CONTFAXCITYCODE
, C.CONTFAX, C.CONTEMAIL, C.CUSTAREA AS AREANAME, C.CUSTADDR, C.ORGINDUSTRY AS ORGINDUSTRYNAME
, E.DESCRIPTION AS CUSTSTATNAME, F.DESCRIPTION AS B2BCUSTTYPENAME, NULL AS CUSTSERVICERNAME, G.DESCRIPTION AS B2BVALIDFLAGNAME, A.VALIDFLAG
FROM Q_CUSTOMERS A , Q_CUSTINFO C , (SELECT *
FROM Q_CUSTOMERS A, Q_CUSTINFO C, (SELECT *
FROM Q_DOMAINCDSTRING
WHERE DOMAINCD = 'CUSTOMERS_CUSTSTAT') E , (SELECT *
WHERE DOMAINCD = 'CUSTOMERS_CUSTSTAT') E, (SELECT *
FROM Q_DOMAINCDSTRING
WHERE DOMAINCD = 'CUSTOMERS_B2BCUSTTYPE') F , (SELECT *
WHERE DOMAINCD = 'CUSTOMERS_B2BCUSTTYPE') F, (SELECT *
FROM Q_DOMAINCDSTRING
WHERE DOMAINCD = 'CUSTOMERS_B2BVALIDFLAG') G
WHERE A.CUSTID = C.CUSTID AND A.CUSTSTAT = CODE(+) AND A.B2BCUSTTYPE = CODE(+) AND A.b2bValidFlag = CODE(+) AND A.MEMBERID = ?
+1 -1
View File
@@ -30,7 +30,7 @@ FROM (SELECT custid, memberid, createtime, planid, auditstate
FROM (SELECT p.custid, p.memberid, p.createtime, p.planid, p.auditstate
, p.createid, p.custappdate, p.modifytime, p.gmtcreate, p.executeState
, c.custname, row_number() OVER ( ORDER BY p.memberid ASC, p.createtime DESC) AS cnt, p.planbatchid
FROM q_plan p , q_custinfo c
FROM q_plan p, q_custinfo c
WHERE p.custid = c.custid AND p.applytype = 0 AND p.createtime BETWEEN to_date(?, 'yyyy-mm-dd') AND to_date(?, 'yyyy-mm-dd hh24:mi:ss') AND (p.auditstate = ? AND p.executestate = 1) AND auditstate != 3 AND p.memberid IN (?)) t
WHERE t.cnt < ?) k
WHERE k.cnt > ?
+1 -1
View File
@@ -9,6 +9,6 @@ ORDER BY e.word_alias,a.createtime DESC
---------------------------
SELECT /*+use_hash(a b e) index(e)*/ Count(*)
FROM q_matchrelation a , q_offerdetail b , q_keyword e , Q_ADCREATIVE f
FROM q_matchrelation a, q_offerdetail b, q_keyword e, Q_ADCREATIVE f
WHERE a.offerid = b.offerid AND a.keywordid = e.keywordid AND a.offerid = f.offerid AND a.issuspect = '1'
ORDER BY e.word_alias, a.createtime DESC;
+1 -1
View File
@@ -11,6 +11,6 @@ ORDER BY RC_CLOT_TRUNK.NAME,RC_CLOT_INFO.id NULLS LAST
---------------------------
SELECT RC_CLOT_INFO_EXT.*, RC_CLOT_TRUNK.NAME AS TRUNK_NAME
FROM RC_CLOT_INFO , RC_CLOT_INFO_EXT , RC_CLOT_TRUNK
FROM RC_CLOT_INFO, RC_CLOT_INFO_EXT, RC_CLOT_TRUNK
WHERE RC_CLOT_INFO.is_deleted = 'n' AND RC_CLOT_INFO.TRUNK_ID = RC_CLOT_TRUNK.ID AND RC_CLOT_INFO.ID = RC_CLOT_INFO_EXT.CLOT_ID AND RC_CLOT_INFO_EXT.GMT_MODIFIED >= ?
ORDER BY RC_CLOT_TRUNK.NAME, RC_CLOT_INFO.id NULLS LAST;
+1 -1
View File
@@ -20,7 +20,7 @@ SELECT *
FROM (SELECT rownum AS rnm, z.*
FROM (SELECT DISTINCT tt.id AS use_less_id, tt.*
FROM (SELECT t.*, rct.parent_id, RCT.NAME AS trunk_name
FROM rc_clot_info t , rc_clot_trunk rct
FROM rc_clot_info t, rc_clot_trunk rct
WHERE t.is_deleted = 'n' AND t.trunk_id = rct.id) tt
START WITH trunk_name = 'rc.mf.Caesar'
CONNECT BY PRIOR parent_id = trunk_id
+1 -1
View File
@@ -32,7 +32,7 @@ FROM (SELECT rownum AS rnm, z.*
WHERE a.is_deleted = 'n'
UNION ALL
SELECT lower(b.role_name) || '#' || a.permission_id, 'y'
FROM app_role_permission A , app_role_base_role B
FROM app_role_permission A, app_role_base_role B
WHERE a.is_deleted = 'n' AND b.is_deleted = 'n' AND a.role_name = b.base_role_name)) c
ORDER BY c.KEY) z
WHERE rownum < ?)
+1 -1
View File
@@ -11,7 +11,7 @@ from (
---------------------------
SELECT nodeId, nodeName, taskflowName, taskflowVersion
FROM (SELECT /*+use_hash(n f) ordered*/ n.ID AS nodeId, n.name AS nodeName, f.name AS taskflowName, f.version AS taskflowVersion
FROM "HT_TASK_FLOW_NODE_WA_2" n , "HT_TASK_FLOW_WA_2" f
FROM "HT_TASK_FLOW_NODE_WA_2" n, "HT_TASK_FLOW_WA_2" f
WHERE n.owner = ? AND (n.STATUS IN (?) AND n.GMT_MODIFIED < ? AND n.IS_AUTO = 'Y' AND n.task_flow_id = f.id)
ORDER BY f.priority DESC NULLS LAST, f.gmt_create ASC)
WHERE rownum < ?;
+1 -1
View File
@@ -18,6 +18,6 @@ where xh=1
SELECT INDUSTRY_ID, sale_type, service_type, RISK_TYPE, to_char(gmt_create, 'yyyy-mm-dd hh24:mi:ss') AS gmt_create
FROM (SELECT /*+use_hash(a b c) ordered*/ b.service_type, b.RISK_TYPE, b.sale_type, b.INDUSTRY_ID, b.GMT_CREATE
, row_number() OVER (PARTITION BY (b.service_type, b.RISK_TYPE, b.sale_type, b.INDUSTRY_ID) ORDER BY b.GMT_CREATE) AS xh
FROM "HT_TASK_FLOW_WA_2" a , "HT_TASK_FLOW_BIZ_WA_2" b , "HT_TASK_FLOW_NODE_WA_2" c
FROM "HT_TASK_FLOW_WA_2" a, "HT_TASK_FLOW_BIZ_WA_2" b, "HT_TASK_FLOW_NODE_WA_2" c
WHERE a.id = b.task_flow_id AND a.id = c.task_flow_id AND c.status = 'waiting' AND c.IS_AUTO = 'N' AND a.status = 'running' AND c.name IN (?))
WHERE xh = 1;
+2 -2
View File
@@ -52,13 +52,13 @@ FROM (SELECT row_.*, rownum AS rownum_
FROM (SELECT sus.ID AS ID, sus.GMT_CREATE AS GMT_CREATE, sus.GMT_MODIFIED AS GMT_MODIFIED, sus.COMPANY_ID AS COMPANY_ID, sus.OBJECT_ID AS OBJECT_ID
, sus.OBJECT_TYPE AS OBJECT_TYPE, sus.CONFIRM_TYPE AS CONFIRM_TYPE, sus.OPERATOR AS OPERATOR, sus.FILTER_TYPE AS FILTER_TYPE, sus.MEMBER_ID AS MEMBER_ID
, sus.MEMBER_SEQ AS MEMBER_SEQ, sus.RISK_TYPE AS RISK_TYPE, 'Y' AS IS_DRAFT
FROM bops_sus_posting sus , ws_product_draft p , member m
FROM bops_sus_posting sus, ws_product_draft p, member m
WHERE 1 = 1 AND p.company_id = m.company_id AND m.login_id = ? AND (p.sale_type IN (?) AND p.id = sus.object_id)
UNION
SELECT sus.ID AS ID, sus.GMT_CREATE AS GMT_CREATE, sus.GMT_MODIFIED AS GMT_MODIFIED, sus.COMPANY_ID AS COMPANY_ID, sus.OBJECT_ID AS OBJECT_ID
, sus.OBJECT_TYPE AS OBJECT_TYPE, sus.CONFIRM_TYPE AS CONFIRM_TYPE, sus.OPERATOR AS OPERATOR, sus.FILTER_TYPE AS FILTER_TYPE, sus.MEMBER_ID AS MEMBER_ID
, sus.MEMBER_SEQ AS MEMBER_SEQ, sus.RISK_TYPE AS RISK_TYPE, 'N' AS IS_DRAFT
FROM bops_sus_posting sus , ws_product p , member m
FROM bops_sus_posting sus, ws_product p, member m
WHERE 1 = 1 AND p.company_id = m.company_id AND m.login_id = ? AND (p.sale_type IN (?) AND p.id = sus.object_id)) results)
WHERE rn = 1
ORDER BY gmt_modified DESC) row_
+1 -1
View File
@@ -10,7 +10,7 @@ OR operator = ?
---------------------------
SELECT count(*)
FROM CREDIT_CMT_APPLY , CREDIT_CMT_SHEET
FROM CREDIT_CMT_APPLY, CREDIT_CMT_SHEET
WHERE 1 = 2 OR operator = ? AND CREDIT_CMT_APPLY.GMT_CREATE >= ? AND CREDIT_CMT_APPLY.GMT_CREATE <= ? AND CREDIT_CMT_APPLY.ID = CREDIT_CMT_SHEET.cmt_apply_id AND Type = 'denounce' AND SHEET_STATUS = 'assigned_unresolved';
+1 -1
View File
@@ -29,7 +29,7 @@ WITH
UNION ALL
SELECT e.employee_id, e.last_name, e.manager_id, r.reportLevel + 1 AS reportLevel, e.salary
, e.job_id
FROM org_chart r , employees e
FROM org_chart r, employees e
WHERE r.eid = e.manager_id
)
SEARCH DEPTH FIRST BY emp_last SET order1
+1 -1
View File
@@ -30,7 +30,7 @@ WITH
UNION ALL
SELECT e.employee_id, e.last_name, e.manager_id, r.reportLevel + 1 AS reportLevel, e.hire_date
, e.job_id
FROM dup_hiredate r , employees e
FROM dup_hiredate r, employees e
WHERE r.eid = e.manager_id
)
SEARCH DEPTH FIRST BY hire_date SET order1
+1 -1
View File
@@ -6,6 +6,6 @@ SELECT last_name, job_id, departments.department_id, department_name
---------------------------
SELECT last_name, job_id, departments.department_id, department_name
FROM employees , departments
FROM employees, departments
WHERE employees.department_id = departments.department_id
ORDER BY last_name, job_id;
@@ -0,0 +1,12 @@
SELECT last_name, job_id, departments.department_id, department_name
FROM employees, departments
WHERE employees.department_id = departments.department_id
AND job_id = 'SA_MAN'
ORDER BY last_name;
---------------------------
SELECT last_name, job_id, departments.department_id, department_name
FROM employees, departments
WHERE employees.department_id = departments.department_id AND job_id = 'SA_MAN'
ORDER BY last_name;
+1 -1
View File
@@ -12,6 +12,6 @@ ORDER BY a.department_id;
SELECT a.department_id AS "Department", a.num_emp / b.total_count AS "%_Employees", a.sal_sum / b.total_sal AS "%_Salary"
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
GROUP BY department_id) a, (SELECT COUNT(*) AS total_count, SUM(salary) AS total_sal
FROM employees) b
ORDER BY a.department_id;