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

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

vvysotskyi commented on a change in pull request #1527: DRILL-4456: Fix Hive 
translate UDF
URL: https://github.com/apache/drill/pull/1527#discussion_r231976803
 
 

 ##########
 File path: 
contrib/storage-hive/core/src/main/java/org/apache/drill/exec/expr/fn/HiveFunctionRegistry.java
 ##########
 @@ -119,10 +132,26 @@ public void register(DrillOperatorTable operatorTable) {
       nonDeterministicUDFs.add(clazz);
     }
 
+    names = renameUDF(names);
+
+    for (String name : names) {
+      methods.put(name.toLowerCase(), clazz);
+    }
+  }
 
-    for(int i=0; i<names.length;i++) {
-      methods.put(names[i].toLowerCase(), clazz);
+  /**
+   * Checks using predicate from {@link #FUNCTION_REPLACE_MAP}
+   * whether specified function names should be replaced
+   * with the names from the map.
+   */
+  private String[] renameUDF(String[] namesToCheck) {
 
 Review comment:
   Thanks, added.

----------------------------------------------------------------
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


> Hive translate function is not working
> --------------------------------------
>
>                 Key: DRILL-4456
>                 URL: https://issues.apache.org/jira/browse/DRILL-4456
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Functions - Hive
>    Affects Versions: 1.5.0
>            Reporter: Arina Ielchiieva
>            Assignee: Volodymyr Vysotskyi
>            Priority: Major
>             Fix For: 1.15.0
>
>
> In Hive "select translate(name, 'A', 'B') from users" works fine.
> But in Drill "select translate(name, 'A', 'B') from hive.`users`" returns the 
> following error:
> org.apache.drill.common.exceptions.UserRemoteException: PARSE ERROR: 
> Encountered "," at line 1, column 22. Was expecting one of: "USING" ... "NOT" 
> ... "IN" ... "BETWEEN" ... "LIKE" ... "SIMILAR" ... "=" ... ">" ... "<" ... 
> "<=" ... ">=" ... "<>" ... "+" ... "-" ... "*" ... "/" ... "||" ... "AND" ... 
> "OR" ... "IS" ... "MEMBER" ... "SUBMULTISET" ... "MULTISET" ... "[" ... "." 
> ... "(" ... while parsing SQL query: select translate(name, 'A', 'B') from 
> hive.users ^ [Error Id: ba21956b-3285-4544-b3b2-fab68b95be1f on 
> localhost:31010]
> Root cause:
> Calcite follows the standard SQL reference.
> SQL reference,  ISO/IEC 9075-2:2011(E), section 6.30
> <character transliteration> ::=
>   TRANSLATE <left paren> <character value expression>
> USING <transliteration name> <right paren>
> To fix:
> 1. add support to translate (expession, from_string, to_string) alternative 
> syntax
> 2. add unit test in org.apache.drill.exec.fn.hive.TestInbuiltHiveUDFs
> Changes can be made directly in Calcite and then upgrade to appropriate 
> Calcite version. 



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

Reply via email to