[
https://issues.apache.org/jira/browse/FLINK-10145?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16586925#comment-16586925
]
ASF GitHub Bot commented on FLINK-10145:
----------------------------------------
Guibo-Pan commented on a change in pull request #6576: [FLINK-10145][table] Add
replace supported in TableAPI and SQL
URL: https://github.com/apache/flink/pull/6576#discussion_r211477186
##########
File path:
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/runtime/functions/ScalarFunctions.scala
##########
@@ -92,6 +92,17 @@ object ScalarFunctions {
sb.toString
}
+ /**
+ * Returns the string str with all non-overlapping occurrences
+ * of search replaced with replacement.
+ */
+ def replace(str: String, search: String, replacement: String): String = {
Review comment:
The same reason like the above. The calcite builtin `replace` can not handle
null parameters, which may throw NPE.
The builtin `replace` is
```
public static String replace(String s, String search, String replacement) {
return s.replace(search, replacement);
}
```
and in java.lang.String#replace it is
```
public String replace(CharSequence target, CharSequence replacement) {
return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}
```
Here it calls `toString` method, that will cause Exception when any of the
thress params is `null`.
----------------------------------------------------------------
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:
[email protected]
> Add replace supported in TableAPI and SQL
> -----------------------------------------
>
> Key: FLINK-10145
> URL: https://issues.apache.org/jira/browse/FLINK-10145
> Project: Flink
> Issue Type: Sub-task
> Components: Table API & SQL
> Reporter: Guibo Pan
> Assignee: Guibo Pan
> Priority: Major
> Labels: pull-request-available
>
> replace is an useful function for String.
> for example:
> {code:java}
> select replace("Hello World", "World", "Flink") // return "Hello Flink"
> select replace("ababab", "abab", "z") // return "zab"
> {code}
> It is supported as a UDF in Hive, more details please see[1]
> [1]:
> https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringFunctions
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)