2010YOUY01 commented on code in PR #12383:
URL: https://github.com/apache/datafusion/pull/12383#discussion_r1749178924


##########
datafusion/functions/src/unicode/substr.rs:
##########
@@ -180,32 +197,26 @@ fn string_view_substr(
 
     let start_array = as_int64_array(&args[0])?;
 
+    // In either case of `substr(s, i)` or `substr(s, i, cnt)`
+    // If any of input argument is `NULL`, the result is `NULL`
     match args.len() {
         1 => {
-            for (idx, (raw, start)) in string_view_array
-                .views()
+            for ((str_opt, raw_view), start_opt) in string_view_array

Review Comment:
   The old implementation will treat empty string in view  as `NULL` (within 
`make_and_append_view()`), so it handled `NULL` case correctly  but handled the 
empty string case wrong.
   Since it's not possible to use view to check if the current element is null, 
so here we also have to iterate on the string array to check whether each 
element is `NULL`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to