KYLIN-1817: support date type for PreparedStatement Signed-off-by: Li Yang <liy...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/56071064 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/56071064 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/56071064 Branch: refs/heads/1.5.x-HBase1.x Commit: 56071064f085e72373446bde00143b4e1de7e454 Parents: 13ae661 Author: Yiming Liu <liuyiming....@gmail.com> Authored: Mon Jul 4 21:51:01 2016 +0800 Committer: Li Yang <liy...@apache.org> Committed: Tue Jul 5 16:43:40 2016 +0800 ---------------------------------------------------------------------- .../org/apache/kylin/jdbc/KylinPreparedStatement.java | 13 ++++++++----- .../java/org/apache/kylin/jdbc/KylinResultSet.java | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/56071064/jdbc/src/main/java/org/apache/kylin/jdbc/KylinPreparedStatement.java ---------------------------------------------------------------------- diff --git a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinPreparedStatement.java b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinPreparedStatement.java index 1a1deda..167894c 100644 --- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinPreparedStatement.java +++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinPreparedStatement.java @@ -25,12 +25,14 @@ import java.sql.RowId; import java.sql.SQLException; import java.sql.SQLXML; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.apache.calcite.avatica.AvaticaConnection; import org.apache.calcite.avatica.AvaticaPreparedStatement; import org.apache.calcite.avatica.Meta.Signature; import org.apache.calcite.avatica.Meta.StatementHandle; +import org.apache.calcite.avatica.remote.TypedValue; public class KylinPreparedStatement extends AvaticaPreparedStatement { @@ -40,12 +42,13 @@ public class KylinPreparedStatement extends AvaticaPreparedStatement { this.handle.signature = signature; } - protected List<Object> getParameterValues2() { - List<Object> values = new ArrayList<>(slots.length); - for (int i = 0; i < slots.length; i++) { - values.add(slots[i].value); + protected List<Object> getParameterJDBCValues() { + List<TypedValue> typeValues = getParameterValues(); + List<Object> jdbcValues = new ArrayList<Object>(typeValues.size()); + for(TypedValue typeValue: typeValues){ + jdbcValues.add(typeValue.toJdbc(getCalendar())); } - return values; + return jdbcValues; } // ============================================================================ http://git-wip-us.apache.org/repos/asf/kylin/blob/56071064/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java ---------------------------------------------------------------------- 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 a6117cc..1bf2555 100644 --- a/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java +++ b/jdbc/src/main/java/org/apache/kylin/jdbc/KylinResultSet.java @@ -53,7 +53,7 @@ public class KylinResultSet extends AvaticaResultSet { if (!(statement instanceof KylinPreparedStatement)) { params = null; } else if (params != null && params.size() > 0) { - paramValues = ((KylinPreparedStatement) statement).getParameterValues2(); + paramValues = ((KylinPreparedStatement) statement).getParameterJDBCValues(); } IRemoteClient client = ((KylinConnection) statement.connection).getRemoteClient();