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

Jane Chan edited comment on FLINK-21045 at 1/29/21, 7:41 PM:
-------------------------------------------------------------

Hi [~jark], [~nicholasjiang], I apologized for the late reply. 

Before creating subtasks, I'd like to clarify this improvement's goal and raise 
some questions on non-trivial implementation details to ensure we're on the 
same page. Please correct me if I'm wrong.
h4. The goal of this improvement

Support the SQL syntax on module operation. To be specific, support `{{LOAD 
MODULE name [WITH (‘type’=’xxx’, 'prop'='myProp', ...)]`}} which corresponds to 
{{tableEnv.loadModule(name, module)}} and `{{UNLOAD MODULE name`}} which 
corresponds to {{tableEnv.unloadModule(name)}}.

According to FLIP-68
{quote}Objects in modules are loaded on demand instead of eagerly
{quote}
it requires all dependency jars to appear under classpath, and this improvement 
will not involve dynamic module jar loading.

 
h4. The ground truth
 # FLIP-68 proposed the SQL syntax`{{LOAD MODULE name [WITH (‘type’=’xxx’, 
'prop'='myProp', ...)] }}`
 # Currently, load an already-loaded module will throw an exception. (See 
[ModuleManager.java#L74|https://github.com/apache/flink/blob/master/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/module/ModuleManager.java#L74])

h4. My question

Based on this implementation, if module {{X}} has been loaded before(say define 
in the YAML file), should `{{LOAD MODULE X}}` throw an exception, too?  If so, 
it makes `{{LOAD MODULE name}}` less meaningful because <1> if the module is 
loaded before, an exception will be thrown. <2> if it's a new module, then 
without specifying properties the TableFactoryService cannot find the suitable 
factory.  Thus the optional `{{WITH}}` may be necessary instead? (Or throw an 
exception is ok?) On the other hand, if we want to describe an operation 
performed on module name only, is it possible to`{{RELOAD MODULE X}}` instead 
of `{{LOAD MODULE X}}`, which describes changing the resolution order of a 
loaded module {{X}}. (It may beyond the scope of this improvement, I'm just 
wondering).

Another question is currently {{SHOW MODULES}} is not supported by 
{{FlinkSqlParserImpl}} (FLINK-17396 tracks this), do we have plans to support 
it?

 

Best, Jane


was (Author: qingyue):
Hi [~jark], [~nicholasjiang], I apologized for the late reply. 

Before creating subtasks, I'd like to clarify this improvement's goal and raise 
some questions on non-trivial implementation details to ensure we're on the 
same page. Please correct me if I'm wrong.
h4. The goal of this improvement

Support the SQL syntax on module operation. To be specific, support `{{LOAD 
MODULE name [WITH (‘type’=’xxx’, 'prop'='myProp', ...)]`}} which corresponds to 
{{tableEnv.loadModule(name, module)}} and `{{UNLOAD MODULE name`}} which 
corresponds to {{tableEnv.unloadModule(name)}}.

Although
{quote}Objects in modules are loaded on demand instead of eagerly
{quote}
it requires all dependency jars to appear under classpath, and there's nothing 
to do with dynamic module jar loading.

 
h4. The ground truth
 # FLIP-68 proposed the SQL syntax`{{LOAD MODULE name [WITH (‘type’=’xxx’, 
'prop'='myProp', ...)] }}`
 # Currently, load an already-loaded module will throw an exception. (See 
[ModuleManager.java#L74|https://github.com/apache/flink/blob/master/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/module/ModuleManager.java#L74])

h4. My question

Based on this implementation, if module {{X}} has been loaded before(say define 
in the YAML file), should `{{LOAD MODULE X}}` throw an exception, too?  If so, 
it makes `{{LOAD MODULE name}}` less meaningful because the only feasible 
operation for `{{LOAD}}` is to load a new module. Thus the optional `{{WITH}}` 
may be necessary instead? (Or throw an exception is ok?) On the other hand, if 
we want to describe an operation performed on module name only, is it possible 
to`{{RELOAD MODULE X}}` instead of `{{LOAD MODULE X}}`, which describes 
changing the resolution order of a loaded module {{X}}. (It may beyond the 
scope of this improvement, I'm just wondering).

Another question is currently {{SHOW MODULES}} is not supported by 
{{FlinkSqlParserImpl}} (FLINK-17396 tracks this), do we have plans to support 
it?

 

Best, Jane

> Support 'load module' and 'unload module' SQL syntax
> ----------------------------------------------------
>
>                 Key: FLINK-21045
>                 URL: https://issues.apache.org/jira/browse/FLINK-21045
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table SQL / Planner
>    Affects Versions: 1.13.0
>            Reporter: Nicholas Jiang
>            Assignee: Jane Chan
>            Priority: Major
>             Fix For: 1.13.0
>
>
> At present, Flink SQL doesn't support the 'load module' and 'unload module' 
> SQL syntax. It's necessary for uses in the situation that users load and 
> unload user-defined module through table api or sql client.
> SQL syntax has been proposed in FLIP-68: 
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-68%3A+Extend+Core+Table+System+with+Pluggable+Modules



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to