From 71591958cca4d1d6016bff574c17b6f98968cb6d Mon Sep 17 00:00:00 2001 From: fengyu Date: Thu, 12 May 2016 17:42:26 +0800 Subject: [PATCH 3/3] KYLIN-1685,error happens while execute a sql contains '?' using Statement Signed-off-by: fengyu --- .../java/org/apache/kylin/jdbc/KylinResultSet.java | 3 +++ .../test/java/org/apache/kylin/jdbc/DriverTest.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java index 2b186bf..767b543 100644 --- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java +++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java @@ -50,6 +50,9 @@ public class KylinResultSet extends AvaticaResultSet { String sql = signature.sql; List params = signature.parameters; List paramValues = null; + if(statement instanceof KylinStatement) { + params = null; + } if (params != null && params.size() > 0) { paramValues = ((KylinPreparedStatement) statement).getParameterValues2(); } diff --git a/jdbc/src/test/java/org/apache/kylin/jdbc/DriverTest.java b/jdbc/src/test/java/org/apache/kylin/jdbc/DriverTest.java index 9d1c29b..6399c72 100644 --- a/jdbc/src/test/java/org/apache/kylin/jdbc/DriverTest.java +++ b/jdbc/src/test/java/org/apache/kylin/jdbc/DriverTest.java @@ -66,6 +66,25 @@ public class DriverTest { assertEquals("tool", resultSet.getString(3)); } } + + @Test + public void testStatementWithQuestionMask() throws SQLException { + Driver driver = new DummyDriver(); + + Connection conn = driver.connect("jdbc:kylin://test_url/test_db", null); + Statement state = conn.createStatement(); + ResultSet resultSet = state.executeQuery("select * from test_table where url not in ('http://a.b.com/?a=b')"); + ResultSetMetaData metadata = resultSet.getMetaData(); + assertEquals(12, metadata.getColumnType(1)); + assertEquals("varchar", metadata.getColumnTypeName(1)); + assertEquals(1, metadata.isNullable(1)); + + while (resultSet.next()) { + assertEquals("foo", resultSet.getString(1)); + assertEquals("bar", resultSet.getString(2)); + assertEquals("tool", resultSet.getString(3)); + } + } @Test public void testPreparedStatementWithMockData() throws SQLException { -- 1.9.4.msysgit.2