From a3dcfdba01188240589ce17f0a0783270aacf07f Mon Sep 17 00:00:00 2001 From: Yiming Liu Date: Mon, 4 Jul 2016 21:51:01 +0800 Subject: [PATCH] KYLIN-1817: support date type for PreparedStatement --- .../java/org/apache/kylin/jdbc/KylinPreparedStatement.java | 13 ++++++++----- .../src/main/java/org/apache/kylin/jdbc/KylinResultSet.java | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) 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 getParameterValues2() { - List values = new ArrayList<>(slots.length); - for (int i = 0; i < slots.length; i++) { - values.add(slots[i].value); + protected List getParameterJDBCValues() { + List typeValues = getParameterValues(); + List jdbcValues = new ArrayList(typeValues.size()); + for(TypedValue typeValue: typeValues){ + jdbcValues.add(typeValue.toJdbc(getCalendar())); } - return values; + return jdbcValues; } // ============================================================================ 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(); -- 2.7.4 (Apple Git-66)