After reading Kurt’s reasoning I’m bumping my vote for #2 from -1 to +0, or even +0.5, so my final vote is:
-1 for #1 +0.5 for #2 +1 for #3 Re confusion about “system_db”. I think quite a lot of DBs are storing some meta tables in some system and often hidden db/schema, so I don’t think that if we do the same with built in functions will be that big of a deal. In the end, both for #2 and #3 user will have to check in the documentation what’s the syntax for overriding built-in functions for the first time he will want to do it. Piotrek > On 19 Sep 2019, at 11:03, JingsongLee <lzljs3620...@aliyun.com.INVALID> wrote: > > 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!" >>>>> >>> >>>