Hi Timo, thanks for the discussion.

It seems to reach an agreement regarding #3 that <1> Module name should
better be a simple identifier rather than a string literal. <2> Property
`type` is redundant and should be removed, and mapping will rely on the
module name because loading a module multiple times just using a different
module name doesn't make much sense. <3> We should migrate to the newer API
rather than the deprecated `TableFactory` class.

Regarding #1, I think the point lies in whether changing the resolution
order implies an `unload` operation explicitly (i.e., users could sense
it). What do others think?

Best,
Jane

On Mon, Feb 1, 2021 at 6:41 PM Timo Walther <twal...@apache.org> wrote:

> IMHO I would rather unload the not mentioned modules. The statement
> expresses `USE` that implicilty implies that the other modules are "not
> used". What do others think?
>
> Regards,
> Timo
>
>
> On 01.02.21 11:28, Jane Chan wrote:
> > Hi Jark and Rui,
> >
> > Thanks for the discussions.
> >
> > Regarding #1, I'm fine with `USE MODULES` syntax, and
> >
> >> It can be interpreted as "setting the current order of modules", which
> is
> >> similar to "setting the current catalog" for `USE CATALOG`.
> >>
> > I would like to confirm that the unmentioned modules remain in the same
> > relative order? E.g., if there are three loaded modules `X`, `Y`, `Z`,
> then
> > `USE MODULES Y, Z` means shifting the order to `Y`, `Z`, `X`.
> >
> > Regarding #3, I'm fine with mapping modules purely by name, and I think
> > Jark raised a good point on making the module name a simple identifier
> > instead of a string literal. For backward compatibility, since we haven't
> > supported this syntax yet, the affected users are those who defined
> modules
> > in the YAML configuration file. Maybe we can eliminate the 'type' from
> the
> > 'requiredContext' to make it optional. Thus the proposed mapping
> mechanism
> > could use the module name to lookup the suitable factory,  and in the
> > meanwhile updating documentation to encourage users to simplify their
> YAML
> > configuration. And in the long run, we can deprecate the 'type'.
> >
> > Best,
> > Jane
> >
> > On Mon, Feb 1, 2021 at 4:19 PM Rui Li <lirui.fu...@gmail.com> wrote:
> >
> >> Thanks Jane for starting the discussion.
> >>
> >> Regarding #1, I also prefer `USE MODULES` syntax. It can be interpreted
> as
> >> "setting the current order of modules", which is similar to "setting the
> >> current catalog" for `USE CATALOG`.
> >>
> >> Regarding #3, I'm fine to map modules purely by name because I think it
> >> satisfies all the use cases we have at hand. But I guess we need to make
> >> sure we're backward compatible, i.e. users don't need to change their
> yaml
> >> files to configure the modules.
> >>
> >> On Mon, Feb 1, 2021 at 3:10 PM Jark Wu <imj...@gmail.com> wrote:
> >>
> >>> Thanks Jane for the summary and starting the discussion in the mailing
> >>> list.
> >>>
> >>> Here are my thoughts:
> >>>
> >>> 1) syntax to reorder modules
> >>> I agree with Rui Li it would be quite useful if we can have some syntax
> >> to
> >>> reorder modules.
> >>> I slightly prefer `USE MODULES x, y, z` than `RELOAD MODULES x, y, z`,
> >>> because USE has a more sense of effective and specifying ordering, than
> >>> RELOAD.
> >>>  From my feeling, RELOAD just means we unregister and register x,y,z
> >> modules
> >>> again,
> >>> it sounds like other registered modules are still in use and in the
> >> order.
> >>>
> >>> 3) mapping modules purely by name
> >>> This can definitely improve the usability of loading modules, because
> >>> the 'type=' property
> >>> looks really redundant. We can think of this as a syntax sugar that the
> >>> default type value is the module name.
> >>> And we can support to specify 'type=' property in the future to allow
> >>> multiple modules for one module type.
> >>>
> >>> Besides, I would like to mention one more change, that the module name
> >>> proposed in FLIP-68 is a string literal.
> >>> But I think we are all on the same page to change it into a simple
> >>> (non-compound) identifier.
> >>>
> >>> LOAD/UNLOAD MODULE 'core'
> >>> ==>
> >>> LOAD/UNLOAD MODULE core
> >>>
> >>>
> >>> Best,
> >>> Jark
> >>>
> >>>
> >>> On Sat, 30 Jan 2021 at 04:00, Jane Chan <qingyue....@gmail.com> wrote:
> >>>
> >>>> Hi everyone,
> >>>>
> >>>> I would like to start a discussion on FLINK-21045 [1] about supporting
> >>>> `LOAD MODULE` and `UNLOAD MODULE` SQL syntax. It's first proposed by
> >>>> FLIP-68 [2] as following.
> >>>>
> >>>> -- load a module with the given name and append it to the end of the
> >>> module
> >>>> list
> >>>> LOAD MODULE 'name' [WITH ('type'='xxx', 'prop'='myProp', ...)]
> >>>>
> >>>> --unload a module by name from the module list and other modules
> remain
> >>> in
> >>>> the same relative positions
> >>>> UNLOAD MODULE 'name'
> >>>>
> >>>> After a round of discussion on the Jira ticket, it seems some
> >> unanswered
> >>>> questions need more opinions and suggestions.
> >>>>
> >>>> 1. The way to redefine resolution order easily
> >>>>
> >>>>      Rui Li suggested introducing `USE MODULES` and adding similar
> >>>> functionality to the API because
> >>>>
> >>>>>   1) It's very tedious to unload old modules just to reorder them.
> >>>>
> >>>>   2) Users may not even know how to "re-load" an old module if it was
> >> not
> >>>>> initially loaded by the user, e.g. don't know which type to use.
> >>>>
> >>>>
> >>>>      Jane Chan wondered that module is not like the catalog which has
> a
> >>>> concept of namespace could specify, and `USE` sounds like a
> >>>> mutual-exclusive concept.
> >>>>      Maybe `RELOAD MODULES` can express upgrading the priority of the
> >>> loaded
> >>>> module(s).
> >>>>
> >>>>
> >>>> 2. `LOAD/UNLOAD MODULE` v.s. `CREATE/DROP MODULE` syntax
> >>>>      Jark Wu and Nicholas Jiang proposed to use `CREATE/DROP MODULE`
> >>> instead
> >>>> of `LOAD/UNLOAD MODULE` because
> >>>>
> >>>>>   1) From a pure SQL user's perspective, maybe `CREATE MODULE + USE
> >>>> MODULE`
> >>>>> is easier to use rather than `LOAD/UNLOAD`.
> >>>>>   2) This will be very similar to what the catalog used now.
> >>>>
> >>>>
> >>>>    Timo Walther would rather stick to the agreed design because
> >>>> loading/unloading modules is a concept known from kernels etc.
> >>>>
> >>>> 3. Simplify the module design by mapping modules purely by name
> >>>>
> >>>> LOAD MODULE geo_utils
> >>>> LOAD MODULE hive WITH ('version'='2.1')  -- no dedicated
> >>> 'type='/'module='
> >>>> but allow only 1 module to be loaded parameterized
> >>>> UNLOAD hive
> >>>> USE MODULES hive, core
> >>>>
> >>>>
> >>>> Please find more details in the reference link. Looking forward to
> your
> >>>> feedback.
> >>>>
> >>>> [1] https://issues.apache.org/jira/browse/FLINK-21045#
> >>>> <
> >>>>
> >>>
> >>
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-68%3A+Extend+Core+Table+System+with+Pluggable+Modules
> >>>>>
> >>>> [2]
> >>>>
> >>>>
> >>>
> >>
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-68%3A+Extend+Core+Table+System+with+Pluggable+Modules
> >>>>
> >>>> Best,
> >>>> Jane
> >>>>
> >>>
> >>
> >>
> >> --
> >> Best regards!
> >> Rui Li
> >>
> >
>
>

Reply via email to