From 7e713861e773df7a68b3e82609fb008a5c44364d Mon Sep 17 00:00:00 2001 From: wenshao Date: Tue, 20 Sep 2011 10:08:22 +0000 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85Oracle=E6=B5=8B=E8=AF=95?= 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@885 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- pom.xml | 2 +- .../OracleOutputVisitorTest_delete.java | 40 ++++++++++++++++++ .../OracleOutputVisitorTest_forupdate.java | 40 ++++++++++++++++++ .../OracleOutputVisitorTest_orderBy.java | 41 +++++++++++++++++++ 4 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_delete.java create mode 100644 src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_forupdate.java create mode 100644 src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_orderBy.java diff --git a/pom.xml b/pom.xml index c6a25ee675..f24725c006 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.alibaba druid - 0.1.10 + 0.1.11-SNAPSHOT druid diff --git a/src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_delete.java b/src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_delete.java new file mode 100644 index 0000000000..925c66eba2 --- /dev/null +++ b/src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_delete.java @@ -0,0 +1,40 @@ +package com.alibaba.druid.sql.oracle.bvt.visitor; + +import java.util.List; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; +import com.alibaba.druid.sql.dialect.oracle.visitor.OracleOutputVisitor; +import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; +import com.alibaba.druid.stat.TableStat.Column; + + +public class OracleOutputVisitorTest_delete extends TestCase { + public void test_0() throws Exception { + String sql = "DELETE FROM employee where id = 3"; + + OracleStatementParser parser = new OracleStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + + Assert.assertEquals(1, statementList.size()); + + OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); + stmt.accept(visitor); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(true, visitor.containsTable("employee")); + + Assert.assertEquals(1, visitor.getFields().size()); + Assert.assertEquals(true, visitor.getFields().contains(new Column("employee", "id"))); + + StringBuilder buf = new StringBuilder(); + OracleOutputVisitor outputVisitor = new OracleOutputVisitor(buf); + stmt.accept(outputVisitor); + Assert.assertEquals("DELETE FROM employee WHERE id = 3;\n", buf.toString()); + + } +} diff --git a/src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_forupdate.java b/src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_forupdate.java new file mode 100644 index 0000000000..a019256286 --- /dev/null +++ b/src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_forupdate.java @@ -0,0 +1,40 @@ +package com.alibaba.druid.sql.oracle.bvt.visitor; + +import java.util.List; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; +import com.alibaba.druid.sql.dialect.oracle.visitor.OracleOutputVisitor; +import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; +import com.alibaba.druid.stat.TableStat.Column; + + +public class OracleOutputVisitorTest_forupdate extends TestCase { + public void test_0() throws Exception { + String sql = "SELECT salary from employee for update"; + + OracleStatementParser parser = new OracleStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + + Assert.assertEquals(1, statementList.size()); + + OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); + stmt.accept(visitor); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(true, visitor.containsTable("employee")); + + Assert.assertEquals(1, visitor.getFields().size()); + Assert.assertEquals(true, visitor.getFields().contains(new Column("employee", "salary"))); + + StringBuilder buf = new StringBuilder(); + OracleOutputVisitor outputVisitor = new OracleOutputVisitor(buf); + stmt.accept(outputVisitor); + Assert.assertEquals("SELECT salary\nFROM employee\nFOR UPDATE;\n", buf.toString()); + + } +} diff --git a/src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_orderBy.java b/src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_orderBy.java new file mode 100644 index 0000000000..71a789d0f0 --- /dev/null +++ b/src/test/java/com/alibaba/druid/sql/oracle/bvt/visitor/OracleOutputVisitorTest_orderBy.java @@ -0,0 +1,41 @@ +package com.alibaba.druid.sql.oracle.bvt.visitor; + +import java.util.List; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser; +import com.alibaba.druid.sql.dialect.oracle.visitor.OracleOutputVisitor; +import com.alibaba.druid.sql.dialect.oracle.visitor.OracleSchemaStatVisitor; +import com.alibaba.druid.stat.TableStat.Column; + + +public class OracleOutputVisitorTest_orderBy extends TestCase { + public void test_0() throws Exception { + String sql = "SELECT salary from employee order by name"; + + OracleStatementParser parser = new OracleStatementParser(sql); + List statementList = parser.parseStatementList(); + SQLStatement stmt = statementList.get(0); + + Assert.assertEquals(1, statementList.size()); + + OracleSchemaStatVisitor visitor = new OracleSchemaStatVisitor(); + stmt.accept(visitor); + + Assert.assertEquals(1, visitor.getTables().size()); + Assert.assertEquals(true, visitor.containsTable("employee")); + + Assert.assertEquals(2, visitor.getFields().size()); + Assert.assertEquals(true, visitor.getFields().contains(new Column("employee", "salary"))); + Assert.assertEquals(true, visitor.getFields().contains(new Column("employee", "name"))); + + StringBuilder buf = new StringBuilder(); + OracleOutputVisitor outputVisitor = new OracleOutputVisitor(buf); + stmt.accept(outputVisitor); + Assert.assertEquals("SELECT salary\nFROM employee\nORDER BY name;\n", buf.toString()); + + } +}