From 41b1cd52c3f5a4f4f8fdfe781217c1adb8dc251f Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 14 May 2011 15:27:21 +0000 Subject: [PATCH] git-svn-id: http://code.alibabatech.com/svn/druid/trunk@82 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../handler/MySqlMockExecuteHandlerImpl.java | 9 +++++++ .../druid/bvt/mock/MockExecuteTest.java | 26 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/main/java/com/alibaba/druid/mock/handler/MySqlMockExecuteHandlerImpl.java b/src/main/java/com/alibaba/druid/mock/handler/MySqlMockExecuteHandlerImpl.java index 89a6bfb448..32246c8206 100644 --- a/src/main/java/com/alibaba/druid/mock/handler/MySqlMockExecuteHandlerImpl.java +++ b/src/main/java/com/alibaba/druid/mock/handler/MySqlMockExecuteHandlerImpl.java @@ -13,6 +13,7 @@ import com.alibaba.druid.mock.MockStatement; import com.alibaba.druid.sql.ast.SQLExpr; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.ast.expr.SQLCharExpr; +import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr; import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr; import com.alibaba.druid.sql.ast.expr.SQLMethodInvokeExpr; import com.alibaba.druid.sql.ast.expr.SQLNCharExpr; @@ -64,6 +65,14 @@ public class MySqlMockExecuteHandlerImpl implements MockExecuteHandler { SQLTableSource from = query.getFrom(); if (from instanceof SQLExprTableSource) { + SQLExpr expr = ((SQLExprTableSource) from).getExpr(); + + if (expr instanceof SQLIdentifierExpr) { + String ident = ((SQLIdentifierExpr) expr).getName(); + if ("dual".equalsIgnoreCase(ident)) { + return executeQueryFromDual(statement, query); + } + } throw new SQLException("TODO"); } else if (from == null) { return executeQueryFromDual(statement, query); diff --git a/src/test/java/com/alibaba/druid/bvt/mock/MockExecuteTest.java b/src/test/java/com/alibaba/druid/bvt/mock/MockExecuteTest.java index 5412651e36..01256608b2 100644 --- a/src/test/java/com/alibaba/druid/bvt/mock/MockExecuteTest.java +++ b/src/test/java/com/alibaba/druid/bvt/mock/MockExecuteTest.java @@ -51,4 +51,30 @@ public class MockExecuteTest extends TestCase { stmt.close(); conn.close(); } + + public void test_3() throws Exception { + Connection conn = DriverManager.getConnection("jdbc:mock:"); + Statement stmt = conn.createStatement(); + + ResultSet rs = stmt.executeQuery("SELECT NOW() FROM DUAL"); + Assert.assertTrue(rs.next()); + Assert.assertTrue(rs.getObject(1) instanceof Timestamp); + rs.close(); + + stmt.close(); + conn.close(); + } + + public void test_4() throws Exception { + Connection conn = DriverManager.getConnection("jdbc:mock:"); + Statement stmt = conn.createStatement(); + + ResultSet rs = stmt.executeQuery("SELECT 'ABCDE' FROM DUAL"); + Assert.assertTrue(rs.next()); + Assert.assertEquals("ABCDE", rs.getString(1)); + rs.close(); + + stmt.close(); + conn.close(); + } }