[ 
https://issues.apache.org/jira/browse/DRILL-6768?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16641629#comment-16641629
 ] 

ASF GitHub Bot commented on DRILL-6768:
---------------------------------------

arina-ielchiieva commented on a change in pull request #1494: DRILL-6768: 
Improve to_date, to_time and to_timestamp and correspondi…
URL: https://github.com/apache/drill/pull/1494#discussion_r223313758
 
 

 ##########
 File path: 
exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/testing/TestDateConversions.java
 ##########
 @@ -206,4 +210,100 @@ public void testPostgresDateFormatError() throws 
Exception {
       throw e;
     }
   }
+
+  @Test
+  public void testToDateWithEmptyString() throws Exception {
+    try {
+      test("alter system set `drill.exec.functions.cast_empty_string_to_null` 
= true;");
+      Object[] nullObj = new Object[] {null};
+      testBuilder().sqlQuery("SELECT to_date(dateCol, 'yyyy-MM-dd') d from 
cp.`dateWithEmptyStrings.json`")
+          .unOrdered()
+          .baselineColumns("d")
+          .baselineValues(nullObj)
+          .baselineValues(nullObj)
+          .baselineValues(LocalDate.of(1997, 12, 10))
+          .go();
+    } finally {
+      test("alter system reset 
`drill.exec.functions.cast_empty_string_to_null`;");
+    }
+  }
+
+  @Test
+  public void testToTimeWithEmptyString() throws Exception {
+    try {
+      test("alter system set `drill.exec.functions.cast_empty_string_to_null` 
= true;");
+      Object[] nullObj = new Object[] {null};
+      testBuilder().sqlQuery("SELECT to_time(timeCol, 'hh:mm:ss') t from 
cp.`dateWithEmptyStrings.json`")
+          .unOrdered()
+          .baselineColumns("t")
+          .baselineValues(nullObj)
+          .baselineValues(nullObj)
+          .baselineValues(LocalTime.of(7, 21, 39))
+          .go();
+    } finally {
+      test("alter system reset 
`drill.exec.functions.cast_empty_string_to_null`;");
+    }
+  }
+
+  @Test
+  public void testToTimeStampWithEmptyString() throws Exception {
+    try {
+      test("alter system set `drill.exec.functions.cast_empty_string_to_null` 
= true;");
+      Object[] nullObj = new Object[] {null};
+      testBuilder().sqlQuery("SELECT to_timestamp(timestampCol, 'yyyy-MM-dd 
hh:mm:ss') t from cp.`dateWithEmptyStrings.json`")
+          .unOrdered()
+          .baselineColumns("t")
+          .baselineValues(nullObj)
+          .baselineValues(nullObj)
+          .baselineValues(LocalDateTime.of(2003, 9, 11, 10, 1, 37))
+          .go();
+    } finally {
+      test("alter system reset 
`drill.exec.functions.cast_empty_string_to_null`;");
+    }
+  }
+
+  @Test
+  public void testToDateWithLiteralEmptyString() throws Exception {
+    try {
+      test("alter system set `drill.exec.functions.cast_empty_string_to_null` 
= true;");
+      Object[] nullObj = new Object[] {null};
+      testBuilder().sqlQuery("SELECT to_date('', 'yyyy-MM-dd') d from 
(values(1))")
+          .unOrdered()
+          .baselineColumns("d")
+          .baselineValues(nullObj)
+          .go();
+    } finally {
+      test("alter system reset 
`drill.exec.functions.cast_empty_string_to_null`;");
+    }
+  }
+
+  @Test
+  public void testToTimeWithLiteralEmptyString() throws Exception {
+    try {
+      test("alter system set `drill.exec.functions.cast_empty_string_to_null` 
= true;");
+      Object[] nullObj = new Object[] {null};
+      testBuilder().sqlQuery("SELECT to_time('', 'hh:mm:ss') d from 
(values(1))")
+          .unOrdered()
+          .baselineColumns("d")
+          .baselineValues(nullObj)
+          .go();
+    } finally {
+      test("alter system reset 
`drill.exec.functions.cast_empty_string_to_null`;");
+    }
+  }
+
+  @Test
+  public void testToTimeStampWithLiteralEmptyString() throws Exception {
+    try {
+      test("alter system set `drill.exec.functions.cast_empty_string_to_null` 
= true;");
 
 Review comment:
   alterSesssion here and in all other tests

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> Improve to_date, to_time and to_timestamp and corresponding cast functions to 
> handle empty string when `drill.exec.functions.cast_empty_string_to_null` 
> option is enabled
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-6768
>                 URL: https://issues.apache.org/jira/browse/DRILL-6768
>             Project: Apache Drill
>          Issue Type: Improvement
>    Affects Versions: 1.14.0
>            Reporter: Bohdan Kazydub
>            Assignee: Bohdan Kazydub
>            Priority: Major
>              Labels: doc-impacting
>             Fix For: 1.15.0
>
>
> When `drill.exec.functions.cast_empty_string_to_null` option is enabled
> `to_date`, `to_time` and `to_timestamp` functions while converting string to 
> according type in case if null or empty string values are passed will return 
> NULL (to avoid CASE clauses which are littering a query and will work in 
> accordance with their respective CAST counterparts) for both cases.
>  
>   
>   
> CASTs will  be handled in a similar way (uniformly with numeric types):
>  
> ||Value to cast||Now||Will be||
> |NULL|NULL|NULL|
> |'' (empty string)|Error in many cases (except numerical types)|NULL|
>  CAST empty string to null (in case of enabled option) will be supported by 
> DATE, TIME, TIMESTAMP, INTERVAL YEAR, INTERVAL MONTH and INTERVAL DAY 
> functions in addition to numeric types.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to