Repository: phoenix
Updated Branches:
  refs/heads/calcite 553dc9727 -> 84d92bffe


PHOENIX-3668 Resolve Date/Time/Timestamp incompatibility in bind variables


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/84d92bff
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/84d92bff
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/84d92bff

Branch: refs/heads/calcite
Commit: 84d92bffecc1e1cf20c56f2691b7d6ecae7bb7ab
Parents: 553dc97
Author: maryannxue <maryann....@gmail.com>
Authored: Mon Feb 13 16:50:08 2017 -0800
Committer: maryannxue <maryann....@gmail.com>
Committed: Mon Feb 13 16:50:08 2017 -0800

----------------------------------------------------------------------
 .../calcite/jdbc/PhoenixCalciteFactory.java     | 31 ++++++++++++++++++++
 .../apache/phoenix/calcite/CalciteUtils.java    |  4 +--
 .../jdbc/PhoenixCalciteEmbeddedDriver.java      |  2 +-
 3 files changed, 34 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/84d92bff/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java 
b/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java
index 5c15025..15d8b83 100644
--- 
a/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java
+++ 
b/phoenix-core/src/main/java/org/apache/calcite/jdbc/PhoenixCalciteFactory.java
@@ -4,6 +4,7 @@ import java.io.File;
 import java.io.InputStream;
 import java.io.Reader;
 import java.sql.DatabaseMetaData;
+import java.sql.Date;
 import java.sql.NClob;
 import java.sql.ResultSetMetaData;
 import java.sql.RowId;
@@ -11,6 +12,8 @@ import java.sql.SQLException;
 import java.sql.SQLFeatureNotSupportedException;
 import java.sql.SQLXML;
 import java.sql.Savepoint;
+import java.sql.Time;
+import java.sql.Timestamp;
 import java.sql.ResultSet;
 import java.util.Calendar;
 import java.util.List;
@@ -381,6 +384,34 @@ public class PhoenixCalciteFactory extends CalciteFactory {
             }
         }
 
+        public void setTimestamp(int parameterIndex, Timestamp x, Calendar 
calendar)
+                throws SQLException {
+            if (x != null) {
+                x = new Timestamp(getAdjustedTime(x.getTime(), calendar));
+            }
+            super.setTimestamp(parameterIndex, x, calendar);
+        }
+
+        public void setDate(int parameterIndex, Date x, Calendar calendar)
+                throws SQLException {
+            if (x != null) {
+                x = new Date(getAdjustedTime(x.getTime(), calendar));
+            }
+            super.setDate(parameterIndex, x, calendar);
+        }
+
+        public void setTime(int parameterIndex, Time x, Calendar calendar)
+                throws SQLException {
+            if (x != null) {
+                x = new Time(getAdjustedTime(x.getTime(), calendar));
+            }
+            super.setTime(parameterIndex, x, calendar);
+        }
+
+        private long getAdjustedTime(long v, Calendar calendar) {
+            return (v - calendar.getTimeZone().getOffset(v));
+        }
+
         public void setRowId(
                 int parameterIndex,
                 RowId x) throws SQLException {

http://git-wip-us.apache.org/repos/asf/phoenix/blob/84d92bff/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java 
b/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java
index c9f072a..d1ca972 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/CalciteUtils.java
@@ -295,7 +295,7 @@ public class CalciteUtils {
                ExpressionFactory eFactory = EXPRESSION_MAP.get(node.getKind());
                if (eFactory == null) {
                        throw new UnsupportedOperationException("Unsupported 
RexNode: "
-                                       + node);
+                                       + node.getKind());
                }
                return eFactory;
        }
@@ -1169,7 +1169,7 @@ public class CalciteUtils {
 
     public static SQLException unwrapSqlException(SQLException root){
         Exception e = root;
-        while(e.getCause() != null){
+        while(e.getCause() instanceof Exception){
             e = (Exception) e.getCause();
             if(e instanceof RuntimeException && e.getCause() instanceof 
SQLException) {
                 return (SQLException) e.getCause();

http://git-wip-us.apache.org/repos/asf/phoenix/blob/84d92bff/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java
 
b/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java
index 36088ba..c20151d 100644
--- 
a/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java
+++ 
b/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteEmbeddedDriver.java
@@ -58,7 +58,7 @@ public abstract class PhoenixCalciteEmbeddedDriver extends 
Driver implements SQL
         return new Function0<CalcitePrepare>() {
             @Override
             public CalcitePrepare apply() {
-                return new 
PhoenixPrepareImpl(PhoenixConverterRules.CONVERTIBLE_RULES);
+                return new PhoenixPrepareImpl(PhoenixConverterRules.RULES);
             }          
         };
     }

Reply via email to