You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2014/12/11 08:56:24 UTC

[2/3] incubator-calcite git commit: Fix QUARTER function for null values and JDBC escape syntax

Fix QUARTER function for null values and JDBC escape syntax


Project: http://git-wip-us.apache.org/repos/asf/incubator-calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-calcite/commit/0ab7f5ef
Tree: http://git-wip-us.apache.org/repos/asf/incubator-calcite/tree/0ab7f5ef
Diff: http://git-wip-us.apache.org/repos/asf/incubator-calcite/diff/0ab7f5ef

Branch: refs/heads/master
Commit: 0ab7f5ef0f67c8bb96d4460d733ad4e953643085
Parents: a059f76
Author: Julian Hyde <jh...@apache.org>
Authored: Wed Dec 10 17:56:45 2014 -0800
Committer: Julian Hyde <jh...@apache.org>
Committed: Wed Dec 10 18:02:47 2014 -0800

----------------------------------------------------------------------
 .../java/org/apache/calcite/sql/SqlJdbcFunctionCall.java     | 3 +++
 .../org/apache/calcite/sql2rel/StandardConvertletTable.java  | 7 +++++--
 .../org/apache/calcite/sql/test/SqlOperatorBaseTest.java     | 8 ++++----
 3 files changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/0ab7f5ef/core/src/main/java/org/apache/calcite/sql/SqlJdbcFunctionCall.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/SqlJdbcFunctionCall.java b/core/src/main/java/org/apache/calcite/sql/SqlJdbcFunctionCall.java
index 91a8acf..63ffb8d 100644
--- a/core/src/main/java/org/apache/calcite/sql/SqlJdbcFunctionCall.java
+++ b/core/src/main/java/org/apache/calcite/sql/SqlJdbcFunctionCall.java
@@ -723,6 +723,9 @@ public class SqlJdbcFunctionCall extends SqlFunction {
             }
           });
       map.put(
+          "QUARTER",
+          new MakeCall(SqlStdOperatorTable.QUARTER, 1));
+      map.put(
           "RTRIM",
           new MakeCall(SqlStdOperatorTable.TRIM, 1) {
             @Override SqlCall createCall(

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/0ab7f5ef/core/src/main/java/org/apache/calcite/sql2rel/StandardConvertletTable.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql2rel/StandardConvertletTable.java b/core/src/main/java/org/apache/calcite/sql2rel/StandardConvertletTable.java
index 9c85772..7ecfd37 100644
--- a/core/src/main/java/org/apache/calcite/sql2rel/StandardConvertletTable.java
+++ b/core/src/main/java/org/apache/calcite/sql2rel/StandardConvertletTable.java
@@ -564,8 +564,11 @@ public class StandardConvertletTable extends ReflectiveConvertletTable {
     assert operands.size() == 1;
     RexNode x = cx.convertExpression(operands.get(0));
     final RexBuilder rexBuilder = cx.getRexBuilder();
-    RelDataType resType =
-        cx.getTypeFactory().createSqlType(SqlTypeName.BIGINT);
+    final RelDataTypeFactory typeFactory = cx.getTypeFactory();
+    final RelDataType resType =
+        typeFactory.createTypeWithNullability(
+            typeFactory.createSqlType(SqlTypeName.BIGINT),
+            x.getType().isNullable());
     RexNode res =
         rexBuilder.makeCall(
             resType,

http://git-wip-us.apache.org/repos/asf/incubator-calcite/blob/0ab7f5ef/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java b/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
index d5d6d00..9e08be8 100644
--- a/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/test/SqlOperatorBaseTest.java
@@ -1478,7 +1478,7 @@ public abstract class SqlOperatorBaseTest {
 
     // Numeric Functions
     if (!enable) {
-      return;
+//      return;
     }
     tester.checkScalar("{fn ABS(-3)}", 3, "INTEGER NOT NULL");
     if (false) {
@@ -1666,9 +1666,8 @@ public abstract class SqlOperatorBaseTest {
       tester.checkScalar("{fn MONTHNAME(date)}", null, "");
     }
     tester.checkType("{fn NOW()}", "TIMESTAMP(0) NOT NULL");
-    if (false) {
-      tester.checkScalar("{fn QUARTER(date)}", null, "");
-    }
+    tester.checkScalar("{fn QUARTER(DATE '2014-12-10')}", "4",
+        "BIGINT NOT NULL");
     if (false) {
       tester.checkScalar("{fn SECOND(time)}", null, "");
     }
@@ -4140,6 +4139,7 @@ public abstract class SqlOperatorBaseTest {
         "quarter(date '2008-12-23')",
         "4",
         "BIGINT NOT NULL");
+    tester.checkNull("quarter(cast(null as date))");
   }
 
   @Test public void testExtractFunc() {