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 32246c8206..6d270d144e 100644 --- a/src/main/java/com/alibaba/druid/mock/handler/MySqlMockExecuteHandlerImpl.java +++ b/src/main/java/com/alibaba/druid/mock/handler/MySqlMockExecuteHandlerImpl.java @@ -27,6 +27,7 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectQuery; import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock; import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; import com.alibaba.druid.sql.ast.statement.SQLTableSource; +import com.alibaba.druid.sql.dialect.mysql.ast.expr.MySqlBooleanExpr; import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser; import com.alibaba.druid.sql.parser.SQLStatementParser; @@ -105,6 +106,9 @@ public class MySqlMockExecuteHandlerImpl implements MockExecuteHandler { } else if (expr instanceof SQLNCharExpr) { row[i] = ((SQLNCharExpr) expr).getText(); column.setColumnType(Types.NVARCHAR); + } else if (expr instanceof MySqlBooleanExpr) { + row[i] = ((MySqlBooleanExpr) expr).getValue(); + column.setColumnType(Types.NVARCHAR); } else if (expr instanceof SQLNullExpr) { row[i] = null; } else if (expr instanceof SQLMethodInvokeExpr) { diff --git a/src/main/java/com/alibaba/druid/sql/parser/Token.java b/src/main/java/com/alibaba/druid/sql/parser/Token.java index dd8a31e5f3..e4dfb4655a 100644 --- a/src/main/java/com/alibaba/druid/sql/parser/Token.java +++ b/src/main/java/com/alibaba/druid/sql/parser/Token.java @@ -28,6 +28,8 @@ public enum Token { LOCK("LOCK"), SOME("SOME"), ANY("ANY"), + TRUE("TRUE"), FALSE("FALSE"), + EOF, ERROR, IDENTIFIER, HINT, 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 01256608b2..30ead3ea1f 100644 --- a/src/test/java/com/alibaba/druid/bvt/mock/MockExecuteTest.java +++ b/src/test/java/com/alibaba/druid/bvt/mock/MockExecuteTest.java @@ -77,4 +77,18 @@ public class MockExecuteTest extends TestCase { stmt.close(); conn.close(); } + + public void test_5() throws Exception { + Connection conn = DriverManager.getConnection("jdbc:mock:"); + Statement stmt = conn.createStatement(); + + ResultSet rs = stmt.executeQuery("SELECT true FROM DUAL"); + Assert.assertTrue(rs.next()); + Assert.assertEquals(true, rs.getBoolean(1)); + + rs.close(); + + stmt.close(); + conn.close(); + } }