From 1f57c0f2053293c6cb9a8d98ba06f321c1a34fa3 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 15 Oct 2011 01:33:20 +0000 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=B5=8B=E8=AF=95=E5=B9=B6?= =?UTF-8?q?=E4=B8=94=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@965 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../alibaba/druid/pool/ha/HADataSource.java | 9 +++ .../sql/ast/expr/SQLTimeLiteralExpr.java | 63 ---------------- .../sql/ast/expr/SQLTimeLiteralValue.java | 68 ----------------- .../ast/expr/SQLTimeZoneIntervalValue.java | 58 --------------- .../sql/ast/expr/SQLTimestampLiteralExpr.java | 73 ------------------- .../druid/sql/visitor/SQLASTVisitor.java | 10 --- .../sql/visitor/SQLASTVisitorAdapter.java | 16 ---- .../druid/bvt/sql/oracle/CursorTest.java | 2 +- .../druid/bvt/sql/oracle/OracleAnyTest.java | 2 +- .../bvt/sql/oracle/OracleEXTRACTTest.java | 2 +- .../sql/oracle/OracleFlashbackQueryTest.java | 2 +- .../sql/oracle/OracleFlashbackQueryTest2.java | 2 +- .../sql/oracle/OracleFlashbackQueryTest3.java | 2 +- .../bvt/sql/oracle/OracleIntervalTest.java | 14 ++-- .../bvt/sql/oracle/OracleIsASetTest.java | 2 +- .../bvt/sql/oracle/OracleIsEmptyTest.java | 2 +- .../bvt/sql/oracle/OracleIsLiteralTest.java | 28 +++++++ .../sql/oracle/OracleNumberLiteralTest.java | 4 +- .../oracle/OracleSQLParserResourceTest.java | 2 +- .../druid/bvt/sql/oracle/OracleTest2.java | 2 +- .../com/alibaba/druid/sql/test/TestUtils.java | 18 ++++- 21 files changed, 73 insertions(+), 308 deletions(-) delete mode 100644 src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeLiteralExpr.java delete mode 100644 src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeLiteralValue.java delete mode 100644 src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeZoneIntervalValue.java delete mode 100644 src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimestampLiteralExpr.java create mode 100644 src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsLiteralTest.java diff --git a/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java b/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java index 1c5ba011aa..de60849395 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java +++ b/src/main/java/com/alibaba/druid/pool/ha/HADataSource.java @@ -19,6 +19,7 @@ public class HADataSource extends MultiDataSource implements DataSource { private final static Log LOG = LogFactory.getLog(HADataSource.class); + protected DruidDataSource master; protected ArrayList dataSources = new ArrayList(); protected final List notAvailableDatasources = new CopyOnWriteArrayList(); @@ -28,6 +29,14 @@ public class HADataSource extends MultiDataSource implements DataSource { } + public DruidDataSource getMaster() { + return master; + } + + public void setMaster(DruidDataSource master) { + this.master = master; + } + public List getDataSources() { return Collections.unmodifiableList(dataSources); } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeLiteralExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeLiteralExpr.java deleted file mode 100644 index 8690e1e716..0000000000 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeLiteralExpr.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.ast.expr; - -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -public class SQLTimeLiteralExpr extends SQLLiteralExpr { - - private static final long serialVersionUID = 1L; - - private SQLTimeLiteralValue time; - private SQLTimeZoneIntervalValue timeZone; - - public SQLTimeLiteralExpr(){ - - } - - public SQLTimeLiteralValue getTime() { - return time; - } - - public void setTime(SQLTimeLiteralValue time) { - this.time = time; - } - - public SQLTimeZoneIntervalValue getTimeZone() { - return timeZone; - } - - public void setTimeZone(SQLTimeZoneIntervalValue timeZone) { - this.timeZone = timeZone; - } - - public void output(StringBuffer buf) { - buf.append("TIME'"); - this.time.output(buf); - if (timeZone != null) { - timeZone.output(buf); - } - buf.append("'"); - } - - @Override - protected void accept0(SQLASTVisitor visitor) { - visitor.visit(this); - - visitor.endVisit(this); - } - -} diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeLiteralValue.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeLiteralValue.java deleted file mode 100644 index fb955282d4..0000000000 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeLiteralValue.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.ast.expr; - -public class SQLTimeLiteralValue { - - private int hours; - private int minutes; - private int seconds; - private int secondsFraction; - - public int getHours() { - return hours; - } - - public void setHours(int hours) { - this.hours = hours; - } - - public int getMinutes() { - return minutes; - } - - public void setMinutes(int minutes) { - this.minutes = minutes; - } - - public int getSeconds() { - return seconds; - } - - public void setSeconds(int seconds) { - this.seconds = seconds; - } - - public int getSecondsFraction() { - return secondsFraction; - } - - public void setSecondsFraction(int secondsFraction) { - this.secondsFraction = secondsFraction; - } - - public void output(StringBuffer buf) { - buf.append(hours); - buf.append(':'); - buf.append(minutes); - buf.append(':'); - buf.append(seconds); - if (secondsFraction > 0) { - buf.append('.'); - buf.append(secondsFraction); - } - } -} diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeZoneIntervalValue.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeZoneIntervalValue.java deleted file mode 100644 index dc79dbd51a..0000000000 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimeZoneIntervalValue.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.ast.expr; - -public class SQLTimeZoneIntervalValue { - - private SQLUnaryOperator sign = SQLUnaryOperator.Plus; - private int hours; - private int minutes; - - public SQLUnaryOperator getSign() { - return sign; - } - - public void setSign(SQLUnaryOperator sign) { - this.sign = sign; - } - - public int getHours() { - return hours; - } - - public void setHours(int hours) { - this.hours = hours; - } - - public int getMinutes() { - return minutes; - } - - public void setMinutes(int minutes) { - this.minutes = minutes; - } - - public void output(StringBuffer buf) { - if (sign == SQLUnaryOperator.Plus) { - buf.append('+'); - } else { - buf.append('-'); - } - buf.append(hours); - buf.append(':'); - buf.append(minutes); - } -} diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimestampLiteralExpr.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimestampLiteralExpr.java deleted file mode 100644 index f45dbd6b8d..0000000000 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLTimestampLiteralExpr.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 1999-2011 Alibaba Group Holding Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.alibaba.druid.sql.ast.expr; - -import com.alibaba.druid.sql.visitor.SQLASTVisitor; - -public class SQLTimestampLiteralExpr extends SQLLiteralExpr { - - private static final long serialVersionUID = 1L; - - private SQLDateLiteralValue dateValue; - private SQLTimeLiteralValue timeValue; - private SQLTimeZoneIntervalValue timeZoneValue; - - public SQLTimestampLiteralExpr(){ - - } - - public SQLDateLiteralValue getDateValue() { - return dateValue; - } - - public void setDateValue(SQLDateLiteralValue dateValue) { - this.dateValue = dateValue; - } - - public SQLTimeLiteralValue getTimeValue() { - return timeValue; - } - - public void setTimeValue(SQLTimeLiteralValue timeValue) { - this.timeValue = timeValue; - } - - public SQLTimeZoneIntervalValue getTimeZoneValue() { - return timeZoneValue; - } - - public void setTimeZoneValue(SQLTimeZoneIntervalValue timeZoneValue) { - this.timeZoneValue = timeZoneValue; - } - - public void output(StringBuffer buf) { - buf.append("TIMESTAMP'"); - this.dateValue.output(buf); - buf.append(' '); - this.timeValue.output(buf); - if (timeZoneValue != null) { - timeZoneValue.output(buf); - } - buf.append("'"); - } - - @Override - protected void accept0(SQLASTVisitor visitor) { - visitor.visit(this); - visitor.endVisit(this); - } - -} diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java index 5895dc6244..15ee67f6af 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitor.java @@ -47,8 +47,6 @@ import com.alibaba.druid.sql.ast.expr.SQLNumberExpr; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.ast.expr.SQLQueryExpr; import com.alibaba.druid.sql.ast.expr.SQLSomeExpr; -import com.alibaba.druid.sql.ast.expr.SQLTimeLiteralExpr; -import com.alibaba.druid.sql.ast.expr.SQLTimestampLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr; import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr; import com.alibaba.druid.sql.ast.statement.NotNullConstraint; @@ -194,14 +192,6 @@ public interface SQLASTVisitor { void endVisit(SQLDateLiteralExpr x); - boolean visit(SQLTimeLiteralExpr x); - - void endVisit(SQLTimeLiteralExpr x); - - boolean visit(SQLTimestampLiteralExpr x); - - void endVisit(SQLTimestampLiteralExpr x); - boolean visit(SQLSelect x); void endVisit(SQLSelect select); diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java index 05490a028c..225c5aa842 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLASTVisitorAdapter.java @@ -47,8 +47,6 @@ import com.alibaba.druid.sql.ast.expr.SQLNumberExpr; import com.alibaba.druid.sql.ast.expr.SQLPropertyExpr; import com.alibaba.druid.sql.ast.expr.SQLQueryExpr; import com.alibaba.druid.sql.ast.expr.SQLSomeExpr; -import com.alibaba.druid.sql.ast.expr.SQLTimeLiteralExpr; -import com.alibaba.druid.sql.ast.expr.SQLTimestampLiteralExpr; import com.alibaba.druid.sql.ast.expr.SQLUnaryExpr; import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr; import com.alibaba.druid.sql.ast.statement.NotNullConstraint; @@ -267,20 +265,6 @@ public class SQLASTVisitorAdapter implements SQLASTVisitor { public void endVisit(SQLDateLiteralExpr x) { } - public boolean visit(SQLTimeLiteralExpr x) { - return true; - } - - public void endVisit(SQLTimeLiteralExpr x) { - } - - public boolean visit(SQLTimestampLiteralExpr x) { - return true; - } - - public void endVisit(SQLTimestampLiteralExpr x) { - } - public boolean visit(SQLSelect x) { return true; } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/CursorTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/CursorTest.java index 4c924c63c7..f08e27b70a 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/CursorTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/CursorTest.java @@ -16,7 +16,7 @@ public class CursorTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT department_name, CURSOR(SELECT salary, commission_pct\n" + "\tFROM employees e\n" + "\tWHERE e.department_id = d.department_id)\n" diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleAnyTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleAnyTest.java index 892a0f0545..b03653a23b 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleAnyTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleAnyTest.java @@ -23,7 +23,7 @@ public class OracleAnyTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals(expect, text); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleEXTRACTTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleEXTRACTTest.java index fae17e8440..d13d5f2efc 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleEXTRACTTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleEXTRACTTest.java @@ -19,7 +19,7 @@ public class OracleEXTRACTTest extends TestCase { SQLSelectStatement stmt = (SQLSelectStatement) parser .parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals(expect, text); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest.java index eb6f7456fc..541626f615 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest.java @@ -20,7 +20,7 @@ public class OracleFlashbackQueryTest extends TestCase { SQLSelectStatement stmt = (SQLSelectStatement) parser .parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals(expect, text); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest2.java index 96e6acd674..d2d6413a39 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest2.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest2.java @@ -22,7 +22,7 @@ public class OracleFlashbackQueryTest2 extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals(expect, text); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest3.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest3.java index 8697b2716e..5c8c8d2b56 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest3.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleFlashbackQueryTest3.java @@ -23,7 +23,7 @@ public class OracleFlashbackQueryTest3 extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals(expect, text); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIntervalTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIntervalTest.java index d90c442f32..172e5a55d7 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIntervalTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIntervalTest.java @@ -15,7 +15,7 @@ public class OracleIntervalTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT INTERVAL '123-2' YEAR(3) TO MONTH\nFROM DUAL;\n", text); @@ -28,7 +28,7 @@ public class OracleIntervalTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT INTERVAL '123' YEAR(3)\nFROM DUAL;\n", text); @@ -41,7 +41,7 @@ public class OracleIntervalTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT INTERVAL '5-3' YEAR TO MONTH + INTERVAL '20' MONTH\nFROM DUAL;\n", text); @@ -54,7 +54,7 @@ public class OracleIntervalTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT INTERVAL '6-11' YEAR TO MONTH\nFROM DUAL;\n", text); @@ -67,7 +67,7 @@ public class OracleIntervalTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT INTERVAL '4 5:12:10.222' DAY TO SECOND(3)\nFROM DUAL;\n", text); @@ -80,7 +80,7 @@ public class OracleIntervalTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT INTERVAL '30.12345' SECOND(2, 4)\nFROM DUAL;\n", text); @@ -93,7 +93,7 @@ public class OracleIntervalTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT (SYSTIMESTAMP - order_date) DAY(9) TO SECOND\n" + "FROM orders\n" + "WHERE order_id = 2458;\n", text); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsASetTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsASetTest.java index 95f3dba793..fd9cb946fd 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsASetTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsASetTest.java @@ -15,7 +15,7 @@ public class OracleIsASetTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT customer_id, cust_address_ntab\n" + "FROM customers_demo\n" + "WHERE cust_address_ntab IS A SET;\n", text); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsEmptyTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsEmptyTest.java index f642276f77..4cb866b8ec 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsEmptyTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsEmptyTest.java @@ -18,7 +18,7 @@ public class OracleIsEmptyTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals(expect, text); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsLiteralTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsLiteralTest.java new file mode 100644 index 0000000000..6227627968 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleIsLiteralTest.java @@ -0,0 +1,28 @@ +package com.alibaba.druid.bvt.sql.oracle; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; +import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; +import com.alibaba.druid.sql.parser.SQLStatementParser; +import com.alibaba.druid.sql.test.TestUtils; + +public class OracleIsLiteralTest extends TestCase { + + public void test_oracle() throws Exception { + String sql = "SELECT FROM_TZ(TIMESTAMP '2007-11-20 08:00:00', '3:00') FROM DUAL;"; + + String expect = "SELECT FROM_TZ(TIMESTAMP '2007-11-20 08:00:00', '3:00')\n" + "FROM DUAL;\n"; + + OracleStatementParser parser = new OracleStatementParser(sql); + SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); + + String text = TestUtils.outputOracle(stmt); + + Assert.assertEquals(expect, text); + + System.out.println(text); + } + +} diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleNumberLiteralTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleNumberLiteralTest.java index 1fcc8e5867..399336a973 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleNumberLiteralTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleNumberLiteralTest.java @@ -15,7 +15,7 @@ public class OracleNumberLiteralTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT 7, 255, 0.5, 6.34, 0.025\n\t, 6.34F, 0.5D, -1.0D\nFROM DUAL;\n", text); @@ -28,7 +28,7 @@ public class OracleNumberLiteralTest extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals("SELECT BINARY_FLOAT_INFINITY\nFROM DUAL;\n", text); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSQLParserResourceTest.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSQLParserResourceTest.java index 2ec32f3635..988a1858a4 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSQLParserResourceTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleSQLParserResourceTest.java @@ -40,7 +40,7 @@ public class OracleSQLParserResourceTest extends TestCase { Assert.assertEquals(1, statementList.size()); - String text = TestUtils.output(statementList); + String text = TestUtils.outputOracle(statementList); System.out.println(text); Assert.assertEquals(expect, text.trim()); diff --git a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleTest2.java b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleTest2.java index 13b96ef416..8c22895ca2 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleTest2.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/oracle/OracleTest2.java @@ -17,7 +17,7 @@ public class OracleTest2 extends TestCase { OracleStatementParser parser = new OracleStatementParser(sql); SQLSelectStatement stmt = (SQLSelectStatement) parser.parseStatementList().get(0); - String text = TestUtils.output(stmt); + String text = TestUtils.outputOracle(stmt); Assert.assertEquals(expect, text); diff --git a/src/test/java/com/alibaba/druid/sql/test/TestUtils.java b/src/test/java/com/alibaba/druid/sql/test/TestUtils.java index a1a9565306..3a1a3ab0da 100644 --- a/src/test/java/com/alibaba/druid/sql/test/TestUtils.java +++ b/src/test/java/com/alibaba/druid/sql/test/TestUtils.java @@ -5,11 +5,12 @@ import java.util.List; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.dialect.oracle.visitor.OracleOutputVisitor; +import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; public class TestUtils { - public static String output(List stmtList) { + public static String outputOracle(List stmtList) { StringBuilder out = new StringBuilder(); OracleOutputVisitor visitor = new OracleOutputVisitor(out); @@ -20,7 +21,22 @@ public class TestUtils { return out.toString(); } + public static String outputOracle(SQLStatement... stmtList) { + return outputOracle(Arrays.asList(stmtList)); + } + public static String output(SQLStatement... stmtList) { return output(Arrays.asList(stmtList)); } + + public static String output(List stmtList) { + StringBuilder out = new StringBuilder(); + SQLASTOutputVisitor visitor = new SQLASTOutputVisitor(out); + + for (SQLStatement stmt : stmtList) { + stmt.accept(visitor); + } + + return out.toString(); + } }