[ https://issues.apache.org/jira/browse/DRILL-3727?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14724471#comment-14724471 ]
Hao Zhu commented on DRILL-3727: -------------------------------- PostgreSQL's behavior is the similar as Drill. {code} test=# create table testempty(col0 varchar); CREATE TABLE test=# insert into testempty values test-# (''); INSERT 0 1 test=# insert into testempty values('2015-01-01'); INSERT 0 1 test=# select * from testempty ; col0 ------------ 2015-01-01 (2 rows) test=# select cast(col0 as date) from testempty; ERROR: invalid input syntax for type date: "" test=# select case when col0='' then null else cast(col0 as date) end from testempty; col0 ------------ 2015-01-01 (2 rows) {code} > Drill should return NULL instead of failure if cast column is empty > ------------------------------------------------------------------- > > Key: DRILL-3727 > URL: https://issues.apache.org/jira/browse/DRILL-3727 > Project: Apache Drill > Issue Type: Bug > Components: Functions - Hive > Affects Versions: 1.1.0 > Environment: 1.1 > Reporter: Hao Zhu > Assignee: Mehant Baid > > If Drill is casting an empty string to date, it will fail with error: > Error: SYSTEM ERROR: IllegalFieldValueException: Value 0 for monthOfYear must > be in the range [1,12] > However Hive can just return a NULL instead. > I think it makes sense for Drill to have the same behavior as Hive in this > case. > Repro: > Hive: > {code} > create table h1db.testempty(col0 string) > ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' > STORED AS TEXTFILE > ; > hive> select * from h1db.testempty ; > OK > 2015-01-01 > Time taken: 0.28 seconds, Fetched: 2 row(s) > hive> select cast(col0 as date) from h1db.testempty; > OK > NULL > 2015-01-01 > Time taken: 0.078 seconds, Fetched: 2 row(s) > {code} > Drill: > {code} > use hive; > > select * from h1db.testempty ; > +-------------+ > | col0 | > +-------------+ > | | > | 2015-01-01 | > +-------------+ > 2 rows selected (0.232 seconds) > > select cast(col0 as date) from h1db.testempty; > Error: SYSTEM ERROR: IllegalFieldValueException: Value 0 for monthOfYear must > be in the range [1,12] > {code} > Workaround: > {code} > > select case when col0='' then null else cast(col0 as date) end from > > h1db.testempty; > +-------------+ > | EXPR$0 | > +-------------+ > | null | > | 2015-01-01 | > +-------------+ > 2 rows selected (0.287 seconds) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)