>>Currently I think we can load from the jar and check the services file to
>> get the connector type. but is it necessary we may continue to discuss.
>>Hi, Sergey, WDYT?

Another idea is FactoryUtil#discoverFactories and
check if it implements DynamicTableSourceFactory or DynamicTableSinkFactory
with versions it could be trickier...
Moreover it seems the version could be a part of the name sometimes[1].
I think name and type could be enough or please correct me if I'm wrong

>>or can we open a single ticket under this FLIP?
I have a relatively old jira issue[2] for showing connectors with a poc pr.
Could I propose to move this jira issue as a subtask under the FLIP one and
revive it?

[1]
https://github.com/apache/flink/blob/161014149e803bfd1d3653badb230b2ed36ce3cb/flink-table/flink-table-common/src/main/java/org/apache/flink/table/factories/Factory.java#L65-L69
[2] https://issues.apache.org/jira/browse/FLINK-25788

On Tue, Feb 28, 2023 at 11:56 AM Ran Tao <chucheng...@gmail.com> wrote:

> Hi, Jark. thanks.
> > About ILIKE
> I have updated the FLIP for ILIKE support (Including existing showTables &
> showColumns how to change).
>
> > About show connectors @Sergey,
> Currently I think we can load from the jar and check the services file to
> get the connector type. but is it necessary we may continue to discuss.
> Hi, Sergey, WDYT?or can we open a single ticket under this FLIP?
>
>
> Best Regards,
> Ran Tao
>
>
> Jark Wu <imj...@gmail.com> 于2023年2月28日周二 17:45写道:
>
> > 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
> > >>>
> > >
> >
> >
>


-- 
Best regards,
Sergey

Reply via email to