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 2017/05/02 06:43:00 UTC
[2/4] calcite git commit: [CALCITE-1770] Druid adapter: CAST(NULL AS
...) gives NPE (Slim Bouguerra)
[CALCITE-1770] Druid adapter: CAST(NULL AS ...) gives NPE (Slim Bouguerra)
Close apache/calcite#441
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/ef00738a
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/ef00738a
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/ef00738a
Branch: refs/heads/master
Commit: ef00738a053cbe881f2c840f3e3b5feeb010b6e1
Parents: 1aaa0d6
Author: Slim Bouguerra <sl...@gmail.com>
Authored: Sat Apr 29 20:06:07 2017 -0700
Committer: Julian Hyde <jh...@apache.org>
Committed: Mon May 1 16:07:50 2017 -0700
----------------------------------------------------------------------
.../org/apache/calcite/adapter/druid/DruidQuery.java | 4 ++++
.../java/org/apache/calcite/test/DruidAdapterIT.java | 12 ++++++++++++
2 files changed, 16 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/ef00738a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java
----------------------------------------------------------------------
diff --git a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java
index 504e06d..81e94dd 100644
--- a/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java
+++ b/druid/src/main/java/org/apache/calcite/adapter/druid/DruidQuery.java
@@ -959,6 +959,10 @@ public class DruidQuery extends AbstractRelNode implements BindableRel {
case CAST:
return tr(e, 0, set);
case LITERAL:
+ if (((RexLiteral) e).getValue3() == null) {
+ // Druid considers null is equivalent to empty.
+ return "";
+ }
return ((RexLiteral) e).getValue3().toString();
case FLOOR:
case EXTRACT:
http://git-wip-us.apache.org/repos/asf/calcite/blob/ef00738a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
----------------------------------------------------------------------
diff --git a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
index b903fbb..17d6211 100644
--- a/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
+++ b/druid/src/test/java/org/apache/calcite/test/DruidAdapterIT.java
@@ -2088,6 +2088,18 @@ public class DruidAdapterIT {
sql(sql).explainContains(plan).queryContains(druidChecker("'queryType':'select'"))
.returnsUnordered("EXPR$0=19");
}
+
+ /** Test case for
+ * <a href="https://issues.apache.org/jira/browse/CALCITE-1770">[CALCITE-1770]
+ * Druid adapter: CAST(NULL AS ...) gives NPE</a>. */
+ @Test public void testPushCast() {
+ final String sql = "SELECT \"product_id\"\n"
+ + "from \"foodmart\"\n"
+ + "where \"product_id\" = cast(NULL as varchar)\n"
+ + "group by \"product_id\"";
+ String druidQuery = "'filter':{'type':'selector','dimension':'product_id','value':''}";
+ sql(sql).queryContains(druidChecker(druidQuery));
+ }
}
// End DruidAdapterIT.java