diff --git a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/visitor/OracleOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/visitor/OracleOutputVisitor.java index 14a7039201..fb7ee1fe15 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/visitor/OracleOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/oracle/ast/visitor/OracleOutputVisitor.java @@ -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) { } - } diff --git a/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java b/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java index ee71020414..20c68e7577 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java +++ b/src/main/java/com/alibaba/druid/sql/parser/SQLParser.java @@ -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; } diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java index f06bc3f12a..e26a0d8d25 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTOutputVisitor.java @@ -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); 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 bf5b6897c1..6e02001049 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,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"); } diff --git a/src/test/resources/bvt/parser/mysql-5.txt b/src/test/resources/bvt/parser/mysql-5.txt index 9cebcdf1be..afdaf44e70 100644 --- a/src/test/resources/bvt/parser/mysql-5.txt +++ b/src/test/resources/bvt/parser/mysql-5.txt @@ -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 \ No newline at end of file diff --git a/src/test/resources/bvt/parser/mysql-6.txt b/src/test/resources/bvt/parser/mysql-6.txt index 09607f80f9..a3e40e062d 100644 --- a/src/test/resources/bvt/parser/mysql-6.txt +++ b/src/test/resources/bvt/parser/mysql-6.txt @@ -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 = ?) diff --git a/src/test/resources/bvt/parser/mysql-8.txt b/src/test/resources/bvt/parser/mysql-8.txt index 0af1c567fe..2f92832e7c 100644 --- a/src/test/resources/bvt/parser/mysql-8.txt +++ b/src/test/resources/bvt/parser/mysql-8.txt @@ -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 diff --git a/src/test/resources/bvt/parser/oracle-13.txt b/src/test/resources/bvt/parser/oracle-13.txt index b173206850..aa6b6fa59d 100644 --- a/src/test/resources/bvt/parser/oracle-13.txt +++ b/src/test/resources/bvt/parser/oracle-13.txt @@ -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; diff --git a/src/test/resources/bvt/parser/oracle-14.txt b/src/test/resources/bvt/parser/oracle-14.txt index 6b264105a4..dc60fb2c62 100644 --- a/src/test/resources/bvt/parser/oracle-14.txt +++ b/src/test/resources/bvt/parser/oracle-14.txt @@ -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)); diff --git a/src/test/resources/bvt/parser/oracle-15.txt b/src/test/resources/bvt/parser/oracle-15.txt index 06f0ebdaf4..82e03db175 100644 --- a/src/test/resources/bvt/parser/oracle-15.txt +++ b/src/test/resources/bvt/parser/oracle-15.txt @@ -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 = ? diff --git a/src/test/resources/bvt/parser/oracle-17.txt b/src/test/resources/bvt/parser/oracle-17.txt index b2f1b3cf18..49042986e9 100644 --- a/src/test/resources/bvt/parser/oracle-17.txt +++ b/src/test/resources/bvt/parser/oracle-17.txt @@ -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 > ? diff --git a/src/test/resources/bvt/parser/oracle-18.txt b/src/test/resources/bvt/parser/oracle-18.txt index 7b50e14779..14bad279fd 100644 --- a/src/test/resources/bvt/parser/oracle-18.txt +++ b/src/test/resources/bvt/parser/oracle-18.txt @@ -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; \ No newline at end of file diff --git a/src/test/resources/bvt/parser/oracle-20.txt b/src/test/resources/bvt/parser/oracle-20.txt index 30c88acbfd..cd47655b6f 100644 --- a/src/test/resources/bvt/parser/oracle-20.txt +++ b/src/test/resources/bvt/parser/oracle-20.txt @@ -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; diff --git a/src/test/resources/bvt/parser/oracle-21.txt b/src/test/resources/bvt/parser/oracle-21.txt index 56642b90e4..55489ceb26 100644 --- a/src/test/resources/bvt/parser/oracle-21.txt +++ b/src/test/resources/bvt/parser/oracle-21.txt @@ -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 diff --git a/src/test/resources/bvt/parser/oracle-22.txt b/src/test/resources/bvt/parser/oracle-22.txt index 6d4be18b18..920fe82d29 100644 --- a/src/test/resources/bvt/parser/oracle-22.txt +++ b/src/test/resources/bvt/parser/oracle-22.txt @@ -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 < ?) diff --git a/src/test/resources/bvt/parser/oracle-23.txt b/src/test/resources/bvt/parser/oracle-23.txt index b6bcffc09d..753e41a83b 100644 --- a/src/test/resources/bvt/parser/oracle-23.txt +++ b/src/test/resources/bvt/parser/oracle-23.txt @@ -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 < ?; \ No newline at end of file diff --git a/src/test/resources/bvt/parser/oracle-24.txt b/src/test/resources/bvt/parser/oracle-24.txt index b45d6854a4..62b61b0342 100644 --- a/src/test/resources/bvt/parser/oracle-24.txt +++ b/src/test/resources/bvt/parser/oracle-24.txt @@ -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; diff --git a/src/test/resources/bvt/parser/oracle-25.txt b/src/test/resources/bvt/parser/oracle-25.txt index b2cb802607..ebbf8e01ee 100644 --- a/src/test/resources/bvt/parser/oracle-25.txt +++ b/src/test/resources/bvt/parser/oracle-25.txt @@ -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_ diff --git a/src/test/resources/bvt/parser/oracle-28.txt b/src/test/resources/bvt/parser/oracle-28.txt index cdf7e5218f..0a5b354cb4 100644 --- a/src/test/resources/bvt/parser/oracle-28.txt +++ b/src/test/resources/bvt/parser/oracle-28.txt @@ -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'; diff --git a/src/test/resources/bvt/parser/oracle-29.txt b/src/test/resources/bvt/parser/oracle-29.txt index a079a9ccf9..499acd686f 100644 --- a/src/test/resources/bvt/parser/oracle-29.txt +++ b/src/test/resources/bvt/parser/oracle-29.txt @@ -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 diff --git a/src/test/resources/bvt/parser/oracle-30.txt b/src/test/resources/bvt/parser/oracle-30.txt index 53e58b7a32..50b99a7653 100644 --- a/src/test/resources/bvt/parser/oracle-30.txt +++ b/src/test/resources/bvt/parser/oracle-30.txt @@ -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 diff --git a/src/test/resources/bvt/parser/oracle-34.txt b/src/test/resources/bvt/parser/oracle-34.txt index 28973870b0..0a57964bb1 100644 --- a/src/test/resources/bvt/parser/oracle-34.txt +++ b/src/test/resources/bvt/parser/oracle-34.txt @@ -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; diff --git a/src/test/resources/bvt/parser/oracle-35.txt b/src/test/resources/bvt/parser/oracle-35.txt new file mode 100644 index 0000000000..95bb01cc1e --- /dev/null +++ b/src/test/resources/bvt/parser/oracle-35.txt @@ -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; diff --git a/src/test/resources/bvt/parser/oracle-5.txt b/src/test/resources/bvt/parser/oracle-5.txt index e2d247acb5..51cd4438c8 100644 --- a/src/test/resources/bvt/parser/oracle-5.txt +++ b/src/test/resources/bvt/parser/oracle-5.txt @@ -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; \ No newline at end of file