Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E8817200BFF for ; Tue, 13 Dec 2016 01:40:00 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id E76B0160B38; Tue, 13 Dec 2016 00:40:00 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id D7DE6160B22 for ; Tue, 13 Dec 2016 01:39:59 +0100 (CET) Received: (qmail 65786 invoked by uid 500); 13 Dec 2016 00:39:59 -0000 Mailing-List: contact commits-help@drill.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: commits@drill.apache.org Delivered-To: mailing list commits@drill.apache.org Received: (qmail 65188 invoked by uid 99); 13 Dec 2016 00:39:58 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 13 Dec 2016 00:39:58 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 7A73BF215D; Tue, 13 Dec 2016 00:39:58 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sudheesh@apache.org To: commits@drill.apache.org Date: Tue, 13 Dec 2016 00:40:03 -0000 Message-Id: In-Reply-To: <2579c1c039c64509be427ffbd9cc850b@git.apache.org> References: <2579c1c039c64509be427ffbd9cc850b@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [06/14] drill git commit: DRILL-5048: Fix type mismatch error in case statement with null timestamp archived-at: Tue, 13 Dec 2016 00:40:01 -0000 DRILL-5048: Fix type mismatch error in case statement with null timestamp closes #657 Project: http://git-wip-us.apache.org/repos/asf/drill/repo Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/85a96518 Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/85a96518 Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/85a96518 Branch: refs/heads/master Commit: 85a9651844c3e5f33db14c57b8f43f01100a729e Parents: 3cd2f44 Author: Serhii-Harnyk Authored: Thu Nov 17 14:23:58 2016 +0000 Committer: Sudheesh Katkam Committed: Mon Dec 12 15:40:02 2016 -0800 ---------------------------------------------------------------------- .../exec/planner/logical/DrillConstExecutor.java | 3 ++- .../exec/planner/logical/TestCaseNullableTypes.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/drill/blob/85a96518/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConstExecutor.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConstExecutor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConstExecutor.java index 4a0f8fa..829db2a 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConstExecutor.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillConstExecutor.java @@ -287,7 +287,8 @@ public class DrillConstExecutor implements RelOptPlanner.Executor { Calendar value = (materializedExpr.getMajorType().getMode() == TypeProtos.DataMode.OPTIONAL) ? new DateTime(((NullableTimeStampHolder) output).value, DateTimeZone.UTC).toCalendar(null) : new DateTime(((TimeStampHolder) output).value, DateTimeZone.UTC).toCalendar(null); - return rexBuilder.makeTimestampLiteral(value, 0); + return rexBuilder.makeLiteral(value, + TypeInferenceUtils.createCalciteTypeWithNullability(typeFactory, SqlTypeName.TIMESTAMP, newCall.getType().isNullable()), false); } case INTERVALYEAR: { BigDecimal value = (materializedExpr.getMajorType().getMode() == TypeProtos.DataMode.OPTIONAL) ? http://git-wip-us.apache.org/repos/asf/drill/blob/85a96518/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/TestCaseNullableTypes.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/TestCaseNullableTypes.java b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/TestCaseNullableTypes.java index 8e5245f..4db59eb 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/TestCaseNullableTypes.java +++ b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/TestCaseNullableTypes.java @@ -17,6 +17,8 @@ package org.apache.drill.exec.planner.logical; import org.apache.drill.BaseTestQuery; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; import org.junit.Test; /** @@ -124,4 +126,17 @@ public class TestCaseNullableTypes extends BaseTestQuery { .baselineValues(1, 0.1f) .go(); } + + @Test //DRILL-5048 + public void testCaseNullableTimestamp() throws Exception { + DateTime date = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss") + .parseDateTime("2016-11-17 14:43:23"); + + testBuilder() + .sqlQuery("SELECT (CASE WHEN (false) THEN null ELSE CAST('2016-11-17 14:43:23' AS TIMESTAMP) END) res FROM (values(1)) foo") + .unOrdered() + .baselineColumns("res") + .baselineValues(date) + .go(); + } }