Besides, if we introduce the ILIKE, we should also add this feature for the previous SHOW with LIKE statements. They should be included in this FLIP.
Best, Jark > 2023年2月28日 17:40,Jark Wu <imj...@gmail.com> 写道: > > Hi Ran, > > Could you add descriptions about what’s the behavior and differences between > the LIKE and ILIKE? > > Besides, I don’t see the SHOW CONNECTOR syntax and description and how it > works in the FLIP. Is it intended to be included in this FLIP? > > Best, > Jark > > >> 2023年2月28日 10:58,Ran Tao <chucheng...@gmail.com> 写道: >> >> Hi, guys. thanks for advices. >> >> allow me to make a small summary: >> >> 1.Support ILIKE >> 2.Using catalog api to support show operations >> 3.Need a dedicated FLIP try to support INFORMATION_SCHEMA >> 4.Support SHOW CONNECTORS >> >> If there are no other questions, i will try to start a VOTE for this FLIP. >> WDYT? >> >> Best Regards, >> Ran Tao >> >> >> Sergey Nuyanzin <snuyan...@gmail.com> 于2023年2月27日周一 21:12写道: >> >>> Hi Jark, >>> >>> thanks for your comment. >>> >>>> Considering they >>>> are orthogonal and information schema requires more complex design and >>>> discussion, it deserves a separate FLIP >>> I'm ok with a separate FLIP for INFORMATION_SCHEMA. >>> >>>> Sergey, are you willing to contribute this FLIP? >>> Seems I need to have more research done for that. >>> I would try to help/contribute here >>> >>> >>> On Mon, Feb 27, 2023 at 3:46 AM Ran Tao <chucheng...@gmail.com> wrote: >>> >>>> HI, Jing. thanks. >>>> >>>> @about ILIKE, from my collections of some popular engines founds that >>> just >>>> snowflake has this syntax in show with filtering. >>>> do we need to support it? if yes, then current some existed show >>> operations >>>> need to be addressed either. >>>> @about ShowOperation with like. it's a good idea. yes, two parameters for >>>> constructor can work. thanks for your advice. >>>> >>>> >>>> Best Regards, >>>> Ran Tao >>>> >>>> >>>> Jing Ge <j...@ververica.com.invalid> 于2023年2月27日周一 06:29写道: >>>> >>>>> Hi, >>>>> >>>>> @Aitozi >>>>> >>>>> This is exactly why LoD has been introduced: to avoid exposing internal >>>>> structure(2nd and lower level API). >>>>> >>>>> @Jark >>>>> >>>>> IMHO, there is no conflict between LoD and "High power-to-weight ratio" >>>>> with the given example, List.subList() returns List interface itself, >>> no >>>>> internal or further interface has been exposed. After offering >>>>> tEvn.getCatalog(), "all" methods in Catalog Interface have been >>> provided >>>> by >>>>> TableEnvironment(via getCatalog()). From user's perspective and >>>> maintenance >>>>> perspective there is no/less difference between providing them directly >>>> via >>>>> TableEnvironment or via getCatalog(). They are all exposed. Using >>>>> getCatalog() will reduce the number of boring wrapper methods, but on >>> the >>>>> other hand not every method in Catalog needs to be exposed, so the >>> number >>>>> of wrapper methods would be limited/less, if we didn't expose Catalog. >>>>> Nevertheless, since we already offered getCatalog(), it makes sense to >>>>> continue using it. The downside is the learning effort for users - they >>>>> have to know that listDatabases() is hidden in Catalog, go to another >>>>> haystack and then find the needle in there. >>>>> >>>>> +1 for Information schema with a different FLIP. From a design >>>> perspective, >>>>> information schema should be the first choice for most cases and easy >>> to >>>>> use. Catalog, on the other hand, will be more powerful and offer more >>>>> advanced features. >>>>> >>>>> Best regards, >>>>> Jing >>>>> >>>>> >>>>> On Sat, Feb 25, 2023 at 3:57 PM Jark Wu <imj...@gmail.com> wrote: >>>>> >>>>>> Hi Sergey, >>>>>> >>>>>> I think INFORMATION_SCHEMA is a very interesting idea, and I hope we >>>> can >>>>>> support it. However, it doesn't conflict with the idea of auxiliary >>>>>> statements. I can see different benefits of them. The information >>>> schema >>>>>> provides powerful and flexible capabilities but needs to learn the >>>>> complex >>>>>> entity relationship[1]. The auxiliary SQL statements are super handy >>>> and >>>>>> can resolve most problems, but they offer limited features. >>>>>> >>>>>> I can see almost all the mature systems support both of them. I think >>>> it >>>>>> also makes sense to support both of them in Flink. Considering they >>>>>> are orthogonal and information schema requires more complex design >>> and >>>>>> discussion, it deserves a separate FLIP. Sergey, are you willing to >>>>>> contribute this FLIP? >>>>>> >>>>>> Best, >>>>>> Jark >>>>>> >>>>>> [1]: >>>>>> >>>>>> >>>>> >>>> >>> https://docs.databricks.com/sql/language-manual/sql-ref-information-schema.html >>>>>> >>>>>> >>>>>> On Fri, 24 Feb 2023 at 22:43, Ran Tao <chucheng...@gmail.com> wrote: >>>>>> >>>>>>> Thanks John. >>>>>>> >>>>>>> It seems that most people prefer the information_schema >>>> implementation. >>>>>>> information_schema does have more benefits (however, the show >>>> operation >>>>>> is >>>>>>> also an option and supplement). >>>>>>> Otherwise, the sql syntax and keywords may be changed frequently. >>>>>>> Of course, it will be more complicated than the extension of the >>> show >>>>>>> operation. >>>>>>> It is necessary to design various tables in information_schema, >>>> which >>>>>> may >>>>>>> take a period of effort. >>>>>>> >>>>>>> I will try to design the information_schema and integrate it with >>>>> flink. >>>>>>> This may be a relatively big feature for me. I hope you guys can >>> give >>>>>>> comments and opinions later. >>>>>>> Thank you all. >>>>>>> >>>>>>> Best Regards, >>>>>>> Ran Tao >>>>>>> >>>>>>> >>>>>>> John Roesler <vvcep...@apache.org> 于2023年2月24日周五 21:53写道: >>>>>>> >>>>>>>> Hello Ran, >>>>>>>> >>>>>>>> Thanks for the FLIP! >>>>>>>> >>>>>>>> Do you mind if we revisit the topic of doing this by adding an >>>>>>> Information >>>>>>>> schema? The SHOW approach requires modifying the parser/language >>>> for >>>>>>> every >>>>>>>> gap we identify. On the flip side, an Information schema is much >>>>> easier >>>>>>> to >>>>>>>> discover and remember how to use, and the ability to run queries >>> on >>>>> it >>>>>> is >>>>>>>> quite valuable for admins. It’s also better for Flink >>> maintainers, >>>>>>> because >>>>>>>> the information tables’ schemas can be evolved over time just >>> like >>>>>>> regular >>>>>>>> tables, whereas every change to a SHOW statement would be a >>>> breaking >>>>>>>> change. >>>>>>>> >>>>>>>> I understand that it may seem like a big effort, but we’re >>>> proposing >>>>>>> quite >>>>>>>> a big extension to the space of SHOW statement, so it seems >>>>> appropriate >>>>>>> to >>>>>>>> take the opportunity and migrate to a better framework rather >>> than >>>>>>>> incrementally building on (and tying us even more firmly to) the >>>>>> existing >>>>>>>> approach. >>>>>>>> >>>>>>>> Thanks for your consideration, >>>>>>>> John >>>>>>>> >>>>>>>> On Fri, Feb 24, 2023, at 05:58, Sergey Nuyanzin wrote: >>>>>>>>> thanks for explanation >>>>>>>>> >>>>>>>>>> But it's not clear to me what exactly >>>>>>>>>> you want to display? Is it the name of the plugin? >>>>>>>>> >>>>>>>>> I was thinking about name, type (source/sink) and may be >>> version >>>>> (not >>>>>>>> sure >>>>>>>>> if it's possible right now) >>>>>>>>> >>>>>>>>> On Fri, Feb 24, 2023 at 12:46 PM Ran Tao < >>> chucheng...@gmail.com> >>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi, Sergey. thanks. first step we can support filtering for >>> show >>>>>>>> operations >>>>>>>>>> in this FLIP try to align other engines. >>>>>>>>>> If we want to support describe other objects, of course we >>> need >>>> to >>>>>>>> design >>>>>>>>>> how to get these metadatas or informations and printAsStyle. >>> (So >>>>> it >>>>>>>> maybe >>>>>>>>>> need another FLIP for more details). >>>>>>>>>> >>>>>>>>>>> Does it make sense to add support for connectors e.g. show >>>>>>>>>>> {sink|source|all} connectors? >>>>>>>>>> I think we can support it, currently flink do support some >>>>>> operations >>>>>>>> only >>>>>>>>>> for flink itself such as showJobs. But it's not clear to me >>> what >>>>>>> exactly >>>>>>>>>> you want to display? Is it the name of the plugin? >>>>>>>>>> Just Like: >>>>>>>>>> Kafka >>>>>>>>>> Hudi >>>>>>>>>> Files >>>>>>>>>> >>>>>>>>>> Best Regards, >>>>>>>>>> Ran Tao >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Sergey Nuyanzin <snuyan...@gmail.com> 于2023年2月24日周五 19:11写道: >>>>>>>>>> >>>>>>>>>>> Thanks for driving the FLIP >>>>>>>>>>> >>>>>>>>>>> I have a couple of questions >>>>>>>>>>> Am I right that INFORMATION_SCHEMA mentioned by Timo[1] is >>>> out >>>>> of >>>>>>>> scope >>>>>>>>>> of >>>>>>>>>>> this FLIP? >>>>>>>>>>> I noticed there are some support of it in >>>>>>>> Spark[2]/Hive[3]/Snowflake[4] >>>>>>>>>> and >>>>>>>>>>> others >>>>>>>>>>> >>>>>>>>>>> Does it make sense to add support for connectors e.g. show >>>>>>>>>>> {sink|source|all} connectors? >>>>>>>>>>> >>>>>>>>>>> [1] >>>>>>> https://lists.apache.org/thread/2g108qlfwbhb56wnoc5qj0yq29dvq1vv >>>>>>>>>>> [2] https://issues.apache.org/jira/browse/SPARK-16452 >>>>>>>>>>> [3] https://issues.apache.org/jira/browse/HIVE-1010 >>>>>>>>>>> [4] https://docs.snowflake.com/en/sql-reference/info-schema >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Fri, Feb 24, 2023 at 4:19 AM Jark Wu <imj...@gmail.com> >>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi Jing, >>>>>>>>>>>> >>>>>>>>>>>>> we'd better reduce the dependency chain and follow the >>> Law >>>>> of >>>>>>>>>>>> Demeter(LoD, clean code). >>>>>>>>>>>>> Adding a new method in TableEnvironment is therefore >>>> better >>>>>> than >>>>>>>>>>> calling >>>>>>>>>>>> an API chain >>>>>>>>>>>> >>>>>>>>>>>> I think I don't fully agree that LoD is a good practice. >>>>>>> Actually, I >>>>>>>>>>> would >>>>>>>>>>>> prefer to keep the API clean and concise. >>>>>>>>>>>> This is also the Java Collection Framework design >>> principle >>>>> [1]: >>>>>>>> "High >>>>>>>>>>>> power-to-weight ratio". Otherwise, >>>>>>>>>>>> it will explode the API interfaces with different >>>> combinations >>>>>> of >>>>>>>>>>> methods. >>>>>>>>>>>> Currently, TableEnvironment >>>>>>>>>>>> already provides 60+ methods. >>>>>>>>>>>> >>>>>>>>>>>> IMO, with the increasing methods of accessing and >>>> manipulating >>>>>>>>>> metadata, >>>>>>>>>>>> they can be extracted to >>>>>>>>>>>> a separate interface, where we can add richer methods. >>> This >>>>> work >>>>>>>> can be >>>>>>>>>>>> aligned with the >>>>>>>>>>>> CatalogManager interface (FLIP-295) [2]. >>>>>>>>>>>> >>>>>>>>>>>> Best, >>>>>>>>>>>> Jark >>>>>>>>>>>> >>>>>>>>>>>> [1]: >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> https://stackoverflow.com/questions/7568819/why-no-tail-or-head-method-in-list-to-get-last-or-first-element >>>>>>>>>>>> [2]: >>>>>>>> https://lists.apache.org/thread/9bnjblgd9wvrl75lkm84oo654c4lqv70 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Fri, 24 Feb 2023 at 10:38, Aitozi < >>> gjying1...@gmail.com> >>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> Thanks for the nice proposal, Ran. >>>>>>>>>>>>> Regarding this api usage, I have some discussion >>> with >>>>>>> @twalthr >>>>>>>>>>> before >>>>>>>>>>>>> as here < >>>>>>>>>>>>> >>>>>>>> >>> https://github.com/apache/flink/pull/15137#issuecomment-1356124138 >>>>> >>>>>>>>>>>>> Personally, I think leaking the Catalog to the user side >>>> is >>>>>> not >>>>>>>>>>> suitable, >>>>>>>>>>>>> since there are some read/write operations in the >>> Catalog, >>>>> the >>>>>>>>>>>>> TableEnvironment#getCatalog will expose all of them to >>> the >>>>>> user >>>>>>>> side. >>>>>>>>>>> So >>>>>>>>>>>> I >>>>>>>>>>>>> learned to add a new api in TableEnvironment to reduce >>>>>> reliance >>>>>>> on >>>>>>>>>> the >>>>>>>>>>>>> current TableEnvironment#getCatalog. >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Aitozi >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Ran Tao <chucheng...@gmail.com> 于2023年2月23日周四 23:44写道: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi, JingSong, Jing. >>>>>>>>>>>>>> >>>>>>>>>>>>>> thank for sharing your opinions. >>>>>>>>>>>>>> >>>>>>>>>>>>>> What you say makes sense, both approaches have pros >>> and >>>>>> cons. >>>>>>>>>>>>>> >>>>>>>>>>>>>> If it is a modification of `TableEnvrionment`, such as >>>>>>>>>>>>>> listDatabases(catalog). It is actually consistent with >>>> the >>>>>>> other >>>>>>>>>>>>> overloaded >>>>>>>>>>>>>> methods before, >>>>>>>>>>>>>> and defining this method means that TableEnvrionment >>>> does >>>>>>>> provide >>>>>>>>>>> this >>>>>>>>>>>>>> capability (rather than relying on the functionality >>> of >>>>>>> another >>>>>>>>>>> class). >>>>>>>>>>>>>> The disadvantage is that api changes may be required, >>>> and >>>>>> may >>>>>>>>>>> continue >>>>>>>>>>>> to >>>>>>>>>>>>>> be modified in the future. >>>>>>>>>>>>>> But from the TableEnvrionment itself, it really >>> doesn't >>>>> pay >>>>>>>>>> attention >>>>>>>>>>>> to >>>>>>>>>>>>>> how the underlying layer is implemented. >>>>>>>>>>>>>> (Although it is actually taken from the catalogManager >>>> at >>>>>>>> present, >>>>>>>>>>> this >>>>>>>>>>>>> is >>>>>>>>>>>>>> another question) >>>>>>>>>>>>>> >>>>>>>>>>>>>> Judging from the current dependencies, >>>>> flink-table-api-java >>>>>>>>>> strongly >>>>>>>>>>>>> relies >>>>>>>>>>>>>> on flink-table-common to use various common classes >>> and >>>>>>>> interfaces, >>>>>>>>>>>>>> especially the catalog interface. >>>>>>>>>>>>>> So we can extract various metadata information in the >>>>>> catalog >>>>>>>>>> through >>>>>>>>>>>>>> `tEnv.getCatalog`. >>>>>>>>>>>>>> The advantage is that it will not cause api >>>> modification, >>>>>> but >>>>>>>> this >>>>>>>>>>>> method >>>>>>>>>>>>>> of use breaks LoD. >>>>>>>>>>>>>> In fact, the current flink-table-api-java design is >>>>>> completely >>>>>>>>>> bound >>>>>>>>>>> to >>>>>>>>>>>>> the >>>>>>>>>>>>>> catalog interface. >>>>>>>>>>>>>> >>>>>>>>>>>>>> If the mandatory modification of PublicApi is >>>> constrained >>>>>> (may >>>>>>>> be >>>>>>>>>>>>> modified >>>>>>>>>>>>>> again and later), I tend to use `tEnv.getCatalog` >>>>> directly, >>>>>>>>>> otherwise >>>>>>>>>>>>>> It would actually be more standard to add overloaded >>>>> methods >>>>>>> to >>>>>>>>>>>>>> `TableEnvrionment`. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Another question, can the later capabilities of >>>>>>>> TableEnvrionment be >>>>>>>>>>>>>> implemented through SupportXXX? >>>>>>>>>>>>>> In order to solve the problem that the method needs to >>>> be >>>>>>> added >>>>>>>> in >>>>>>>>>>> the >>>>>>>>>>>>>> future. This kind of usage occurs frequently in flink. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Looking forward to your other considerations, >>>>>>>>>>>>>> and also try to wait to see if there are other >>> relevant >>>>> API >>>>>>>>>> designers >>>>>>>>>>>> or >>>>>>>>>>>>>> committers to provide comments. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Best Regards, >>>>>>>>>>>>>> Ran Tao >>>>>>>>>>>>>> >>>>>>>>>>>>>> Jing Ge <j...@ververica.com.invalid> 于2023年2月23日周四 >>>>> 18:58写道: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Jingson, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks for sharing your thoughts. Please see my >>> reply >>>>>> below. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Thu, Feb 23, 2023 at 10:16 AM Jingsong Li < >>>>>>>>>>> jingsongl...@gmail.com >>>>>>>>>>>>> >>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Jing Ge, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> First, flink-table-common contains all common >>>> classes >>>>> of >>>>>>>> Flink >>>>>>>>>>>> Table, >>>>>>>>>>>>>>>> I think it is hard to bypass its dependence. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> If any time when we use flink-table-api-java, we >>> have >>>> to >>>>>>> cross >>>>>>>>>>>> through >>>>>>>>>>>>>>> flink-table-api-java and use flink-table-common, we >>>>> should >>>>>>>>>>> reconsider >>>>>>>>>>>>> the >>>>>>>>>>>>>>> design of these two modules and how >>> interfaces/classes >>>>> are >>>>>>>>>>> classified >>>>>>>>>>>>>> into >>>>>>>>>>>>>>> those modules. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Secondly, almost all methods in Catalog looks >>> useful >>>>> to >>>>>>> me, >>>>>>>> so >>>>>>>>>> if >>>>>>>>>>>> we >>>>>>>>>>>>>>>> are following LoD, we should add all methods again >>>> to >>>>>>>>>>>>>>>> TableEnvironment. I think it is redundant. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> That is the enlarged issue I mentioned previously. A >>>>>> simple >>>>>>>>>>> solution >>>>>>>>>>>> is >>>>>>>>>>>>>> to >>>>>>>>>>>>>>> move Catalog to the top level API. The fact is that >>> a >>>>>>> catalog >>>>>>>>>>> package >>>>>>>>>>>>>>> already exists in flink-table-api-java but the >>> Catalog >>>>>>>> interface >>>>>>>>>> is >>>>>>>>>>>> in >>>>>>>>>>>>>>> flink-table-common. I don't know the historical >>>> context >>>>> of >>>>>>>> this >>>>>>>>>>>> design. >>>>>>>>>>>>>>> Maybe you could share some insight with us? Thanks >>> in >>>>>>> advance. >>>>>>>>>>> Beyond >>>>>>>>>>>>>> that, >>>>>>>>>>>>>>> there should be other AOP options but need more time >>>> to >>>>>>>> figure it >>>>>>>>>>>> out. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> And, this API chain does not look deep. >>>>>>>>>>>>>>>> - >>>>>>>>>>> >>>>> "tEnv.getCatalog(tEnv.getCurrentCatalog()).get().listDatabases()" >>>>>>>>>>>>>>>> looks a little complicated. The complex part is >>>> ahead. >>>>>>>>>>>>>>>> - If we have a method to get Catalog directly, can >>>> be >>>>>>>> simplify >>>>>>>>>> to >>>>>>>>>>>>>>>> "tEnv.catalog().listDatabase()", this is simple. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Commonly, it will need more effort to always follow >>>> LoD, >>>>>> but >>>>>>>> for >>>>>>>>>>> the >>>>>>>>>>>>> top >>>>>>>>>>>>>>> level facade API like TableEnvironment, both the API >>>>>>>> developer, >>>>>>>>>> API >>>>>>>>>>>>>>> consumer and the project itself from a long-term >>>>>> perspective >>>>>>>> will >>>>>>>>>>>>> benefit >>>>>>>>>>>>>>> from sticking to LoD. Since we already have the >>>>>>>> getCatalog(String >>>>>>>>>>>>>> catalog) >>>>>>>>>>>>>>> method in TableEnvironment, it also makes sense to >>>>> follow >>>>>>> your >>>>>>>>>>>>>> suggestion, >>>>>>>>>>>>>>> if we only want to limit/avoid public API changes. >>> But >>>>>>> please >>>>>>>> be >>>>>>>>>>>> aware >>>>>>>>>>>>>> that >>>>>>>>>>>>>>> we will have all known long-term drawbacks because >>> of >>>>> LoD >>>>>>>>>>>>>>> violation, especially the cross modules violation. I >>>>> just >>>>>>>> checked >>>>>>>>>>> all >>>>>>>>>>>>>>> usages of getCatalog(String catalog) in the master >>>>> branch. >>>>>>>>>>> Currently >>>>>>>>>>>>>> there >>>>>>>>>>>>>>> are very limited calls. It is better to pay >>> attention >>>> to >>>>>> it >>>>>>>>>> before >>>>>>>>>>> it >>>>>>>>>>>>>> goes >>>>>>>>>>>>>>> worse. Just my 2 cents. :) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>> Jingsong >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Thu, Feb 23, 2023 at 4:47 PM Jing Ge >>>>>>>>>>> <j...@ververica.com.invalid >>>>>>>>>>>>> >>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi Jingson, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks for the knowledge sharing. IMHO, it looks >>>>> more >>>>>>>> like a >>>>>>>>>>>> design >>>>>>>>>>>>>>>>> guideline question than just avoiding public API >>>>>> change. >>>>>>>>>> Please >>>>>>>>>>>>>> correct >>>>>>>>>>>>>>>> me >>>>>>>>>>>>>>>>> if I'm wrong. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Catalog is in flink-table-common module and >>>>>>>> TableEnvironment >>>>>>>>>> is >>>>>>>>>>>> in >>>>>>>>>>>>>>>>> flink-table-api-java. Depending on how and where >>>>> those >>>>>>>>>> features >>>>>>>>>>>>>>> proposed >>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>> this FLIP will be used, we'd better reduce the >>>>>>> dependency >>>>>>>>>> chain >>>>>>>>>>>> and >>>>>>>>>>>>>>>> follow >>>>>>>>>>>>>>>>> the Law of Demeter(LoD, clean code) [1]. Adding >>> a >>>>> new >>>>>>>> method >>>>>>>>>> in >>>>>>>>>>>>>>>>> TableEnvironment is therefore better than >>> calling >>>> an >>>>>> API >>>>>>>>>> chain. >>>>>>>>>>>> It >>>>>>>>>>>>> is >>>>>>>>>>>>>>>> also >>>>>>>>>>>>>>>>> more user friendly for the caller, because there >>>> is >>>>> no >>>>>>>> need >>>>>>>>>> to >>>>>>>>>>>>>>> understand >>>>>>>>>>>>>>>>> the internal structure of the called API. The >>>>> downside >>>>>>> of >>>>>>>>>> doing >>>>>>>>>>>>> this >>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>> that we might have another issue with the >>> current >>>>>>>>>>>> TableEnvironment >>>>>>>>>>>>>>>> design - >>>>>>>>>>>>>>>>> the TableEnvironment interface got enlarged with >>>>> more >>>>>>>> wrapper >>>>>>>>>>>>>> methods. >>>>>>>>>>>>>>>> This >>>>>>>>>>>>>>>>> is a different issue that could be solved with >>>>>> improved >>>>>>>>>>>> abstraction >>>>>>>>>>>>>>>> design >>>>>>>>>>>>>>>>> in the future. After considering pros and cons, >>> if >>>>> we >>>>>>>> want to >>>>>>>>>>> add >>>>>>>>>>>>>> those >>>>>>>>>>>>>>>>> features now, I would prefer following LoD than >>>> API >>>>>>> chain >>>>>>>>>>> calls. >>>>>>>>>>>>>> WDYT? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>>>> Jing >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> [1] >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> https://hackernoon.com/object-oriented-tricks-2-law-of-demeter-4ecc9becad85 >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Thu, Feb 23, 2023 at 6:26 AM Ran Tao < >>>>>>>>>> chucheng...@gmail.com >>>>>>>>>>>> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi Jingsong. thanks. i got it. >>>>>>>>>>>>>>>>>> In this way, there is no need to introduce new >>>> API >>>>>>>> changes. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Best Regards, >>>>>>>>>>>>>>>>>> Ran Tao >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Jingsong Li <jingsongl...@gmail.com> >>>>> 于2023年2月23日周四 >>>>>>>>>> 12:26写道: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hi Ran, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> I mean we can just use >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>> >>> TableEnvironment.getCatalog(getCurrentCatalog).get().listDatabases(). >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> We don't need to provide new apis just for >>>>> utils. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>> Jingsong >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Thu, Feb 23, 2023 at 12:11 PM Ran Tao < >>>>>>>>>>>>> chucheng...@gmail.com> >>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hi Jingsong, thanks. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> The implementation of these statements in >>>>>>>>>>>>> TableEnvironmentImpl >>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>> called >>>>>>>>>>>>>>>>>>>> through the catalog api. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> but it does support some new override >>>> methods >>>>> on >>>>>>> the >>>>>>>>>>>> catalog >>>>>>>>>>>>>> api >>>>>>>>>>>>>>>> side, >>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>> I will update it later. Thank you. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> e.g. >>>>>>>>>>>>>>>>>>>> TableEnvironmentImpl >>>>>>>>>>>>>>>>>>>> @Override >>>>>>>>>>>>>>>>>>>> public String[] listDatabases() { >>>>>>>>>>>>>>>>>>>> return catalogManager >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>> .getCatalog(catalogManager.getCurrentCatalog()) >>>>>>>>>>>>>>>>>>>> .get() >>>>>>>>>>>>>>>>>>>> .listDatabases() >>>>>>>>>>>>>>>>>>>> .toArray(new String[0]); >>>>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Best Regards, >>>>>>>>>>>>>>>>>>>> Ran Tao >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Jingsong Li <jingsongl...@gmail.com> >>>>>>> 于2023年2月23日周四 >>>>>>>>>>>> 11:47写道: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Thanks for the proposal. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> +1 for the proposal. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> I am confused about "Proposed >>>>> TableEnvironment >>>>>>> SQL >>>>>>>>>> API >>>>>>>>>>>>>>> Changes", >>>>>>>>>>>>>>>> can >>>>>>>>>>>>>>>>>>>>> we just use catalog api for this >>>>> requirement? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>>> Jingsong >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> On Thu, Feb 23, 2023 at 10:48 AM Jacky >>>> Lau < >>>>>>>>>>>>>>> liuyong...@gmail.com >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Hi Ran: >>>>>>>>>>>>>>>>>>>>>> Thanks for driving the FLIP. the >>> google >>>>> doc >>>>>>>> looks >>>>>>>>>>>> really >>>>>>>>>>>>>>> good. >>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>>>>>> important to improve user interactive >>>>>>>> experience. >>>>>>>>>> +1 >>>>>>>>>>> to >>>>>>>>>>>>>>> support >>>>>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>>>>>>> feature. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Jing Ge <j...@ververica.com.invalid> >>>>>>>> 于2023年2月23日周四 >>>>>>>>>>>>>> 00:51写道: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Hi Ran, >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Thanks for driving the FLIP. It >>> looks >>>>>>> overall >>>>>>>>>>> good. >>>>>>>>>>>>>> Would >>>>>>>>>>>>>>>> you >>>>>>>>>>>>>>>>>>> like to >>>>>>>>>>>>>>>>>>>>> add >>>>>>>>>>>>>>>>>>>>>>> a description of useLike and >>> notLike? >>>> I >>>>>>> guess >>>>>>>>>>> useLike >>>>>>>>>>>>>> true >>>>>>>>>>>>>>>> is for >>>>>>>>>>>>>>>>>>>>> "LIKE" >>>>>>>>>>>>>>>>>>>>>>> and notLike true is for "NOT LIKE" >>>> but I >>>>>> am >>>>>>>> not >>>>>>>>>>> sure >>>>>>>>>>>>> if I >>>>>>>>>>>>>>>>>>> understood it >>>>>>>>>>>>>>>>>>>>>>> correctly. Furthermore, does it make >>>>> sense >>>>>>> to >>>>>>>>>>> support >>>>>>>>>>>>>>> "ILIKE" >>>>>>>>>>>>>>>>>> too? >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>>>>>>>>>> Jing >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> On Wed, Feb 22, 2023 at 1:17 PM Ran >>>> Tao >>>>> < >>>>>>>>>>>>>>>> chucheng...@gmail.com> >>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Currently flink sql auxiliary >>>>> statements >>>>>>> has >>>>>>>>>>>>> supported >>>>>>>>>>>>>>> some >>>>>>>>>>>>>>>>>> good >>>>>>>>>>>>>>>>>>>>> features >>>>>>>>>>>>>>>>>>>>>>>> such as catalog/databases/table >>>>> support. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> But these features are not very >>>>> complete >>>>>>>>>> compared >>>>>>>>>>>>> with >>>>>>>>>>>>>>>> other >>>>>>>>>>>>>>>>>>> popular >>>>>>>>>>>>>>>>>>>>>>>> engines such as spark, presto, >>> hive >>>>> and >>>>>>>>>>> commercial >>>>>>>>>>>>>>> engines >>>>>>>>>>>>>>>> such >>>>>>>>>>>>>>>>>>> as >>>>>>>>>>>>>>>>>>>>>>>> snowflake. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> For example, many engines support >>>> show >>>>>>>>>> operation >>>>>>>>>>>> with >>>>>>>>>>>>>>>> filtering >>>>>>>>>>>>>>>>>>>>> except >>>>>>>>>>>>>>>>>>>>>>>> flink, and support describe other >>>>>>>> object(flink >>>>>>>>>>> only >>>>>>>>>>>>>>> support >>>>>>>>>>>>>>>>>>> describe >>>>>>>>>>>>>>>>>>>>>>>> table). >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> I wonder can we add these useful >>>>>> features >>>>>>>> for >>>>>>>>>>>> flink? >>>>>>>>>>>>>>>>>>>>>>>> You can find details in this >>> doc.[1] >>>>> or >>>>>>>>>> FLIP.[2] >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Also, please let me know if there >>>> is a >>>>>>>> mistake. >>>>>>>>>>>>> Looking >>>>>>>>>>>>>>>> forward >>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>> your >>>>>>>>>>>>>>>>>>>>>>>> reply. >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> [1] >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> https://docs.google.com/document/d/1hAiOfPx14VTBTOlpyxG7FA2mB1k5M31VnKYad2XpJ1I/ >>>>>>>>>>>>>>>>>>>>>>>> [2] >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-297%3A+Improve+Auxiliary+Sql+Statements >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Best Regards, >>>>>>>>>>>>>>>>>>>>>>>> Ran Tao >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Best regards, >>>>>>>>>>> Sergey >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Best regards, >>>>>>>>> Sergey >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >>> >>> -- >>> Best regards, >>> Sergey >>> >