I also like the 'System' keyword. I think we can assume we reached
consensus on this topic.

On Sat, 21 Sep 2019, 06:37 Xuefu Z, <usxu...@gmail.com> wrote:

> +1 for using the keyword "SYSTEM". Thanks to Timo for chiming in!
>
> --Xuefu
>
> On Fri, Sep 20, 2019 at 3:28 PM Timo Walther <twal...@apache.org> wrote:
>
> > Hi everyone,
> >
> > sorry, for the late replay. I give also +1 for option #2. Thus, I guess
> > we have a clear winner.
> >
> > I would also like to find a better keyword/syntax for this statement.
> > Esp. the BUILTIN keyword can confuse people, because it could be written
> > as BUILTIN, BUILDIN, BUILT_IN, or BUILD_IN. And we would need to
> > introduce a new reserved keyword in the parser which affects also
> > non-DDL queries. How about:
> >
> > CREATE TEMPORARY SYSTEM FUNCTION xxx
> >
> > The SYSTEM keyword is already a reserved keyword and in FLIP-66 we are
> > discussing to prefix some of the function with a SYSTEM_ prefix like
> > SYSTEM_WATERMARK. Also SQL defines syntax like "FOR SYSTEM_TIME AS OF".
> >
> > What do you think?
> >
> > Thanks,
> > Timo
> >
> >
> > On 20.09.19 05:45, Bowen Li wrote:
> > > Another reason I prefer "CREATE TEMPORARY BUILTIN FUNCTION" over "ALTER
> > > BUILTIN FUNCTION xxx TEMPORARILY" is - what if users want to drop the
> > > temporary built-in function in the same session? With the former one,
> > they
> > > can run something like "DROP TEMPORARY BUILTIN FUNCTION"; With the
> latter
> > > one, I'm not sure how users can "restore" the original builtin function
> > > easily from an "altered" function without introducing further
> nonstandard
> > > SQL syntax.
> > >
> > > Also please pardon me as I realized using net may not be a good idea...
> > I'm
> > > trying to fit this vote into cases listed in Flink Bylaw [1].
> > >
> > > >From the following result, the majority seems to be #2 too as it has
> the
> > > most approval so far and doesn't have strong "-1".
> > >
> > > #1:3 (+1), 1 (0), 4(-1)
> > > #2:4(0), 3 (+1), 1(+0.5)
> > >         * Dawid -1/0 depending on keyword
> > > #3:2(+1), 3(-1), 3(0)
> > >
> > > [1]
> > >
> >
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=120731026
> > >
> > > On Thu, Sep 19, 2019 at 10:30 AM Bowen Li <bowenl...@gmail.com> wrote:
> > >
> > >> Hi,
> > >>
> > >> Thanks everyone for your votes. I summarized the result as following:
> > >>
> > >> #1:3 (+1), 1 (0), 4(-1)     - net: -1
> > >> #2:4(0), 2 (+1), 1(+0.5)  - net: +2.5
> > >>          Dawid -1/0 depending on keyword
> > >> #3:2(+1), 3(-1), 3(0)       - net: -1
> > >>
> > >> Given the result, I'd like to change my vote for #2 from 0 to +1, to
> > make
> > >> it a stronger case with net +3.5. So the votes so far are:
> > >>
> > >> #1:3 (+1), 1 (0), 4(-1)     - net: -1
> > >> #2:4(0), 3 (+1), 1(+0.5)  - net: +3.5
> > >>          Dawid -1/0 depending on keyword
> > >> #3:2(+1), 3(-1), 3(0)       - net: -1
> > >>
> > >> What do you think? Do you think we can conclude with this result? Or
> > would
> > >> you like to take it as a formal FLIP vote with 3 days voting period?
> > >>
> > >> BTW, I'd prefer "CREATE TEMPORARY BUILTIN FUNCTION" over "ALTER
> BUILTIN
> > >> FUNCTION xxx TEMPORARILY" because
> > >> 1. the syntax is more consistent with "CREATE FUNCTION" and "CREATE
> > >> TEMPORARY FUNCTION"
> > >> 2. "ALTER BUILTIN FUNCTION xxx TEMPORARILY" implies it alters a
> built-in
> > >> function but it actually doesn't, the logic only creates a temp
> function
> > >> with higher priority than that built-in function in ambiguous
> resolution
> > >> order; and it would behave inconsistently with "ALTER FUNCTION".
> > >>
> > >>
> > >>
> > >> On Thu, Sep 19, 2019 at 2:58 AM Fabian Hueske <fhue...@gmail.com>
> > wrote:
> > >>
> > >>> I agree, it's very similar from the implementation point of view and
> > the
> > >>> implications.
> > >>>
> > >>> IMO, the difference is mostly on the mental model for the user.
> > >>> Instead of having a special class of temporary functions that have
> > >>> precedence over builtin functions it suggests to temporarily change
> > >>> built-in functions.
> > >>>
> > >>> Fabian
> > >>>
> > >>> Am Do., 19. Sept. 2019 um 11:52 Uhr schrieb Kurt Young <
> > ykt...@gmail.com
> > >>>> :
> > >>>> Hi Fabian,
> > >>>>
> > >>>> I think it's almost the same with #2 with different keyword:
> > >>>>
> > >>>> CREATE TEMPORARY BUILTIN FUNCTION xxx
> > >>>>
> > >>>> Best,
> > >>>> Kurt
> > >>>>
> > >>>>
> > >>>> On Thu, Sep 19, 2019 at 5:50 PM Fabian Hueske <fhue...@gmail.com>
> > >>> wrote:
> > >>>>> Hi,
> > >>>>>
> > >>>>> I thought about it a bit more and think that there is some good
> value
> > >>> in
> > >>>> my
> > >>>>> last proposal.
> > >>>>>
> > >>>>> A lot of complexity comes from the fact that we want to allow
> > >>> overriding
> > >>>>> built-in functions which are differently addressed as other
> functions
> > >>>> (and
> > >>>>> db objects).
> > >>>>> We could just have "CREATE TEMPORARY FUNCTION" do exactly the same
> > >>> thing
> > >>>> as
> > >>>>> "CREATE FUNCTION" and treat both functions exactly the same except
> > >>> that:
> > >>>>> 1) temp functions disappear at the end of the session
> > >>>>> 2) temp function are resolved before other functions
> > >>>>>
> > >>>>> This would be Dawid's proposal from the beginning of this thread
> (in
> > >>> case
> > >>>>> you still remember... ;-) )
> > >>>>>
> > >>>>> Temporarily overriding built-in functions would be supported with
> an
> > >>>>> explicit command like
> > >>>>>
> > >>>>> ALTER BUILTIN FUNCTION xxx TEMPORARILY AS ...
> > >>>>>
> > >>>>> This would also address the concerns about accidentally changing
> the
> > >>>>> semantics of built-in functions.
> > >>>>> IMO, it can't get much more explicit than the above command.
> > >>>>>
> > >>>>> Sorry for bringing up a new option in the middle of the discussion,
> > >>> but
> > >>>> as
> > >>>>> I said, I think it has a bunch of benefits and I don't see major
> > >>>> drawbacks
> > >>>>> (maybe you do?).
> > >>>>>
> > >>>>> What do you think?
> > >>>>>
> > >>>>> Fabian
> > >>>>>
> > >>>>> Am Do., 19. Sept. 2019 um 11:24 Uhr schrieb Fabian Hueske <
> > >>>>> fhue...@gmail.com
> > >>>>>> :
> > >>>>>> Hi everyone,
> > >>>>>>
> > >>>>>> I thought again about option #1 and something that I don't like is
> > >>> that
> > >>>>>> the resolved address of xyz is different in "CREATE FUNCTION xyz"
> > >>> and
> > >>>>>> "CREATE TEMPORARY FUNCTION xyz".
> > >>>>>> IMO, adding the keyword "TEMPORARY" should only change the
> > >>> lifecycle of
> > >>>>>> the function, but not where it is located. This implicitly changed
> > >>>>> location
> > >>>>>> might be confusing for users.
> > >>>>>> After all, a temp function should behave pretty much like any
> other
> > >>>>>> function, except for the fact that it disappears when the session
> is
> > >>>>> closed.
> > >>>>>> Approach #2 with the additional keyword would make that pretty
> > >>> clear,
> > >>>>> IMO.
> > >>>>>> However, I neither like GLOBAL (for reasons mentioned by Dawid) or
> > >>>>> BUILDIN
> > >>>>>> (we are not adding a built-in function).
> > >>>>>> So I'd be OK with #2 if we find a good keyword. In fact, approach
> #2
> > >>>>> could
> > >>>>>> also be an alias for approach #3 to avoid explicit specification
> of
> > >>> the
> > >>>>>> system catalog/db.
> > >>>>>>
> > >>>>>> Approach #3 would be consistent with other db objects and the
> > >>> "CREATE
> > >>>>>> FUNCTION" statement.
> > >>>>>> Adding system catalog/db seems rather complex, but then again how
> > >>> often
> > >>>>> do
> > >>>>>> we expect users to override built-in functions? If this becomes a
> > >>> major
> > >>>>>> issue, we can still add option #2 as an alias.
> > >>>>>>
> > >>>>>> Not sure what's the best approach from an internal point of view,
> > >>> but I
> > >>>>>> certainly think that consistent behavior is important.
> > >>>>>> Hence my votes are:
> > >>>>>>
> > >>>>>> -1 for #1
> > >>>>>> 0 for #2
> > >>>>>> 0 for #3
> > >>>>>>
> > >>>>>> Btw. Did we consider a completely separate command for overriding
> > >>>>> built-in
> > >>>>>> functions like "ALTER BUILTIN FUNCTION xxx TEMPORARILY AS ..."?
> > >>>>>>
> > >>>>>> Cheers, Fabian
> > >>>>>>
> > >>>>>>
> > >>>>>> Am Do., 19. Sept. 2019 um 11:03 Uhr schrieb JingsongLee
> > >>>>>> <lzljs3620...@aliyun.com.invalid>:
> > >>>>>>
> > >>>>>>> I know Hive and Spark can shadow built-in functions by temporary
> > >>>>> function.
> > >>>>>>> Mysql, Oracle, Sql server can not shadow.
> > >>>>>>> User can use full names to access functions instead of shadowing.
> > >>>>>>>
> > >>>>>>> So I think it is a completely new thing, and the direct way to
> deal
> > >>>> with
> > >>>>>>> new things is to add new grammar. So,
> > >>>>>>> +1 for #2, +0 for #3, -1 for #1
> > >>>>>>>
> > >>>>>>> Best,
> > >>>>>>> Jingsong Lee
> > >>>>>>>
> > >>>>>>>
> > >>>>>>>
> ------------------------------------------------------------------
> > >>>>>>> From:Kurt Young <ykt...@gmail.com>
> > >>>>>>> Send Time:2019年9月19日(星期四) 16:43
> > >>>>>>> To:dev <dev@flink.apache.org>
> > >>>>>>> Subject:Re: [DISCUSS] FLIP-57 - Rework FunctionCatalog
> > >>>>>>>
> > >>>>>>> And let me make my vote complete:
> > >>>>>>>
> > >>>>>>> -1 for #1
> > >>>>>>> +1 for #2 with different keyword
> > >>>>>>> -0 for #3
> > >>>>>>>
> > >>>>>>> Best,
> > >>>>>>> Kurt
> > >>>>>>>
> > >>>>>>>
> > >>>>>>> On Thu, Sep 19, 2019 at 4:40 PM Kurt Young <ykt...@gmail.com>
> > >>> wrote:
> > >>>>>>>> Looks like I'm the only person who is willing to +1 to #2 for
> now
> > >>>> :-)
> > >>>>>>>> But I would suggest to change the keyword from GLOBAL to
> > >>>>>>>> something like BUILTIN.
> > >>>>>>>>
> > >>>>>>>> I think #2 and #3 are almost the same proposal, just with
> > >>> different
> > >>>>>>>> format to indicate whether it want to override built-in
> > >>> functions.
> > >>>>>>>> My biggest reason to choose it is I want this behavior be
> > >>> consistent
> > >>>>>>>> with temporal tables. I will give some examples to show the
> > >>> behavior
> > >>>>>>>> and also make sure I'm not misunderstanding anything here.
> > >>>>>>>>
> > >>>>>>>> For most DBs, when user create a temporary table with:
> > >>>>>>>>
> > >>>>>>>> CREATE TEMPORARY TABLE t1
> > >>>>>>>>
> > >>>>>>>> It's actually equivalent with:
> > >>>>>>>>
> > >>>>>>>> CREATE TEMPORARY TABLE `curent_db`.t1
> > >>>>>>>>
> > >>>>>>>> If user change current database, they will not be able to access
> > >>> t1
> > >>>>>>> without
> > >>>>>>>> fully qualified name, .i.e db1.t1 (assuming db1 is current
> > >>> database
> > >>>>> when
> > >>>>>>>> this temporary table is created).
> > >>>>>>>>
> > >>>>>>>> Only #2 and #3 followed this behavior and I would vote for this
> > >>>> since
> > >>>>>>> this
> > >>>>>>>> makes such behavior consistent through temporal tables and
> > >>>> functions.
> > >>>>>>>> Why I'm not voting for #3 is a special catalog and database just
> > >>>> looks
> > >>>>>>> very
> > >>>>>>>> hacky to me. It gave a imply that our built-in functions saved
> > >>> at a
> > >>>>>>>> special
> > >>>>>>>> catalog and database, which is actually not. Introducing a
> > >>> dedicated
> > >>>>>>>> keyword
> > >>>>>>>> like CREATE TEMPORARY BUILTIN FUNCTION looks more clear and
> > >>>>>>>> straightforward. One can argue that we should avoid introducing
> > >>> new
> > >>>>>>>> keyword,
> > >>>>>>>> but it's also very rare that a system can overwrite built-in
> > >>>>> functions.
> > >>>>>>>> Since we
> > >>>>>>>> decided to support this, introduce a new keyword is not a big
> > >>> deal
> > >>>>> IMO.
> > >>>>>>>> Best,
> > >>>>>>>> Kurt
> > >>>>>>>>
> > >>>>>>>>
> > >>>>>>>> On Thu, Sep 19, 2019 at 3:07 PM Piotr Nowojski <
> > >>> pi...@ververica.com
> > >>>>>>>> wrote:
> > >>>>>>>>
> > >>>>>>>>> Hi,
> > >>>>>>>>>
> > >>>>>>>>> It is a quite long discussion to follow and I hope I didn’t
> > >>>>>>> misunderstand
> > >>>>>>>>> anything. From the proposals presented by Xuefu I would vote:
> > >>>>>>>>>
> > >>>>>>>>> -1 for #1 and #2
> > >>>>>>>>> +1 for #3
> > >>>>>>>>>
> > >>>>>>>>> Besides #3 being IMO more general and more consistent, having
> > >>>>> qualified
> > >>>>>>>>> names (#3) would help/make easier for someone to use cross
> > >>>>>>>>> databases/catalogs queries (joining multiple data
> sets/streams).
> > >>>> For
> > >>>>>>>>> example with some functions to manipulate/clean up/convert the
> > >>>> stored
> > >>>>>>> data
> > >>>>>>>>> in different catalogs registered in the respective catalogs.
> > >>>>>>>>>
> > >>>>>>>>> Piotrek
> > >>>>>>>>>
> > >>>>>>>>>> On 19 Sep 2019, at 06:35, Jark Wu <imj...@gmail.com> wrote:
> > >>>>>>>>>>
> > >>>>>>>>>> I agree with Xuefu that inconsistent handling with all the
> > >>> other
> > >>>>>>>>> objects is
> > >>>>>>>>>> not a big problem.
> > >>>>>>>>>>
> > >>>>>>>>>> Regarding to option#3, the special "system.system" namespace
> > >>> may
> > >>>>>>> confuse
> > >>>>>>>>>> users.
> > >>>>>>>>>> Users need to know the set of built-in function names to know
> > >>>> when
> > >>>>> to
> > >>>>>>>>> use
> > >>>>>>>>>> "system.system" namespace.
> > >>>>>>>>>> What will happen if user registers a non-builtin function name
> > >>>>> under
> > >>>>>>> the
> > >>>>>>>>>> "system.system" namespace?
> > >>>>>>>>>> Besides, I think it doesn't solve the "explode" problem I
> > >>>> mentioned
> > >>>>>>> at
> > >>>>>>>>> the
> > >>>>>>>>>> beginning of this thread.
> > >>>>>>>>>>
> > >>>>>>>>>> So here is my vote:
> > >>>>>>>>>>
> > >>>>>>>>>> +1 for #1
> > >>>>>>>>>> 0 for #2
> > >>>>>>>>>> -1 for #3
> > >>>>>>>>>>
> > >>>>>>>>>> Best,
> > >>>>>>>>>> Jark
> > >>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>> On Thu, 19 Sep 2019 at 08:38, Xuefu Z <usxu...@gmail.com>
> > >>> wrote:
> > >>>>>>>>>>> @Dawid, Re: we also don't need additional referencing the
> > >>>>>>>>> specialcatalog
> > >>>>>>>>>>> anywhere.
> > >>>>>>>>>>>
> > >>>>>>>>>>> True. But once we allow such reference, then user can do so
> > >>> in
> > >>>> any
> > >>>>>>>>> possible
> > >>>>>>>>>>> place where a function name is expected, for which we have to
> > >>>>>>> handle.
> > >>>>>>>>>>> That's a big difference, I think.
> > >>>>>>>>>>>
> > >>>>>>>>>>> Thanks,
> > >>>>>>>>>>> Xuefu
> > >>>>>>>>>>>
> > >>>>>>>>>>> On Wed, Sep 18, 2019 at 5:25 PM Dawid Wysakowicz <
> > >>>>>>>>>>> wysakowicz.da...@gmail.com>
> > >>>>>>>>>>> wrote:
> > >>>>>>>>>>>
> > >>>>>>>>>>>> @Bowen I am not suggesting introducing additional catalog. I
> > >>>>> think
> > >>>>>>> we
> > >>>>>>>>>>> need
> > >>>>>>>>>>>> to get rid of the current built-in catalog.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> @Xuefu in option #3 we also don't need additional
> > >>> referencing
> > >>>> the
> > >>>>>>>>> special
> > >>>>>>>>>>>> catalog anywhere else besides in the CREATE statement. The
> > >>>>>>> resolution
> > >>>>>>>>>>>> behaviour is exactly the same in both options.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> On Thu, 19 Sep 2019, 08:17 Xuefu Z, <usxu...@gmail.com>
> > >>> wrote:
> > >>>>>>>>>>>>> Hi Dawid,
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> "GLOBAL" is a temporary keyword that was given to the
> > >>>> approach.
> > >>>>> It
> > >>>>>>>>> can
> > >>>>>>>>>>> be
> > >>>>>>>>>>>>> changed to something else for better.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> The difference between this and the #3 approach is that we
> > >>>> only
> > >>>>>>> need
> > >>>>>>>>>>> the
> > >>>>>>>>>>>>> keyword for this create DDL. For other places (such as
> > >>>> function
> > >>>>>>>>>>>>> referencing), no keyword or special namespace is needed.
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>> Xuefu
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> On Wed, Sep 18, 2019 at 4:32 PM Dawid Wysakowicz <
> > >>>>>>>>>>>>> wysakowicz.da...@gmail.com>
> > >>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Hi,
> > >>>>>>>>>>>>>> I think it makes sense to start voting at this point.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Option 1: Only 1-part identifiers
> > >>>>>>>>>>>>>> PROS:
> > >>>>>>>>>>>>>> - allows shadowing built-in functions
> > >>>>>>>>>>>>>> CONS:
> > >>>>>>>>>>>>>> - incosistent with all the other objects, both permanent &
> > >>>>>>> temporary
> > >>>>>>>>>>>>>> - does not allow shadowing catalog functions
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Option 2: Special keyword for built-in function
> > >>>>>>>>>>>>>> I think this is quite similar to the special catalog/db.
> > >>> The
> > >>>>>>> thing I
> > >>>>>>>>>>> am
> > >>>>>>>>>>>>>> strongly against in this proposal is the GLOBAL keyword.
> > >>> This
> > >>>>>>>>> keyword
> > >>>>>>>>>>>>> has a
> > >>>>>>>>>>>>>> meaning in rdbms systems and means a function that is
> > >>> present
> > >>>>>>> for a
> > >>>>>>>>>>>>>> lifetime of a session in which it was created, but
> > >>> available
> > >>>> in
> > >>>>>>> all
> > >>>>>>>>>>>> other
> > >>>>>>>>>>>>>> sessions. Therefore I really don't want to use this
> > >>> keyword
> > >>>> in
> > >>>>> a
> > >>>>>>>>>>>>> different
> > >>>>>>>>>>>>>> context.
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Option 3: Special catalog/db
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> PROS:
> > >>>>>>>>>>>>>> - allows shadowing built-in functions
> > >>>>>>>>>>>>>> - allows shadowing catalog functions
> > >>>>>>>>>>>>>> - consistent with other objects
> > >>>>>>>>>>>>>> CONS:
> > >>>>>>>>>>>>>> - we introduce a special namespace for built-in functions
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> I don't see a problem with introducing the special
> > >>> namespace.
> > >>>>> In
> > >>>>>>> the
> > >>>>>>>>>>>> end
> > >>>>>>>>>>>>> it
> > >>>>>>>>>>>>>> is very similar to the keyword approach. In this case the
> > >>>>>>> catalog/db
> > >>>>>>>>>>>>>> combination would be the "keyword"
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Therefore my votes:
> > >>>>>>>>>>>>>> Option 1: -0
> > >>>>>>>>>>>>>> Option 2: -1 (I might change to +0 if we can come up with
> > >>> a
> > >>>>>>> better
> > >>>>>>>>>>>>> keyword)
> > >>>>>>>>>>>>>> Option 3: +1
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>> Dawid
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>
> > >>>>>>>>>>>>>> On Thu, 19 Sep 2019, 05:12 Xuefu Z, <usxu...@gmail.com>
> > >>>> wrote:
> > >>>>>>>>>>>>>>> Hi Aljoscha,
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Thanks for the summary and these are great questions to
> > >>> be
> > >>>>>>>>>>> answered.
> > >>>>>>>>>>>>> The
> > >>>>>>>>>>>>>>> answer to your first question is clear: there is a
> > >>> general
> > >>>>>>>>>>> agreement
> > >>>>>>>>>>>> to
> > >>>>>>>>>>>>>>> override built-in functions with temp functions.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> However, your second and third questions are sort of
> > >>>> related,
> > >>>>>>> as a
> > >>>>>>>>>>>>>> function
> > >>>>>>>>>>>>>>> reference can be either just function name (like "func")
> > >>> or
> > >>>> in
> > >>>>>>> the
> > >>>>>>>>>>>> form
> > >>>>>>>>>>>>>> or
> > >>>>>>>>>>>>>>> "cat.db.func". When a reference is just function name, it
> > >>>> can
> > >>>>>>> mean
> > >>>>>>>>>>>>>> either a
> > >>>>>>>>>>>>>>> built-in function or a function defined in the current
> > >>>> cat/db.
> > >>>>>>> If
> > >>>>>>>>>>> we
> > >>>>>>>>>>>>>>> support overriding a built-in function with a temp
> > >>> function,
> > >>>>>>> such
> > >>>>>>>>>>>>>>> overriding can also cover a function in the current
> > >>> cat/db.
> > >>>>>>>>>>>>>>> I think what Timo referred as "overriding a catalog
> > >>>> function"
> > >>>>>>>>>>> means a
> > >>>>>>>>>>>>>> temp
> > >>>>>>>>>>>>>>> function defined as "cat.db.func" overrides a catalog
> > >>>> function
> > >>>>>>>>>>> "func"
> > >>>>>>>>>>>>> in
> > >>>>>>>>>>>>>>> cat/db even if cat/db is not current. To support this,
> > >>> temp
> > >>>>>>>>>>> function
> > >>>>>>>>>>>>> has
> > >>>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>> be tied to a cat/db. What's why I said above that the 2nd
> > >>>> and
> > >>>>>>> 3rd
> > >>>>>>>>>>>>>> questions
> > >>>>>>>>>>>>>>> are related. The problem with such support is the
> > >>> ambiguity
> > >>>>> when
> > >>>>>>>>>>> user
> > >>>>>>>>>>>>>>> defines a function w/o namespace, "CREATE TEMPORARY
> > >>> FUNCTION
> > >>>>>>> func
> > >>>>>>>>>>>> ...".
> > >>>>>>>>>>>>>>> Here "func" can means a global temp function, or a temp
> > >>>>>>> function in
> > >>>>>>>>>>>>>> current
> > >>>>>>>>>>>>>>> cat/db. If we can assume the former, this creates an
> > >>>>>>> inconsistency
> > >>>>>>>>>>>>>> because
> > >>>>>>>>>>>>>>> "CREATE FUNCTION func" actually means a function in
> > >>> current
> > >>>>>>> cat/db.
> > >>>>>>>>>>>> If
> > >>>>>>>>>>>>> we
> > >>>>>>>>>>>>>>> assume the latter, then there is no way for user to
> > >>> create a
> > >>>>>>> global
> > >>>>>>>>>>>>> temp
> > >>>>>>>>>>>>>>> function.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Giving a special namespace for built-in functions may
> > >>> solve
> > >>>>> the
> > >>>>>>>>>>>>> ambiguity
> > >>>>>>>>>>>>>>> problem above, but it also introduces artificial
> > >>>>>>> catalog/database
> > >>>>>>>>>>>> that
> > >>>>>>>>>>>>>>> needs special treatment and pollutes the cleanness of
> > >>> the
> > >>>>>>> code. I
> > >>>>>>>>>>>>> would
> > >>>>>>>>>>>>>>> rather introduce a syntax in DDL to solve the problem,
> > >>> like
> > >>>>>>> "CREATE
> > >>>>>>>>>>>>>>> [GLOBAL] TEMPORARY FUNCTION func".
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Thus, I'd like to summarize a few candidate proposals for
> > >>>>> voting
> > >>>>>>>>>>>>>> purposes:
> > >>>>>>>>>>>>>>> 1. Support only global, temporary functions without
> > >>>> namespace.
> > >>>>>>> Such
> > >>>>>>>>>>>>> temp
> > >>>>>>>>>>>>>>> functions overrides built-in functions and catalog
> > >>> functions
> > >>>>> in
> > >>>>>>>>>>>> current
> > >>>>>>>>>>>>>>> cat/db. The resolution order is: temp functions ->
> > >>> built-in
> > >>>>>>>>>>> functions
> > >>>>>>>>>>>>> ->
> > >>>>>>>>>>>>>>> catalog functions. (Partially or fully qualified
> > >>> functions
> > >>>> has
> > >>>>>>> no
> > >>>>>>>>>>>>>>> ambiguity!)
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> 2. In addition to #1, support creating and referencing
> > >>>>> temporary
> > >>>>>>>>>>>>>> functions
> > >>>>>>>>>>>>>>> associated with a cat/db with "GLOBAL" qualifier in DDL
> > >>> for
> > >>>>>>> global
> > >>>>>>>>>>>> temp
> > >>>>>>>>>>>>>>> functions. The resolution order is: global temp
> > >>> functions ->
> > >>>>>>>>>>> built-in
> > >>>>>>>>>>>>>>> functions -> temp functions in current cat/db -> catalog
> > >>>>>>> function.
> > >>>>>>>>>>>>>>> (Resolution for partially or fully qualified function
> > >>>>> reference
> > >>>>>>> is:
> > >>>>>>>>>>>>> temp
> > >>>>>>>>>>>>>>> functions -> persistent functions.)
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> 3. In addition to #1, support creating and referencing
> > >>>>> temporary
> > >>>>>>>>>>>>>> functions
> > >>>>>>>>>>>>>>> associated with a cat/db with a special namespace for
> > >>>> built-in
> > >>>>>>>>>>>>> functions
> > >>>>>>>>>>>>>>> and global temp functions. The resolution is the same as
> > >>> #2,
> > >>>>>>> except
> > >>>>>>>>>>>>> that
> > >>>>>>>>>>>>>>> the special namespace might be prefixed to a reference
> > >>> to a
> > >>>>>>>>>>> built-in
> > >>>>>>>>>>>>>>> function or global temp function. (In absence of the
> > >>> special
> > >>>>>>>>>>>> namespace,
> > >>>>>>>>>>>>>> the
> > >>>>>>>>>>>>>>> resolution order is the same as in #2.)
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> My personal preference is #1, given the unknown use case
> > >>> and
> > >>>>>>>>>>>> introduced
> > >>>>>>>>>>>>>>> complexity for #2 and #3. However, #2 is an acceptable
> > >>>>>>> alternative.
> > >>>>>>>>>>>>> Thus,
> > >>>>>>>>>>>>>>> my votes are:
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> +1 for #1
> > >>>>>>>>>>>>>>> +0 for #2
> > >>>>>>>>>>>>>>> -1 for #3
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Everyone, please cast your vote (in above format
> > >>> please!),
> > >>>> or
> > >>>>>>> let
> > >>>>>>>>>>> me
> > >>>>>>>>>>>>> know
> > >>>>>>>>>>>>>>> if you have more questions or other candidates.
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>>>> Xuefu
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> On Wed, Sep 18, 2019 at 6:42 AM Aljoscha Krettek <
> > >>>>>>>>>>>> aljos...@apache.org>
> > >>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Hi,
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> I think this discussion and the one for FLIP-64 are very
> > >>>>>>>>>>> connected.
> > >>>>>>>>>>>>> To
> > >>>>>>>>>>>>>>>> resolve the differences, think we have to think about
> > >>> the
> > >>>>> basic
> > >>>>>>>>>>>>>>> principles
> > >>>>>>>>>>>>>>>> and find consensus there. The basic questions I see are:
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> - Do we want to support overriding builtin functions?
> > >>>>>>>>>>>>>>>> - Do we want to support overriding catalog functions?
> > >>>>>>>>>>>>>>>> - And then later: should temporary functions be tied to
> > >>> a
> > >>>>>>>>>>>>>>>> catalog/database?
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> I don’t have much to say about these, except that we
> > >>> should
> > >>>>>>>>>>>> somewhat
> > >>>>>>>>>>>>>>> stick
> > >>>>>>>>>>>>>>>> to what the industry does. But I also understand that
> > >>> the
> > >>>>>>>>>>> industry
> > >>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>> already very divided on this.
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>> Aljoscha
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> On 18. Sep 2019, at 11:41, Jark Wu <imj...@gmail.com>
> > >>>>> wrote:
> > >>>>>>>>>>>>>>>>> Hi,
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>> +1 to strive for reaching consensus on the remaining
> > >>>> topics.
> > >>>>>>> We
> > >>>>>>>>>>>> are
> > >>>>>>>>>>>>>>>> close to the truth. It will waste a lot of time if we
> > >>>> resume
> > >>>>>>> the
> > >>>>>>>>>>>>> topic
> > >>>>>>>>>>>>>>> some
> > >>>>>>>>>>>>>>>> time later.
> > >>>>>>>>>>>>>>>>> +1 to “1-part/override” and I’m also fine with Timo’s
> > >>>>>>>>>>>> “cat.db.fun”
> > >>>>>>>>>>>>>> way
> > >>>>>>>>>>>>>>>> to override a catalog function.
> > >>>>>>>>>>>>>>>>> I’m not sure about “system.system.fun”, it introduces a
> > >>>>>>>>>>>> nonexistent
> > >>>>>>>>>>>>>> cat
> > >>>>>>>>>>>>>>>> & db? And we still need to do special treatment for the
> > >>>>>>> dedicated
> > >>>>>>>>>>>>>>>> system.system cat & db?
> > >>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>> Jark
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> 在 2019年9月18日,06:54,Timo Walther <twal...@apache.org>
> > >>> 写道:
> > >>>>>>>>>>>>>>>>>> Hi everyone,
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> @Xuefu: I would like to avoid adding too many things
> > >>>>>>>>>>>>> incrementally.
> > >>>>>>>>>>>>>>>> Users should be able to override all catalog objects
> > >>>>>>> consistently
> > >>>>>>>>>>>>>>> according
> > >>>>>>>>>>>>>>>> to FLIP-64 (Support for Temporary Objects in Table
> > >>> module).
> > >>>>> If
> > >>>>>>>>>>>>>> functions
> > >>>>>>>>>>>>>>>> are treated completely different, we need more code and
> > >>>>> special
> > >>>>>>>>>>>>> cases.
> > >>>>>>>>>>>>>>> From
> > >>>>>>>>>>>>>>>> an implementation perspective, this topic only affects
> > >>> the
> > >>>>>>> lookup
> > >>>>>>>>>>>>> logic
> > >>>>>>>>>>>>>>>> which is rather low implementation effort which is why I
> > >>>>> would
> > >>>>>>>>>>> like
> > >>>>>>>>>>>>> to
> > >>>>>>>>>>>>>>>> clarify the remaining items. As you said, we have a
> > >>> slight
> > >>>>>>>>>>> consenus
> > >>>>>>>>>>>>> on
> > >>>>>>>>>>>>>>>> overriding built-in functions; we should also strive for
> > >>>>>>> reaching
> > >>>>>>>>>>>>>>> consensus
> > >>>>>>>>>>>>>>>> on the remaining topics.
> > >>>>>>>>>>>>>>>>>> @Dawid: I like your idea as it ensures registering
> > >>>> catalog
> > >>>>>>>>>>>> objects
> > >>>>>>>>>>>>>>>> consistent and the overriding of built-in functions more
> > >>>>>>>>>>> explicit.
> > >>>>>>>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>>>>>>> Timo
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>> On 17.09.19 11:59, kai wang wrote:
> > >>>>>>>>>>>>>>>>>>> hi, everyone
> > >>>>>>>>>>>>>>>>>>> I think this flip is very meaningful. it supports
> > >>>>> functions
> > >>>>>>>>>>>> that
> > >>>>>>>>>>>>>> can
> > >>>>>>>>>>>>>>> be
> > >>>>>>>>>>>>>>>>>>> shared by different catalogs and dbs, reducing the
> > >>>>>>>>>>> duplication
> > >>>>>>>>>>>> of
> > >>>>>>>>>>>>>>>> functions.
> > >>>>>>>>>>>>>>>>>>> Our group based on flink's sql parser module
> > >>> implements
> > >>>>>>>>>>> create
> > >>>>>>>>>>>>>>> function
> > >>>>>>>>>>>>>>>>>>> feature, stores the parsed function metadata and
> > >>> schema
> > >>>>> into
> > >>>>>>>>>>>>> mysql,
> > >>>>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>>>>> also customizes the catalog, customizes sql-client to
> > >>>>>>> support
> > >>>>>>>>>>>>>> custom
> > >>>>>>>>>>>>>>>>>>> schemas and functions. Loaded, but the function is
> > >>>>> currently
> > >>>>>>>>>>>>>> global,
> > >>>>>>>>>>>>>>>> and is
> > >>>>>>>>>>>>>>>>>>> not subdivided according to catalog and db.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> In addition, I very much hope to participate in the
> > >>>>>>>>>>> development
> > >>>>>>>>>>>>> of
> > >>>>>>>>>>>>>>> this
> > >>>>>>>>>>>>>>>>>>> flip, I have been paying attention to the community,
> > >>> but
> > >>>>>>>>>>> found
> > >>>>>>>>>>>> it
> > >>>>>>>>>>>>>> is
> > >>>>>>>>>>>>>>>> more
> > >>>>>>>>>>>>>>>>>>> difficult to join.
> > >>>>>>>>>>>>>>>>>>> thank you.
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>> Xuefu Z <usxu...@gmail.com> 于2019年9月17日周二 上午11:19写道:
> > >>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> Thanks to Tmo and Dawid for sharing thoughts.
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> It seems to me that there is a general consensus on
> > >>>>> having
> > >>>>>>>>>>>> temp
> > >>>>>>>>>>>>>>>> functions
> > >>>>>>>>>>>>>>>>>>>> that have no namespaces and overwrite built-in
> > >>>> functions.
> > >>>>>>>>>>> (As
> > >>>>>>>>>>>> a
> > >>>>>>>>>>>>>> side
> > >>>>>>>>>>>>>>>> note
> > >>>>>>>>>>>>>>>>>>>> for comparability, the current user defined
> > >>> functions
> > >>>> are
> > >>>>>>>>>>> all
> > >>>>>>>>>>>>>>>> temporary and
> > >>>>>>>>>>>>>>>>>>>> having no namespaces.)
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> Nevertheless, I can also see the merit of having
> > >>>>> namespaced
> > >>>>>>>>>>>> temp
> > >>>>>>>>>>>>>>>> functions
> > >>>>>>>>>>>>>>>>>>>> that can overwrite functions defined in a specific
> > >>>>> cat/db.
> > >>>>>>>>>>>>>> However,
> > >>>>>>>>>>>>>>>> this
> > >>>>>>>>>>>>>>>>>>>> idea appears orthogonal to the former and can be
> > >>> added
> > >>>>>>>>>>>>>>> incrementally.
> > >>>>>>>>>>>>>>>>>>>> How about we first implement non-namespaced temp
> > >>>>> functions
> > >>>>>>>>>>> now
> > >>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>> leave
> > >>>>>>>>>>>>>>>>>>>> the door open for namespaced ones for later
> > >>> releases as
> > >>>>> the
> > >>>>>>>>>>>>>>>> requirement
> > >>>>>>>>>>>>>>>>>>>> might become more crystal? This also helps shorten
> > >>> the
> > >>>>>>>>>>> debate
> > >>>>>>>>>>>>> and
> > >>>>>>>>>>>>>>>> allow us
> > >>>>>>>>>>>>>>>>>>>> to make some progress along this direction.
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> As to Dawid's idea of having a dedicated cat/db to
> > >>> host
> > >>>>> the
> > >>>>>>>>>>>>>>> temporary
> > >>>>>>>>>>>>>>>> temp
> > >>>>>>>>>>>>>>>>>>>> functions that don't have namespaces, my only
> > >>> concern
> > >>>> is
> > >>>>>>> the
> > >>>>>>>>>>>>>> special
> > >>>>>>>>>>>>>>>>>>>> treatment for a cat/db, which makes code less
> > >>> clean, as
> > >>>>>>>>>>>> evident
> > >>>>>>>>>>>>> in
> > >>>>>>>>>>>>>>>> treating
> > >>>>>>>>>>>>>>>>>>>> the built-in catalog currently.
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>>>>>>>>> Xuefiu
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> On Mon, Sep 16, 2019 at 5:07 PM Dawid Wysakowicz <
> > >>>>>>>>>>>>>>>>>>>> wysakowicz.da...@gmail.com>
> > >>>>>>>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> Hi,
> > >>>>>>>>>>>>>>>>>>>>> Another idea to consider on top of Timo's
> > >>> suggestion.
> > >>>>> How
> > >>>>>>>>>>>> about
> > >>>>>>>>>>>>>> we
> > >>>>>>>>>>>>>>>> have a
> > >>>>>>>>>>>>>>>>>>>>> special namespace (catalog + database) for built-in
> > >>>>>>>>>>> objects?
> > >>>>>>>>>>>>> This
> > >>>>>>>>>>>>>>>> catalog
> > >>>>>>>>>>>>>>>>>>>>> would be invisible for users as Xuefu was
> > >>> suggesting.
> > >>>>>>>>>>>>>>>>>>>>> Then users could still override built-in
> > >>> functions, if
> > >>>>>>> they
> > >>>>>>>>>>>>> fully
> > >>>>>>>>>>>>>>>> qualify
> > >>>>>>>>>>>>>>>>>>>>> object with the built-in namespace, but by default
> > >>> the
> > >>>>>>>>>>> common
> > >>>>>>>>>>>>>> logic
> > >>>>>>>>>>>>>>>> of
> > >>>>>>>>>>>>>>>>>>>>> current dB & cat would be used.
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> CREATE TEMPORARY FUNCTION func ...
> > >>>>>>>>>>>>>>>>>>>>> registers temporary function in current cat & dB
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> CREATE TEMPORARY FUNCTION cat.db.func ...
> > >>>>>>>>>>>>>>>>>>>>> registers temporary function in cat db
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> CREATE TEMPORARY FUNCTION system.system.func ...
> > >>>>>>>>>>>>>>>>>>>>> Overrides built-in function with temporary function
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> The built-in/system namespace would not be writable
> > >>>> for
> > >>>>>>>>>>>>> permanent
> > >>>>>>>>>>>>>>>>>>>> objects.
> > >>>>>>>>>>>>>>>>>>>>> WDYT?
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> This way I think we can have benefits of both
> > >>>> solutions.
> > >>>>>>>>>>>>>>>>>>>>> Best,
> > >>>>>>>>>>>>>>>>>>>>> Dawid
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>> On Tue, 17 Sep 2019, 07:24 Timo Walther, <
> > >>>>>>>>>>> twal...@apache.org
> > >>>>>>>>>>>>>>> wrote:
> > >>>>>>>>>>>>>>>>>>>>>> Hi Bowen,
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> I understand the potential benefit of overriding
> > >>>>> certain
> > >>>>>>>>>>>>>> built-in
> > >>>>>>>>>>>>>>>>>>>>>> functions. I'm open to such a feature if many
> > >>> people
> > >>>>>>>>>>> agree.
> > >>>>>>>>>>>>>>>> However, it
> > >>>>>>>>>>>>>>>>>>>>>> would be great to still support overriding catalog
> > >>>>>>>>>>> functions
> > >>>>>>>>>>>>>> with
> > >>>>>>>>>>>>>>>>>>>>>> temporary functions in order to prototype a query
> > >>>> even
> > >>>>>>>>>>>> though
> > >>>>>>>>>>>>> a
> > >>>>>>>>>>>>>>>>>>>>>> catalog/database might not be available currently
> > >>> or
> > >>>>>>>>>>> should
> > >>>>>>>>>>>>> not
> > >>>>>>>>>>>>>> be
> > >>>>>>>>>>>>>>>>>>>>>> modified yet. How about we support both cases?
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> CREATE TEMPORARY FUNCTION abs
> > >>>>>>>>>>>>>>>>>>>>>> -> creates/overrides a built-in function and never
> > >>>>>>>>>>>> consideres
> > >>>>>>>>>>>>>>>> current
> > >>>>>>>>>>>>>>>>>>>>>> catalog and database; inconsistent with other DDL
> > >>> but
> > >>>>>>>>>>>>> acceptable
> > >>>>>>>>>>>>>>> for
> > >>>>>>>>>>>>>>>>>>>>>> functions I guess.
> > >>>>>>>>>>>>>>>>>>>>>> CREATE TEMPORARY FUNCTION cat.db.fun
> > >>>>>>>>>>>>>>>>>>>>>> -> creates/overrides a catalog function
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> Regarding "Flink don't have any other built-in
> > >>>> objects
> > >>>>>>>>>>>>> (tables,
> > >>>>>>>>>>>>>>>> views)
> > >>>>>>>>>>>>>>>>>>>>>> except functions", this might change in the near
> > >>>>> future.
> > >>>>>>>>>>>> Take
> > >>>>>>>>>>>>>>>>>>>>>> https://issues.apache.org/jira/browse/FLINK-13900
> > >>> as
> > >>>>> an
> > >>>>>>>>>>>>>> example.
> > >>>>>>>>>>>>>>>>>>>>>> Thanks,
> > >>>>>>>>>>>>>>>>>>>>>> Timo
> > >>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>> On 14.09.19 01:40, Bowen Li wrote:
> > >>>>>>>>>>>>>>>>>>>>>>> Hi Fabian,
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> Yes, I agree 1-part/no-override is the least
> > >>>> favorable
> > >>>>>>>>>>>> thus I
> > >>>>>>>>>>>>>>>> didn't
> > >>>>>>>>>>>>>>>>>>>>>>> include that as a voting option, and the
> > >>> discussion
> > >>>> is
> > >>>>>>>>>>>> mainly
> > >>>>>>>>>>>>>>>> between
> > >>>>>>>>>>>>>>>>>>>>>>> 1-part/override builtin and 3-part/not override
> > >>>>> builtin.
> > >>>>>>>>>>>>>>>>>>>>>>> Re > However, it means that temp functions are
> > >>>>>>>>>>> differently
> > >>>>>>>>>>>>>>> treated
> > >>>>>>>>>>>>>>>>>>>> than
> > >>>>>>>>>>>>>>>>>>>>>>> other db objects.
> > >>>>>>>>>>>>>>>>>>>>>>> IMO, the treatment difference results from the
> > >>> fact
> > >>>>> that
> > >>>>>>>>>>>>>>> functions
> > >>>>>>>>>>>>>>>>>>>> are
> > >>>>>>>>>>>>>>>>>>>>> a
> > >>>>>>>>>>>>>>>>>>>>>>> bit different from other objects - Flink don't
> > >>> have
> > >>>>> any
> > >>>>>>>>>>>> other
> > >>>>>>>>>>>>>>>>>>>> built-in
> > >>>>>>>>>>>>>>>>>>>>>>> objects (tables, views) except functions.
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>>>>> Cheers,
> > >>>>>>>>>>>>>>>>>>>>>>> Bowen
> > >>>>>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> --
> > >>>>>>>>>>>>>>>>>>>> Xuefu Zhang
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>>>>> "In Honey We Trust!"
> > >>>>>>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> --
> > >>>>>>>>>>>>>>> Xuefu Zhang
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>>> "In Honey We Trust!"
> > >>>>>>>>>>>>>>>
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> --
> > >>>>>>>>>>>>> Xuefu Zhang
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>>> "In Honey We Trust!"
> > >>>>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>> --
> > >>>>>>>>>>> Xuefu Zhang
> > >>>>>>>>>>>
> > >>>>>>>>>>> "In Honey We Trust!"
> > >>>>>>>>>>>
> > >>>>>>>>>
> >
> >
>
> --
> Xuefu Zhang
>
> "In Honey We Trust!"
>

Reply via email to