You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Krystal (JIRA)" <ji...@apache.org> on 2015/04/21 23:22:58 UTC
[jira] [Closed] (DRILL-1164) Casting of a timestamp to date fails
with complilation error
[ https://issues.apache.org/jira/browse/DRILL-1164?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Krystal closed DRILL-1164.
--------------------------
Verified that bug is fixed. Automated tests are at:
/private-sql-hadoop-test/framework/resources/Functional/Passing/p1tests/date*
> Casting of a timestamp to date fails with complilation error
> ------------------------------------------------------------
>
> Key: DRILL-1164
> URL: https://issues.apache.org/jira/browse/DRILL-1164
> Project: Apache Drill
> Issue Type: Bug
> Components: Functions - Drill
> Reporter: Krystal
> Assignee: DrillCommitter
> Fix For: 0.4.0
>
> Attachments: DRILL-1164.patch
>
>
> git.commit.id.abbrev=e5c2da0
> I have the following data as timestamp:
> 0: jdbc:drill:schema=dfs> select create_time from student_v where student_id=15;
> +-------------+
> | create_time |
> +-------------+
> | 2014-11-12 12:38:15.0 |
> +-------------+
> It fails with compilation error when I cast the create_time column to a date:
> 0: jdbc:drill:schema=dfs> select cast(create_time as date) from student_v where student_id=15;
> Query failed: org.apache.drill.exec.rpc.RpcException: Remote failure while running query.[error_id: "5645a2df-cf15-4e14-aa88-c10559169348"
> endpoint {
> address: "qa-node64.qa.lab"
> user_port: 31010
> control_port: 31011
> data_port: 31012
> }
> error_type: 0
> message: "Screen received stop request sent. < SchemaChangeException:[ Failure while attempting to load generated class ] < ClassTransformationException:[ Failure generating transformation classes for value:
>
> package org.apache.drill.exec.test.generated;
> import org.apache.drill.exec.exception.SchemaChangeException;
> import org.apache.drill.exec.expr.holders.BitHolder;
> import org.apache.drill.exec.expr.holders.NullableDateHolder;
> import org.apache.drill.exec.expr.holders.NullableTimeStampHolder;
> import org.apache.drill.exec.expr.holders.NullableVarBinaryHolder;
> import org.apache.drill.exec.ops.FragmentContext;
> import org.apache.drill.exec.record.RecordBatch;
> import org.apache.drill.exec.vector.NullableDateVector;
> import org.apache.drill.exec.vector.NullableVarBinaryVector;
> public class ProjectorGen94 {
> NullableVarBinaryVector vv0;
> NullableDateVector vv6;
> public void doSetup(FragmentContext context, RecordBatch incoming, RecordBatch outgoing)
> throws SchemaChangeException
> {
> {
> int[] fieldIds1 = new int[ 1 ] ;
> fieldIds1 [ 0 ] = 1;
> Object tmp2 = (incoming).getValueAccessorById(NullableVarBinaryVector.class, fieldIds1).getValueVector();
> if (tmp2 == null) {
> throw new SchemaChangeException("Failure while loading vector vv0 with id: org.apache.drill.exec.record.TypedFieldId@c2277e8e.");
> }
> vv0 = ((NullableVarBinaryVector) tmp2);
> /** start SETUP for function castTIMESTAMP **/
> {
> {}
> }
> /** end SETUP for function castTIMESTAMP **/
> /** start SETUP for function castDATE **/
> {
> {}
> }
> /** end SETUP for function castDATE **/
> int[] fieldIds7 = new int[ 1 ] ;
> fieldIds7 [ 0 ] = 0;
> Object tmp8 = (outgoing).getValueAccessorById(NullableDateVector.class, fieldIds7).getValueVector();
> if (tmp8 == null) {
> throw new SchemaChangeException("Failure while loading vector vv6 with id: org.apache.drill.exec.record.TypedFieldId@8cbf8a9.");
> }
> vv6 = ((NullableDateVector) tmp8);
> }
> }
> public boolean doEval(int inIndex, int outIndex)
> throws SchemaChangeException
> {
> {
> NullableVarBinaryHolder out3 = new NullableVarBinaryHolder();
> out3 .isSet = vv0 .getAccessor().isSet((inIndex));
> if (out3 .isSet == 1) {
> {
> vv0 .getAccessor().get((inIndex), out3);
> }
> }
> //---- start of eval portion of castTIMESTAMP function. ----//
> NullableTimeStampHolder out4 = new NullableTimeStampHolder();
> {
> if (out3 .isSet == 0) {
> out4 .isSet = 0;
> } else {
> final NullableTimeStampHolder out = new NullableTimeStampHolder();
> NullableVarBinaryHolder in = out3;
>
> CastVarCharToTimeStamp_eval: {
> byte[] buf = new byte[in.end - in.start];
> in.buffer.getBytes(in.start, buf, 0, in.end - in.start);
> String input = new String(buf, com.google.common.base.Charsets.UTF_8);
> org.joda.time.format.DateTimeFormatter f = org.apache.drill.exec.expr.fn.impl.DateUtility.getDateTimeFormatter();
> out.value = org.joda.time.DateTime.parse(input, f).withZoneRetainFields(org.joda.time.DateTimeZone.UTC).getMillis();
> }
>
> out.isSet = 1;
> out4 = out;
> out.isSet = 1;
> }
> }
> //---- end of eval portion of castTIMESTAMP function. ----//
> //---- start of eval portion of castDATE function. ----//
> NullableDateHolder out5 = new NullableDateHolder();
> {
> if (out4 .isSet == 0) {
> out5 .isSet = 0;
> } else {
> final NullableDateHolder out = new NullableDateHolder();
> NullableTimeStampHolder in = out4;
>
> CastTimeStampToDate_eval: {
> out.value = (new DateMidnight(in.value, DateTimeZone.UTC)).getMillis();
> }
>
> out.isSet = 1;
> out5 = out;
> out.isSet = 1;
> }
> }
> //---- end of eval portion of castDATE function. ----//
> BitHolder out9 = new BitHolder();
> out9 .value = 1;
> if (!(out5 .isSet == 0)) {
> if (!vv6 .getMutator().setSafe((outIndex), out5 .value)) {
> out9 .value = 0;
> }
> } else {
> if (!vv6 .getMutator().isSafe((outIndex))) {
> out9 .value = 0;
> }
> }
> if (out9 .value == 0) {
> return false;
> }
> }
> {
> return true;
> }
> }
> }
> ] < CompileException:[ Line 97, Column 34: Cannot determine simple type name "DateMidnight" ]"
> ]Error: exception while executing query (state=,code=0)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)