[ https://issues.apache.org/jira/browse/DRILL-4963?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15766917#comment-15766917 ]
Arina Ielchiieva commented on DRILL-4963: ----------------------------------------- All these errors are connected with lazy-init during query execution. For example, for current_date and abs function, lazy-init does not happen since they pass Calcite validation and then Drill determines that there is no matching function and throws Function Error. Since we expected only Calcite function not found exception, we did not catch Drill function error and did not start lazy-init. For log function situation is a little different, since there are many versions of log function but even though Drill didn't find exactly matching function, it decides that he can cast initial value to match found function signature. To solve this the best way is to check if remote and local registries are in sync before query execution. To make this check the most light-weight as possible, we store locally remote function registry version and compare it with actual remote function registry version. Only if versions do not match, we'll look for missing jars. > Issues when overloading Drill native functions with dynamic UDFs > ---------------------------------------------------------------- > > Key: DRILL-4963 > URL: https://issues.apache.org/jira/browse/DRILL-4963 > Project: Apache Drill > Issue Type: Bug > Components: Functions - Drill > Affects Versions: 1.9.0 > Reporter: Roman > Assignee: Arina Ielchiieva > Fix For: Future > > Attachments: subquery_udf-1.0-sources.jar, subquery_udf-1.0.jar, > test_overloading-1.0-sources.jar, test_overloading-1.0.jar > > > I created jar file which overloads 3 DRILL native functions > (LOG(VARCHAR-REQUIRED), CURRENT_DATE(VARCHAR-REQUIRED) and > ABS(VARCHAR-REQUIRED,VARCHAR-REQUIRED)) and registered it as dynamic UDF. > If I try to use my functions I will get errors: > {code:xml} > SELECT CURRENT_DATE('test') FROM (VALUES(1)); > {code} > Error: FUNCTION ERROR: CURRENT_DATE does not support operand types (CHAR) > SQL Query null > {code:xml} > SELECT ABS('test','test') FROM (VALUES(1)); > {code} > Error: FUNCTION ERROR: ABS does not support operand types (CHAR,CHAR) > SQL Query null > {code:xml} > SELECT LOG('test') FROM (VALUES(1)); > {code} > Error: SYSTEM ERROR: DrillRuntimeException: Failure while materializing > expression in constant expression evaluator LOG('test'). Errors: > Error in expression at index -1. Error: Missing function implementation: > castTINYINT(VARCHAR-REQUIRED). Full expression: UNKNOWN EXPRESSION. > But if I rerun all this queries after "DrillRuntimeException", they will run > correctly. It seems that Drill have not updated the function signature before > that error. Also if I add jar as usual UDF (copy jar to > /drill_home/jars/3rdparty and restart drillbits), all queries will run > correctly without errors. -- This message was sent by Atlassian JIRA (v6.3.4#6332)