Thank you all for the discussion. I added a note that we might revisit the signature with an instance.
I started a separate voting thread for the current state of the FLIP. I will appreciate your votes. Best, Dawid On 11/10/2019 13:21, Jark Wu wrote: > Hi Timo, > > Sounds good to me. > > Thanks, > Jark > > On Fri, 11 Oct 2019 at 17:37, Timo Walther <twal...@apache.org> wrote: > >> Hi Jark, >> >> great to see that there is consensus on something like `CREATE FUNCTION >> bf1 WITH (precision=0.001)`. >> >> In the near future, there should be no difference between a catalog >> function and a temporary function. This should simplify the stack a lot. >> >> How about we postpone this topic after FLIP-65? I understand your points >> but would also like to have similar semantics for SQL and Table API. We >> can just skip the function part for now and also wait for the FLIP >> around the function DDL (FLINK-7151). I would suggest to mention both >> class and instance in Dawid's FLIP for now. >> >> Regards, >> Timo >> >> On 11.10.19 10:32, Jark Wu wrote: >>> Hi Timo, >>> >>> The reason to put the parameter in constructor instead of `eval` is that >>> 1) the initialization for the parameters may take long >>> 2) there might be a lot of parameters, it's verbose to specify them in >>> every where it's used. >>> >>> Having some syntax like `CREATE FUNCTION bf1 WITH (precision=0.001)` is >>> great. >>> For catalog functions, I totally agree with that. But for temporal >>> function, why do we have to enforce it is a class? >>> >From my understanding, temporal objects are stored in memory and will >> not >>> be serialized to catalogs. >>> >>> If we want to prohibit function instances, are we also planning to drop >> the >>> support of `table.select(bf1('a))` in Scala Table API? >>> >>> Regards, >>> Jark >>> >>> >>> On Fri, 11 Oct 2019 at 15:34, Timo Walther <twal...@apache.org> wrote: >>> >>>> Thanks for your feedback Kurt and Jark. >>>> >>>> I'm wondering why we allow setting `val bf1 = new BloomFilter(0.001)`, >>>> `val bf2 = new BloomFilter(0.005)`. This is not very SQL-like. >>>> >>>> Parameters should be passed when calling the function instead. >>>> >>>> Users can use the query itself to parametize the function: `SELECT >>>> bf(0.0001, a), bf(0.005, a)` >>>> >>>> >>>> If at all, we can think about a `CREATE FUNCTION bf1 WITH >>>> (precision=0.001)` DDL syntax. But with registering instances we might >>>> shoot ourselves in the foot in the future. >>>> >>>> Usually, function exist as classes, it seems unnatural to me that users >>>> need to instantiate the function first before registering it. >>>> >>>> >>>> What do think? >>>> >>>> Thanks, >>>> Timo >>>> >>>> On 11.10.19 05:10, Jark Wu wrote: >>>>> Hi, Timo >>>>> >>>>> Regarding to createTemporaryFunction, I agree with Kurt, we should >>>>> encourage the class way, but should keep the instance way. >>>>> The reason is that this is an important feature to support parameterize >>>>> function as you said, but this can't be addressed by global job >>>> parameters >>>>> and open() methods. >>>>> Because users may want to instantiate more than one instance, e.g. `val >>>> bf1 >>>>> = new BloomFilter(0.001)`, `val bf2 = new BloomFilter(0.005)`, and they >>>> are >>>>> used in one query. >>>>> >>>>> The another reason is that this can't make the function call string >>>>> serializable, because in the Scala Table API path, users can still pass >>>> in >>>>> a function instance, e.g. table.select(bf1('a)) >>>>> >>>>> Best, >>>>> Jark >>>>> >>>>> On Thu, 10 Oct 2019 at 23:09, Kurt Young <ykt...@gmail.com> wrote: >>>>> >>>>>> Regarding to createTemporaryFunction, could we just keep both >> choices? I >>>>>> agree >>>>>> we should encourage users to use the class, and it's the only choice >>>> when >>>>>> user >>>>>> using DDL. But for some Table API & SQL programs, I think it's >> actually >>>>>> more nature >>>>>> to use an object instead of use the classes. But this just depends on >>>>>> personal >>>>>> choices. One use case came to mind which might be affected by this is >>>> if we >>>>>> want >>>>>> to support some anonymous lambda functions as UDF. It will need such >>>> create >>>>>> function >>>>>> with objects support. >>>>>> >>>>>> Best, >>>>>> Kurt >>>>>> >>>>>> >>>>>> On Thu, Oct 10, 2019 at 4:51 PM Dawid Wysakowicz < >>>> dwysakow...@apache.org> >>>>>> wrote: >>>>>> >>>>>>> Thanks for the comments. >>>>>>> >>>>>>> @Timo I think your suggestion makes sense. I changed the signature to >>>>>>> >>>>>>> void createTemporaryFunction(String path, Class<? extends >>>>>> UserDefinedFunction> functionClass); >>>>>>> This will mean that after we make QueryOperations string serializable >>>> and >>>>>>> we expose the type inference in functions we will have only a single >>>>>> object >>>>>>> that cannot be persisted in a catalog and thus have only a >> "Temporary" >>>>>>> method: >>>>>>> >>>>>>> void createTemporaryView(String path, DataStream stream); >>>>>>> >>>>>>> I updated the FLIP page accordingly. I also listed explicitly methods >>>>>> that >>>>>>> we need to deprecate and added a note that the implementation of the >>>>>>> methods concerning UserDefinedFunctions has to be postponed until we >>>> have >>>>>>> type inference in place. >>>>>>> >>>>>>> As the voting period for FLIP-57 ended, I will start the VOTE thread >>>> for >>>>>>> FLIP-64 tomorrow morning, unless there are some objections until >> then. >>>>>>> Best, >>>>>>> >>>>>>> Dawid >>>>>>> >>>>>>> >>>>>>> On 10/10/2019 16:16, Kurt Young wrote: >>>>>>> >>>>>>> Thanks for the clarification Timo, that's sounds good to me. Let's >>>>>> continue >>>>>>> to discuss other things. >>>>>>> >>>>>>> Best, >>>>>>> Kurt >>>>>>> >>>>>>> >>>>>>> On Thu, Oct 10, 2019 at 4:14 PM Timo Walther <twal...@apache.org> < >>>>>> twal...@apache.org> wrote: >>>>>>> The purpose of ConnectTableDescriptor was to have a programmatic way >> of >>>>>>> expressing `CREATE TABLE` with JavaDocs and IDE support. But I agree >>>>>>> that it needs some rework in the future, once we have finalized the >> DDL >>>>>>> to ensure that both concepts are in sync. >>>>>>> >>>>>>> Regards, >>>>>>> Timo >>>>>>> >>>>>>> >>>>>>> On 10.10.19 16:08, Kurt Young wrote: >>>>>>> >>>>>>> Regarding to ConnectTableDescriptor, if in the end it becomes a >> builder >>>>>>> of CatalogTable, I would be ok with that. But it doesn't look like a >>>>>>> >>>>>>> builder >>>>>>> >>>>>>> now, it's more like another form of TableSource/TableSink. >>>>>>> >>>>>>> Best, >>>>>>> Kurt >>>>>>> >>>>>>> >>>>>>> On Thu, Oct 10, 2019 at 3:44 PM Timo Walther <twal...@apache.org> < >>>>>> twal...@apache.org> wrote: >>>>>>> Hi everyone, >>>>>>> >>>>>>> thanks for the great discussion with a good outcome. >>>>>>> >>>>>>> I have one last comment about: >>>>>>> >>>>>>> void createTemporaryFunction(String path, UserDefinedFunction >>>> function); >>>>>>> We should encourage users to register a class instead of an instance. >>>> We >>>>>>> should enforce a default constructor in the future. If we need >> metadata >>>>>>> or type inference, the planner can simply instantiate the class and >>>> call >>>>>>> the corresponding getters. If people would like to parameterize a >>>>>>> function, they can use global job parameters instead - which are >>>>>>> available in the open() method. >>>>>>> >>>>>>> I suggest: >>>>>>> >>>>>>> void createTemporaryFunction(String path, Class<? extends >>>>>>> UserDefinedFunction> functionClass); >>>>>>> >>>>>>> This is also closer to the SQL DDL that is about to be implemented >> in: >>>>>> https://issues.apache.org/jira/browse/FLINK-7151 >>>>>>> Thanks, >>>>>>> Timo >>>>>>> >>>>>>> >>>>>>> On 09.10.19 17:07, Bowen Li wrote: >>>>>>> >>>>>>> Hi Dawid, >>>>>>> >>>>>>> +1 for proposed changes >>>>>>> >>>>>>> On Wed, Oct 9, 2019 at 12:15 PM Dawid Wysakowicz < >>>>>>> >>>>>>> dwysakow...@apache.org >>>>>>> >>>>>>> wrote: >>>>>>> >>>>>>> >>>>>>> Sorry for a very delayed response. >>>>>>> >>>>>>> @Kurt Yes, this is the goal to have a function created like new >>>>>>> Function(...) also be wrapped into CatalogFunction. This would have >> to >>>>>>> be though a temporary function as we cannot represent that as a set >> of >>>>>>> properties. Similar to the createTemporaryView(DataStream stream). >>>>>>> >>>>>>> As for the ConnectTableDescriptor I agree this is very similar to >>>>>>> CatalogTable. I am not sure though if we should get rid of it. In the >>>>>>> end I see it as a builder for a CatalogTable, which is a slightly >> more >>>>>>> internal API, but we might revisit that some time in the future if we >>>>>>> find that it makes more sense. >>>>>>> >>>>>>> @All I updated the FLIP page with some more details from the outcome >>>>>>> >>>>>>> of >>>>>>> >>>>>>> the discussions around FLIP-57. Please take a look. I would like to >>>>>>> start a vote on this FLIP as soon as the vote on FLIP-57 goes >> through. >>>>>>> Best, >>>>>>> >>>>>>> Dawid >>>>>>> >>>>>>> >>>>>>> On 19/09/2019 09:24, Kurt Young wrote: >>>>>>> >>>>>>> IIUC it's good to see that both serializable (tables description from >>>>>>> >>>>>>> DDL) >>>>>>> >>>>>>> and unserializable (tables with DataStream underneath) tables are >>>>>>> >>>>>>> treated >>>>>>> >>>>>>> unify with CatalogTable. >>>>>>> >>>>>>> Can I also assume functions that either come from a function class >>>>>>> >>>>>>> (from >>>>>>> >>>>>>> DDL) >>>>>>> or function objects (newed by user) will also treated unify with >>>>>>> CatalogFunction? >>>>>>> >>>>>>> This will greatly simplify and unify current API level concepts and >>>>>>> >>>>>>> design. >>>>>>> >>>>>>> And it seems only one thing left, how do we deal with >>>>>>> ConnectTableDescriptor? >>>>>>> It's actually very similar with serializable CatalogTable, both carry >>>>>>> >>>>>>> some >>>>>>> >>>>>>> text >>>>>>> properties which even are the same. Is there any chance we can >>>>>>> >>>>>>> further >>>>>>> >>>>>>> unify >>>>>>> >>>>>>> this to CatalogTable? >>>>>>> >>>>>>> object >>>>>>> Best, >>>>>>> Kurt >>>>>>> >>>>>>> >>>>>>> On Thu, Sep 19, 2019 at 3:13 PM Jark Wu <imj...@gmail.com> < >>>>>> imj...@gmail.com> wrote: >>>>>>> Thanks Dawid for the design doc. >>>>>>> >>>>>>> In general, I’m +1 to the FLIP. >>>>>>> >>>>>>> >>>>>>> +1 to the single-string and parse way to express object path. >>>>>>> >>>>>>> +1 to deprecate registerTableSink & registerTableSource. >>>>>>> But I would suggest to provide an easy way to register a custom >>>>>>> source/sink before we drop them (this is another story). >>>>>>> Currently, it’s not easy to implement a custom connector descriptor. >>>>>>> >>>>>>> Best, >>>>>>> Jark >>>>>>> >>>>>>> >>>>>>> >>>>>>> 在 2019年9月19日,11:37,Dawid Wysakowicz <wysakowicz.da...@gmail.com> < >>>>>> wysakowicz.da...@gmail.com> >>>>>>> 写道: >>>>>>> >>>>>>> Hi JingsongLee, >>>>>>> From my understanding they can. Underneath they will be >>>>>>> >>>>>>> CatalogTables. >>>>>>> >>>>>>> The >>>>>>> >>>>>>> difference is the lifetime of the tables. Plus some of the user >>>>>>> >>>>>>> facing >>>>>>> >>>>>>> interfaces cannot be persisted e.g. datastream. Therefore we must >>>>>>> >>>>>>> have >>>>>>> >>>>>>> a >>>>>>> >>>>>>> separate methods for that. In the end the temporary tables are held >>>>>>> >>>>>>> in >>>>>>> >>>>>>> memory as CatalogTables. >>>>>>> Best, >>>>>>> Dawid >>>>>>> >>>>>>> On Thu, 19 Sep 2019, 10:08 JingsongLee, <lzljs3620...@aliyun.com >>>>>>> >>>>>>> .invalid> >>>>>>> >>>>>>> wrote: >>>>>>> >>>>>>> >>>>>>> Hi dawid: >>>>>>> Can temporary tables achieve the same capabilities as catalog >>>>>>> >>>>>>> table? >>>>>>> >>>>>>> like statistics: CatalogTableStatistics, CatalogColumnStatistics, >>>>>>> PartitionStatistics >>>>>>> like partition support: we have added some catalog equivalent >>>>>>> >>>>>>> interfaces >>>>>>> >>>>>>> on TableSource/TableSink: getPartitions, getPartitionFieldNames >>>>>>> Maybe it's not a good idea to add these interfaces to >>>>>>> TableSource/TableSink. What do you think? >>>>>>> >>>>>>> Best, >>>>>>> Jingsong Lee >>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------------------ >>>>>>> From:Kurt Young <ykt...@gmail.com> <ykt...@gmail.com> >>>>>>> Send Time:2019年9月18日(星期三) 17:54 >>>>>>> To:dev <dev@flink.apache.org> <dev@flink.apache.org> >>>>>>> Subject:Re: [DISCUSS] FLIP-64: Support for Temporary Objects in >>>>>>> >>>>>>> Table >>>>>>> >>>>>>> module >>>>>>> >>>>>>> Hi all, >>>>>>> >>>>>>> Sorry to join this party late. Big +1 to this flip, especially for >>>>>>> >>>>>>> the >>>>>>> >>>>>>> dropping >>>>>>> "registerTableSink & registerTableSource" part. These are indeed >>>>>>> >>>>>>> legacy >>>>>>> >>>>>>> and we should try to unify them through CatalogTable after we >>>>>>> >>>>>>> introduce >>>>>>> >>>>>>> the concept of Catalog. >>>>>>> >>>>>>> From my understanding, what we can registered should all be >>>>>>> >>>>>>> metadata, >>>>>>> >>>>>>> TableSource/TableSink should only be the one who is responsible to >>>>>>> >>>>>>> do >>>>>>> >>>>>>> the real work, i.e. reading and writing data according to the >>>>>>> >>>>>>> schema >>>>>>> >>>>>>> and >>>>>>> >>>>>>> other information like computed column, partition, .e.g. >>>>>>> >>>>>>> Best, >>>>>>> Kurt >>>>>>> >>>>>>> >>>>>>> On Wed, Sep 18, 2019 at 5:14 PM JingsongLee < >>>>>>> >>>>>>> lzljs3620...@aliyun.com >>>>>>> >>>>>>> .invalid> >>>>>>> wrote: >>>>>>> >>>>>>> >>>>>>> After some development and thinking, I have a general >>>>>>> >>>>>>> understanding. >>>>>>> >>>>>>> +1 to registering a source/sink does not fit into the SQL world. >>>>>>> I am OK to have a deprecated registerTemporarySource/Sink to >>>>>>> >>>>>>> compatible >>>>>>> >>>>>>> with old ways. >>>>>>> >>>>>>> Best, >>>>>>> Jingsong Lee >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------------------ >>>>>>> >>>>>>> From:Timo Walther <twal...@apache.org> <twal...@apache.org> >>>>>>> Send Time:2019年9月17日(星期二) 08:00 >>>>>>> To:dev <dev@flink.apache.org> <dev@flink.apache.org> >>>>>>> Subject:Re: [DISCUSS] FLIP-64: Support for Temporary Objects in >>>>>>> >>>>>>> Table >>>>>>> >>>>>>> module >>>>>>> >>>>>>> Hi Dawid, >>>>>>> >>>>>>> thanks for the design document. It fixes big concept gaps due to >>>>>>> historical reasons with proper support for serializability and >>>>>>> >>>>>>> catalog >>>>>>> >>>>>>> support in mind. >>>>>>> >>>>>>> I would not mind a registerTemporarySource/Sink, but the problem >>>>>>> >>>>>>> that I >>>>>>> >>>>>>> see is that many people think that this is the recommended way of >>>>>>> registering a table source/sink which is not true. We should >>>>>>> >>>>>>> guide >>>>>>> >>>>>>> users >>>>>>> >>>>>>> to either use connect() or DDL API which can be validated and >>>>>>> >>>>>>> stored >>>>>>> >>>>>>> in >>>>>>> >>>>>>> catalog. >>>>>>> >>>>>>> Also from a concept perspective, registering a source/sink does >>>>>>> >>>>>>> not >>>>>>> >>>>>>> fit >>>>>>> >>>>>>> into the SQL world. SQL does not know about source/sinks but only >>>>>>> >>>>>>> about >>>>>>> >>>>>>> tables. If the responsibility of a TableSource/TableSink is just >>>>>>> >>>>>>> a >>>>>>> >>>>>>> pure >>>>>>> >>>>>>> physical data consumer/producer that is not connected to the >>>>>>> >>>>>>> actual >>>>>>> >>>>>>> logical table schema, we would need a possibility of defining >>>>>>> >>>>>>> time >>>>>>> >>>>>>> attributes and interpreting/converting a changelog. This should >>>>>>> >>>>>>> be >>>>>>> >>>>>>> done >>>>>>> >>>>>>> by the framework with information from the DDL/connect() and not >>>>>>> >>>>>>> be >>>>>>> >>>>>>> defined in every table source. >>>>>>> >>>>>>> Regards, >>>>>>> Timo >>>>>>> >>>>>>> >>>>>>> On 09.09.19 14:16, JingsongLee wrote: >>>>>>> >>>>>>> Hi dawid: >>>>>>> >>>>>>> It is difficult to describe specific examples. >>>>>>> Sometimes users will generate some java converters through some >>>>>>> Java code, or generate some Java classes through third-party >>>>>>> libraries. Of course, these can be best done through >>>>>>> >>>>>>> properties. >>>>>>> >>>>>>> But this requires additional work from users.My suggestion is to >>>>>>> keep this Java instance class way that is user-friendly. >>>>>>> >>>>>>> Best, >>>>>>> Jingsong Lee >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------------------ >>>>>>> >>>>>>> From:Dawid Wysakowicz <dwysakow...@apache.org> < >> dwysakow...@apache.org >>>>>>> Send Time:2019年9月6日(星期五) 16:21 >>>>>>> To:dev <dev@flink.apache.org> <dev@flink.apache.org> >>>>>>> Subject:Re: [DISCUSS] FLIP-64: Support for Temporary Objects in >>>>>>> >>>>>>> Table >>>>>>> >>>>>>> module >>>>>>> >>>>>>> Hi all, >>>>>>> @Jingsong Could you elaborate a bit more what do you mean by >>>>>>> "some Connectors are difficult to convert all states to >>>>>>> >>>>>>> properties" >>>>>>> >>>>>>> All the Flink provided connectors will definitely be expressible >>>>>>> >>>>>>> with >>>>>>> >>>>>>> properties (In the end you should be able to use them from DDL). >>>>>>> >>>>>>> I >>>>>>> >>>>>>> think >>>>>>> >>>>>>> if >>>>>>> >>>>>>> a TableSource is complex enough that it handles filter push down, >>>>>>> >>>>>>> partition >>>>>>> >>>>>>> support etc. should rather be made available both from DDL & >>>>>>> >>>>>>> java/scala >>>>>>> >>>>>>> code. I'm happy to reconsider adding >>>>>>> >>>>>>> registerTemporaryTable(String >>>>>>> >>>>>>> path, >>>>>>> >>>>>>> TableSource source) if you have some concrete examples in mind. >>>>>>> >>>>>>> @Xuefu: We also considered the ObjectIdentifier (or actually >>>>>>> >>>>>>> introducing >>>>>>> >>>>>>> a new identifier representation to differentiate between resolved >>>>>>> >>>>>>> and >>>>>>> >>>>>>> unresolved identifiers) with the same concerns. We decided to >>>>>>> >>>>>>> suggest >>>>>>> >>>>>>> the >>>>>>> >>>>>>> string & parsing logic because of usability. >>>>>>> >>>>>>> tEnv.from("cat.db.table") >>>>>>> is shorter and easier to write than >>>>>>> tEnv.from(Identifier.for("cat", "db", "name") >>>>>>> And also implicitly solves the problem what happens if a user >>>>>>> >>>>>>> (e.g. >>>>>>> >>>>>>> used >>>>>>> >>>>>>> to other systems) uses that API in a following manner: >>>>>>> >>>>>>> tEnv.from(Identifier.for("db.name") >>>>>>> I'm happy to revisit it if the general consensus is that it's >>>>>>> >>>>>>> better >>>>>>> >>>>>>> to >>>>>>> >>>>>>> use the OO aproach. >>>>>>> >>>>>>> Best, >>>>>>> Dawid >>>>>>> >>>>>>> On 06/09/2019 10:00, Xuefu Z wrote: >>>>>>> >>>>>>> Thanks to Dawid for starting the discussion and writeup. It >>>>>>> >>>>>>> looks >>>>>>> >>>>>>> pretty >>>>>>> >>>>>>> good to me except that I'm a little concerned about the object >>>>>>> >>>>>>> reference >>>>>>> >>>>>>> and string parsing in the code, which seems to an anti-pattern >>>>>>> >>>>>>> to >>>>>>> >>>>>>> OOP. >>>>>>> >>>>>>> Have >>>>>>> >>>>>>> we considered using ObjectIdenitifier with optional catalog and >>>>>>> >>>>>>> db >>>>>>> >>>>>>> parts, >>>>>>> >>>>>>> esp. if we are worried about arguments of variable length or >>>>>>> >>>>>>> method >>>>>>> >>>>>>> overloading? It's quite likely that the result of string parsing >>>>>>> >>>>>>> is >>>>>>> >>>>>>> an >>>>>>> >>>>>>> ObjectIdentifier instance any way. >>>>>>> >>>>>>> Having string parsing logic in the code is a little dangerous as >>>>>>> >>>>>>> it >>>>>>> >>>>>>> duplicates part of the DDL/DML parsing, and they can easily get >>>>>>> >>>>>>> out >>>>>>> >>>>>>> of >>>>>>> >>>>>>> sync. >>>>>>> >>>>>>> Thanks, >>>>>>> Xuefu >>>>>>> >>>>>>> On Fri, Sep 6, 2019 at 1:57 PM JingsongLee < >>>>>>> >>>>>>> lzljs3620...@aliyun.com >>>>>>> >>>>>>> .invalid> >>>>>>> >>>>>>> wrote: >>>>>>> >>>>>>> >>>>>>> Thanks dawid, +1 for this approach. >>>>>>> >>>>>>> One concern is the removal of registerTableSink & >>>>>>> >>>>>>> registerTableSource >>>>>>> >>>>>>> in TableEnvironment. It has two alternatives: >>>>>>> 1.the properties approach (DDL, descriptor). >>>>>>> 2.from/toDataStream. >>>>>>> >>>>>>> #1 can only be properties, not java states, and some Connectors >>>>>>> are difficult to convert all states to properties. >>>>>>> #2 can contain java state. But can't use TableSource-related >>>>>>> >>>>>>> features, >>>>>>> >>>>>>> like project & filter push down, partition support, etc.. >>>>>>> >>>>>>> Any idea about this? >>>>>>> >>>>>>> Best, >>>>>>> Jingsong Lee >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> ------------------------------------------------------------------ >>>>>>> >>>>>>> From:Dawid Wysakowicz <dwysakow...@apache.org> < >> dwysakow...@apache.org >>>>>>> Send Time:2019年9月4日(星期三) 22:20 >>>>>>> To:dev <dev@flink.apache.org> <dev@flink.apache.org> >>>>>>> Subject:[DISCUSS] FLIP-64: Support for Temporary Objects in >>>>>>> >>>>>>> Table >>>>>>> >>>>>>> module >>>>>>> >>>>>>> Hi all, >>>>>>> As part of FLIP-30 a Catalog API was introduced that enables >>>>>>> >>>>>>> storing >>>>>>> >>>>>>> table >>>>>>> >>>>>>> meta objects permanently. At the same time the majority of >>>>>>> >>>>>>> current >>>>>>> >>>>>>> APIs >>>>>>> >>>>>>> create temporary objects that cannot be serialized. We should >>>>>>> >>>>>>> clarify >>>>>>> >>>>>>> the >>>>>>> >>>>>>> creation of meta objects (tables, views, functions) in a unified >>>>>>> >>>>>>> way. >>>>>>> >>>>>>> Another current problem in the API is that all the temporary >>>>>>> >>>>>>> objects >>>>>>> >>>>>>> are >>>>>>> >>>>>>> stored in a special built-in catalog, which is not very >>>>>>> >>>>>>> intuitive >>>>>>> >>>>>>> for >>>>>>> >>>>>>> many >>>>>>> >>>>>>> users, as they must be aware of that catalog to reference >>>>>>> >>>>>>> temporary >>>>>>> >>>>>>> objects. >>>>>>> >>>>>>> Lastly, different APIs have different ways of providing object >>>>>>> >>>>>>> paths: >>>>>>> >>>>>>> String path…, >>>>>>> String path, String pathContinued… >>>>>>> String name >>>>>>> We should choose one approach and unify it across all APIs. >>>>>>> I suggest a FLIP to address the above issues. >>>>>>> Looking forward to your opinions. >>>>>>> FLIP link: >>>>>>> >>>>>>> >>>>>>> >> https://cwiki.apache.org/confluence/display/FLINK/FLIP-64%3A+Support+for+Temporary+Objects+in+Table+module >>
signature.asc
Description: OpenPGP digital signature