[ https://issues.apache.org/jira/browse/DRILL-4726?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15486782#comment-15486782 ]
ASF GitHub Bot commented on DRILL-4726: --------------------------------------- Github user arina-ielchiieva commented on a diff in the pull request: https://github.com/apache/drill/pull/574#discussion_r78525988 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/DrillSqlWorker.java --- @@ -69,29 +72,43 @@ public static PhysicalPlan getPlan(QueryContext context, String sql, Pointer<Str final SqlHandlerConfig config = new SqlHandlerConfig(context, parser); switch(sqlNode.getKind()){ - case EXPLAIN: - handler = new ExplainHandler(config, textPlan); - break; - case SET_OPTION: - handler = new SetOptionHandler(context); - break; - case OTHER: - if(sqlNode instanceof SqlCreateTable) { - handler = ((DrillSqlCall)sqlNode).getSqlHandler(config, textPlan); + case EXPLAIN: + handler = new ExplainHandler(config, textPlan); break; - } - - if (sqlNode instanceof DrillSqlCall) { - handler = ((DrillSqlCall)sqlNode).getSqlHandler(config); + case SET_OPTION: + handler = new SetOptionHandler(context); break; - } - // fallthrough - default: - handler = new DefaultSqlHandler(config, textPlan); + case OTHER: + if(sqlNode instanceof SqlCreateTable) { + handler = ((DrillSqlCall)sqlNode).getSqlHandler(config, textPlan); + break; + } + + if (sqlNode instanceof DrillSqlCall) { + handler = ((DrillSqlCall)sqlNode).getSqlHandler(config); + break; + } + // fallthrough + default: + handler = new DefaultSqlHandler(config, textPlan); } try { - return handler.getPlan(sqlNode); + try { + return handler.getPlan(sqlNode); + } catch (UserException e) { + if (context.getOption(ExecConstants.DYNAMIC_UDF_SUPPORT_ENABLED).bool_val) { + final Throwable rootCause = ExceptionUtils.getRootCause(e); + if (rootCause instanceof SqlValidatorException + && StringUtils.contains(rootCause.getMessage(), "No match found for function signature")) { + if (context.getFunctionRegistry().loadRemoteFunctions()) { --- End diff -- Makes sense, I'll think how to do add such approach in existing code. May be I'll introduce local registry version. > Dynamic UDFs support > -------------------- > > Key: DRILL-4726 > URL: https://issues.apache.org/jira/browse/DRILL-4726 > Project: Apache Drill > Issue Type: New Feature > Affects Versions: 1.6.0 > Reporter: Arina Ielchiieva > Assignee: Arina Ielchiieva > Fix For: Future > > > Allow register UDFs without restart of Drillbits. > Design is described in document below: > https://docs.google.com/document/d/1FfyJtWae5TLuyheHCfldYUpCdeIezR2RlNsrOTYyAB4/edit?usp=sharing > -- This message was sent by Atlassian JIRA (v6.3.4#6332)