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
>> 

Reply via email to