Hi everyone,

Thank you everyone for your valuable input. If there are no further
questions or concerns about the FLIP[1], I would like to start voting
tomorrow (6/7).


[1]
https://cwiki.apache.org/confluence/display/FLINK/FLIP-295%3A+Support+lazy+initialization+of+catalogs+and+persistence+of+catalog+configurations


Best,
Feng


On Sun, Jun 4, 2023 at 3:33 PM Feng Jin <jinfeng1...@gmail.com> wrote:

> Hi Samrat,
>
> Thanks for your advice.
>
> > 1. The createCatalog method does not mention any exceptions being
> thrown.
>
> CreateCatalog will throw CatalogException like registerCatalog.  As
> CatalogException is a RuntimeException,
> there is no explicit declaration of throwing Exceptions in CatalogManager
> and TableEnvironment.
> To avoid misunderstandings, I have added the "throw CatalogException" flag
> to the createCatalog method definition of CatalogStore.
>
> > 2. Could you please provide an exhaustive list of the supported kinds?
>
> Sure,  the documentation now includes the configuration of the built-in
> CatalogStore as well as how to configure a custom CatalogStore.
>
>
> Best,
> Feng
>
>
> On Sun, Jun 4, 2023 at 4:23 AM Samrat Deb <decordea...@gmail.com> wrote:
>
>> Hi Feng,
>>
>> Thank you for providing the proposal. I believe this feature will be
>> highly
>> valuable.
>>
>> I have a couple of inquiries:
>>
>> 1. According to the documentation [1], the createCatalog method does not
>> mention any exceptions being thrown. However, I would like to confirm if
>> it
>> is always true that there will be no failures in all scenarios. Please let
>> me know if there is any additional information I may have missed.
>>
>> 2. Regarding the registration process using the `table.catalog-store.kind`
>> configuration, could you please provide an exhaustive list of the
>> supported
>> kinds?
>>    It would be great to have a comprehensive understanding of the options
>> available.
>>
>> Bests,
>> Samrat
>>
>> [1]
>>
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-295%3A+Support+lazy+initialization+of+catalogs+and+persistence+of+catalog+configurations
>>
>> On Sat, Jun 3, 2023 at 5:54 PM Feng Jin <jinfeng1...@gmail.com> wrote:
>>
>> > Hi Hang and Jark
>> >
>> > Thank you very much for your reply.
>> >
>> > @Jark
>> > > 1. Could you move the CatalogStore registration API to the "Public
>> > Interface" section?
>> >
>> > Indeed, it is more reasonable.
>> >
>> > > 2. We should prefix "table." for the CatalogStore configuration.
>> >
>> > Sure,   the names that you provided are indeed more logical and easier
>> to
>> > understand.
>> >
>> > > 3. About the open/close method in CatalogStoreFactory.
>> >
>> > I also agree with the proposed requirement scenario and design. I have
>> > already made modifications to the interface.
>> >
>> > @Hang
>> >
>> > > 1. The `CatalogStore` need the `open`/`close` methods to init or close
>> > the resource.
>> >
>> > I have already added the missing method.
>> >
>> > > 2. The `getCatalog` is misspelled as `optionalDescriptor`.
>> >
>> > Sorry for the misspelling, I updated this part.
>> >
>> > > 3.  Then the `CatalogStoreFactory` may need the `open`/`close` methods
>> > to  init or close its resource
>> >
>> > This is indeed a scenario that needs to be considered, and I have added
>> > relevant methods accordingly.
>> > Additionally, I have included some relevant description information in
>> the
>> > documentation to help others understand
>> >  why the open/close methods need to be added.
>> >
>> >
>> > Best,
>> > Feng
>> >
>> > On Sat, Jun 3, 2023 at 12:35 PM Jark Wu <imj...@gmail.com> wrote:
>> >
>> > > Hi Jing,
>> > >
>> > > Thank you for the update.
>> > >
>> > > 1. Could you move the CatalogStore registration API to the "Public
>> > > Interface" section?
>> > > "Proposed Changes" is more like a place to describe the implementation
>> > > details.
>> > >
>> > > 2. We should prefix "table." for the CatalogStore configuration.
>> Besides,
>> > > the config key
>> > > name should be hierarchical[1]. Therefore, it may be better to use:
>> > > "table.catalog-store.kind"
>> > > "table.catalog-store.file.path"
>> > >
>> > > 3. I think Hang's suggestions make sense.
>> > >
>> > > Others look good to me.
>> > >
>> > > Best,
>> > > Jark
>> > >
>> > > On Fri, 2 Jun 2023 at 17:28, Hang Ruan <ruanhang1...@gmail.com>
>> wrote:
>> > >
>> > > > Hi, Feng.
>> > > >
>> > > > Thanks for the update.
>> > > > The current design looks good to me. I have some minor comments.
>> > > >
>> > > > 1. The `CatalogStore` need the `open`/`close` methods to init or
>> close
>> > > the
>> > > > resource. For example, when storing the information in MySQL, the
>> store
>> > > > needs to open and close the connections.
>> > > >
>> > > > 2. The `getCatalog` is misspelled as `optionalDescriptor`.
>> > > >
>> > > > 3. About the usage in the sql gateway.
>> > > > Considering the usage in sql gateway, the sql gateway may create a
>> > > > CatalogStore for each session.
>> > > > If we are using the MySqlCatalogStore, there would be so many
>> > > connections.
>> > > > How can we reuse the connection among these sessions?
>> > > > I think sql gateway need to maintain a connection pool in
>> > > > the CatalogStoreFactory and each session get its own connection from
>> > the
>> > > > pool when it is created.
>> > > > Then the `CatalogStoreFactory` may need the `open`/`close` methods
>> to
>> > > init
>> > > > or close its resource.
>> > > > Or is there a better way?
>> > > >
>> > > > Best,
>> > > > Hang
>> > > >
>> > > > Feng Jin <jinfeng1...@gmail.com> 于2023年6月2日周五 14:45写道:
>> > > >
>> > > > > Thanks Jingsong.
>> > > > >
>> > > > > > Just naming, maybe `createCatalog` in TableEnv
>> > > > >
>> > > > > +1 For this, I have already updated FLIP.
>> > > > >
>> > > > >
>> > > > > Best,
>> > > > > Feng
>> > > > >
>> > > > >
>> > > > > On Fri, Jun 2, 2023 at 11:32 AM Jingsong Li <
>> jingsongl...@gmail.com>
>> > > > > wrote:
>> > > > >
>> > > > > > Thanks Feng,
>> > > > > >
>> > > > > > Just naming, maybe `createCatalog` in TableEnv, I can see many
>> > > > > > functions are converted to createxxx from registerxxx.
>> > > > > >
>> > > > > > On Fri, Jun 2, 2023 at 11:04 AM Feng Jin <jinfeng1...@gmail.com
>> >
>> > > > wrote:
>> > > > > > >
>> > > > > > > Hi jark, thanks for your suggestion.
>> > > > > > >
>> > > > > > > > 1. How to register the CatalogStore for Table API? I think
>> the
>> > > > > > > CatalogStore should be immutable once TableEnv is created.
>> > > Otherwise,
>> > > > > > there
>> > > > > > > might be some data inconsistencies when CatalogStore is
>> changed.
>> > > > > > >
>> > > > > > > Yes, We should initialize the CatalogStore when creating the
>> > > > TableEnv.
>> > > > > > > Therefore, my current proposal is to add a method to configure
>> > the
>> > > > > > > CatalogStore in EnvironmentSettings.
>> > > > > > >
>> > > > > > >         // Initialize a catalog Store
>> > > > > > >         CatalogStore catalogStore = new FileCatalogStore("");
>> > > > > > >
>> > > > > > >         // set up the Table API
>> > > > > > >         final EnvironmentSettings settings =
>> > > > > > >
>>  EnvironmentSettings.newInstance().inBatchMode()
>> > > > > > >                         .withCatalogStore(catalogStore)
>> > > > > > >                         .build();
>> > > > > > >
>> > > > > > >         final TableEnvironment tableEnv =
>> > > > > > TableEnvironment.create(settings);
>> > > > > > >
>> > > > > > >
>> > > > > > > > 2. Why does the CatalogStoreFactory interface only have a
>> > default
>> > > > > > method,
>> > > > > > > not an interface method?
>> > > > > > >
>> > > > > > > Sorry, While I did refer to the Catalog interface, I agree
>> that
>> > as
>> > > a
>> > > > > new
>> > > > > > > interface, the CatalogStoreFactory should not have a default
>> > method
>> > > > but
>> > > > > > an
>> > > > > > > interface method.  I have already modified the interface.
>> > > > > > >
>> > > > > > > > 3. Please mention the alternative API in Javadoc for the
>> > > > > > > deprecated`registerCatalog`.
>> > > > > > > > 4. In the "Compatibility" section, would be better to
>> mention
>> > the
>> > > > > > changed
>> > > > > > > behavior of CREATE CATALOG statement if FileCatalogStore (or
>> > other
>> > > > > > > persisted catalog store) is used.
>> > > > > > >
>> > > > > > > Thanks for the suggestion, I have updated the FLIP [1].
>> > > > > > >
>> > > > > > >
>> > > > > > > [1].
>> > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-295%3A+Support+lazy+initialization+of+catalogs+and+persistence+of+catalog+configurations
>> > > > > > >
>> > > > > > >
>> > > > > > > Best,
>> > > > > > > Feng
>> > > > > > >
>> > > > > > > On Thu, Jun 1, 2023 at 9:22 PM Jark Wu <imj...@gmail.com>
>> wrote:
>> > > > > > >
>> > > > > > > > Hi Feng,
>> > > > > > > >
>> > > > > > > > This is a useful FLIP. Thanks for starting this discussion.
>> > > > > > > > The current design looks pretty good to me. I just have some
>> > > minor
>> > > > > > > > comments.
>> > > > > > > >
>> > > > > > > > 1. How to register the CatalogStore for Table API? I think
>> the
>> > > > > > CatalogStore
>> > > > > > > > should be immutable once TableEnv is created. Otherwise,
>> there
>> > > > might
>> > > > > be
>> > > > > > > > some data inconsistencies when CatalogStore is changed.
>> > > > > > > >
>> > > > > > > > 2. Why does the CatalogStoreFactory interface only have a
>> > default
>> > > > > > method,
>> > > > > > > > not an interface method?
>> > > > > > > >
>> > > > > > > > 3. Please mention the alternative API in Javadoc for the
>> > > deprecated
>> > > > > > > > `registerCatalog`.
>> > > > > > > >
>> > > > > > > > 4. In the "Compatibility" section, would be better to
>> mention
>> > the
>> > > > > > changed
>> > > > > > > > behavior of CREATE CATALOG statement if FileCatalogStore (or
>> > > other
>> > > > > > > > persisted catalog store) is used.
>> > > > > > > >
>> > > > > > > >
>> > > > > > > > Best,
>> > > > > > > > Jark
>> > > > > > > >
>> > > > > > > > On Thu, 1 Jun 2023 at 11:26, Feng Jin <
>> jinfeng1...@gmail.com>
>> > > > wrote:
>> > > > > > > >
>> > > > > > > > > Hi ,  thanks all for reviewing the flip.
>> > > > > > > > >
>> > > > > > > > > @Ron
>> > > > > > > > >
>> > > > > > > > > >  Regarding the CatalogStoreFactory#createCatalogStore
>> > method,
>> > > > do
>> > > > > we
>> > > > > > > > need
>> > > > > > > > > to provide a default implementation?
>> > > > > > > > >
>> > > > > > > > > Yes, we will provide a default
>> InMemoryCatalogStoreFactory to
>> > > > > create
>> > > > > > an
>> > > > > > > > > InMemoryCatalogStore.
>> > > > > > > > >
>> > > > > > > > > >  If we get a Catalog from CatalogStore, after
>> initializing
>> > > it,
>> > > > > > whether
>> > > > > > > > we
>> > > > > > > > > put it in Map<String, Catalog> catalogs again?
>> > > > > > > > >
>> > > > > > > > > Yes, in the current design, catalogs are stored as
>> snapshots,
>> > > and
>> > > > > > once
>> > > > > > > > > initialized, the Catalog will be placed in the Map<String,
>> > > > Catalog>
>> > > > > > > > > catalogs.
>> > > > > > > > > Subsequently, the Map<String, Catalog> catalogs will be
>> the
>> > > > primary
>> > > > > > > > source
>> > > > > > > > > for obtaining the corresponding Catalog.
>> > > > > > > > >
>> > > > > > > > > >   how about renaming them to `catalog.store.type` and
>> > > > > > > > > `catalog.store.path`?
>> > > > > > > > >
>> > > > > > > > > I think it is okay. Adding "sql" at the beginning may
>> seem a
>> > > bit
>> > > > > > > > strange. I
>> > > > > > > > > will update the FLIP.
>> > > > > > > > >
>> > > > > > > > >
>> > > > > > > > >
>> > > > > > > > > @Shammon
>> > > > > > > > >
>> > > > > > > > > Thank you for the review. I have made the necessary
>> > > corrections.
>> > > > > > > > > Regarding the modifications made to the Public Interface,
>> I
>> > > have
>> > > > > also
>> > > > > > > > > included the relevant changes to the `TableEnvironment`.
>> > > > > > > > >
>> > > > > > > > >
>> > > > > > > > > Best,
>> > > > > > > > > Feng
>> > > > > > > > >
>> > > > > > > > >
>> > > > > > > > > On Wed, May 31, 2023 at 5:02 PM Shammon FY <
>> > zjur...@gmail.com>
>> > > > > > wrote:
>> > > > > > > > >
>> > > > > > > > > > Hi feng,
>> > > > > > > > > >
>> > > > > > > > > > Thanks for updating, I have some minor comments
>> > > > > > > > > >
>> > > > > > > > > > 1. The modification of `CatalogManager` should not be in
>> > > > `Public
>> > > > > > > > > > Interfaces`, it is not a public interface.
>> > > > > > > > > >
>> > > > > > > > > > 2. `@PublicEvolving` should be added for `CatalogStore`
>> and
>> > > > > > > > > > `CatalogStoreFactory`
>> > > > > > > > > >
>> > > > > > > > > > 3. The code `Optional<Catalog> optionalDescriptor =
>> > > > > > > > > > catalogStore.get(catalogName);` in the `CatalogManager`
>> > > should
>> > > > be
>> > > > > > > > > > `Optional<CatalogDescriptor> optionalDescriptor =
>> > > > > > > > > > catalogStore.get(catalogName);`
>> > > > > > > > > >
>> > > > > > > > > > Best,
>> > > > > > > > > > Shammon FY
>> > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > > > On Wed, May 31, 2023 at 2:24 PM liu ron <
>> > ron9....@gmail.com>
>> > > > > > wrote:
>> > > > > > > > > >
>> > > > > > > > > > > Hi, Feng
>> > > > > > > > > > >
>> > > > > > > > > > > Thanks for driving this FLIP, this proposal is very
>> > useful
>> > > > for
>> > > > > > > > catalog
>> > > > > > > > > > > management.
>> > > > > > > > > > > I have some small questions:
>> > > > > > > > > > >
>> > > > > > > > > > > 1. Regarding the
>> CatalogStoreFactory#createCatalogStore
>> > > > method,
>> > > > > > do we
>> > > > > > > > > > need
>> > > > > > > > > > > to provide a default implementation?
>> > > > > > > > > > > 2. If we get Catalog from CatalogStore, after
>> > initializing
>> > > > it,
>> > > > > > > > whether
>> > > > > > > > > we
>> > > > > > > > > > > put it to Map<String, Catalog> catalogs again?
>> > > > > > > > > > > 3. Regarding the options `sql.catalog.store.type` and
>> > > > > > > > > > > `sql.catalog.store.file.path`, how about renaming
>> them to
>> > > > > > > > > > > `catalog.store.type` and `catalog.store.path`?
>> > > > > > > > > > >
>> > > > > > > > > > > Best,
>> > > > > > > > > > > Ron
>> > > > > > > > > > >
>> > > > > > > > > > > Feng Jin <jinfeng1...@gmail.com> 于2023年5月29日周一
>> 21:19写道:
>> > > > > > > > > > >
>> > > > > > > > > > > > Hi yuxia
>> > > > > > > > > > > >
>> > > > > > > > > > > >  > But from the code in Proposed Changes, once we
>> > > register
>> > > > > the
>> > > > > > > > > Catalog,
>> > > > > > > > > > > we
>> > > > > > > > > > > > initialize it and open it. right?
>> > > > > > > > > > > >
>> > > > > > > > > > > > Yes, In order to avoid inconsistent semantics of the
>> > > > original
>> > > > > > > > CREATE
>> > > > > > > > > > > > CATALOG DDL, Catalog will be directly initialized in
>> > > > > > > > registerCatalog
>> > > > > > > > > so
>> > > > > > > > > > > > that parameter validation can be performed.
>> > > > > > > > > > > >
>> > > > > > > > > > > > In the current design, lazy initialization is mainly
>> > > > > reflected
>> > > > > > in
>> > > > > > > > > > > > getCatalog. If CatalogStore has already saved some
>> > > catalog
>> > > > > > > > > > > configurations,
>> > > > > > > > > > > > only initialization is required in getCatalog.
>> > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > > > Best,
>> > > > > > > > > > > > Feng
>> > > > > > > > > > > >
>> > > > > > > > > > > > On Mon, May 29, 2023 at 8:27 PM yuxia <
>> > > > > > luoyu...@alumni.sjtu.edu.cn
>> > > > > > > > >
>> > > > > > > > > > > wrote:
>> > > > > > > > > > > >
>> > > > > > > > > > > > > Hi, Feng.
>> > > > > > > > > > > > > I'm trying to understanding the meaning of *lazy
>> > > > > > initialization*.
>> > > > > > > > > If
>> > > > > > > > > > > i'm
>> > > > > > > > > > > > > wrong, please correct me.
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > IIUC, lazy initialization means only you need to
>> > access
>> > > > the
>> > > > > > > > > catalog,
>> > > > > > > > > > > then
>> > > > > > > > > > > > > you initialize it. But from the code in Proposed
>> > > Changes,
>> > > > > > once we
>> > > > > > > > > > > > register
>> > > > > > > > > > > > > the Catalog,
>> > > > > > > > > > > > > we initialize it and open it. right?
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > Yuxia
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > ----- 原始邮件 -----
>> > > > > > > > > > > > > 发件人: "Jing Ge" <j...@ververica.com.INVALID>
>> > > > > > > > > > > > > 收件人: "dev" <dev@flink.apache.org>
>> > > > > > > > > > > > > 发送时间: 星期一, 2023年 5 月 29日 下午 5:12:46
>> > > > > > > > > > > > > 主题: Re: [DISCUSS] FLIP 295: Support persistence of
>> > > > Catalog
>> > > > > > > > > > > configuration
>> > > > > > > > > > > > > and asynchronous registration
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > Hi Feng,
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > Thanks for your effort! +1 for the proposal.
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > One of the major changes is that current design
>> will
>> > > > > provide
>> > > > > > > > > > > > > Map<String,Catalog> catalogs as a snapshot instead
>> > of a
>> > > > > > cache,
>> > > > > > > > > which
>> > > > > > > > > > > > means
>> > > > > > > > > > > > > once it has been initialized, any changes done by
>> > other
>> > > > > > sessions
>> > > > > > > > > will
>> > > > > > > > > > > not
>> > > > > > > > > > > > > affect it. Point 6 described follow-up options for
>> > > > further
>> > > > > > > > > > improvement.
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > Jing
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > On Mon, May 29, 2023 at 5:31 AM Feng Jin <
>> > > > > > jinfeng1...@gmail.com>
>> > > > > > > > > > > wrote:
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > > Hi all, I would like to update you on the latest
>> > > > progress
>> > > > > > of
>> > > > > > > > the
>> > > > > > > > > > > FLIP.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > Last week, Leonard Xu, HangRuan, Jing Ge,
>> Shammon
>> > FY,
>> > > > > > ShengKai
>> > > > > > > > > Fang
>> > > > > > > > > > > > and I
>> > > > > > > > > > > > > > had an offline discussion regarding the overall
>> > > > solution
>> > > > > > for
>> > > > > > > > > Flink
>> > > > > > > > > > > > > > CatalogStore. We have reached a consensus and I
>> > have
>> > > > > > updated
>> > > > > > > > the
>> > > > > > > > > > > final
>> > > > > > > > > > > > > > solution in FLIP.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > Next, let me briefly describe the entire design:
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    1.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    Introduce CatalogDescriptor to store catalog
>> > > > > > configuration
>> > > > > > > > > > similar
>> > > > > > > > > > > > to
>> > > > > > > > > > > > > >    TableDescriptor.
>> > > > > > > > > > > > > >    2.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    The two key functions of CatalogStore - void
>> > > > > > > > > storeCatalog(String
>> > > > > > > > > > > > > >    catalogName, CatalogDescriptor) and
>> > > > CatalogDescriptor
>> > > > > > > > > > > > > getCatalog(String)
>> > > > > > > > > > > > > >    will both use CatalogDescriptor instead of
>> > Catalog
>> > > > > > instance.
>> > > > > > > > > > This
>> > > > > > > > > > > > way,
>> > > > > > > > > > > > > >    CatalogStore will only be responsible for
>> saving
>> > > and
>> > > > > > > > > retrieving
>> > > > > > > > > > > > > catalog
>> > > > > > > > > > > > > >    configurations without having to initialize
>> > > > catalogs.
>> > > > > > > > > > > > > >    3.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    The default registerCatalog(String
>> catalogName,
>> > > > > Catalog
>> > > > > > > > > catalog)
>> > > > > > > > > > > > > >    function in CatalogManager will be marked as
>> > > > > deprecated.
>> > > > > > > > > > > > > >    4.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    A new function registerCatalog(String
>> > catalogName,
>> > > > > > > > > > > CatalogDescriptor
>> > > > > > > > > > > > > >    catalog) will be added to serve as the
>> default
>> > > > > > registration
>> > > > > > > > > > > function
>> > > > > > > > > > > > > for
>> > > > > > > > > > > > > >    catalogs in CatalogManager.
>> > > > > > > > > > > > > >    5.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    Map<String,Catalog> catalogs in CataloManager
>> > will
>> > > > > > remain
>> > > > > > > > > > > unchanged
>> > > > > > > > > > > > > and
>> > > > > > > > > > > > > >    save initialized catalogs.This means that
>> > deletion
>> > > > > > > > operations
>> > > > > > > > > > from
>> > > > > > > > > > > > one
>> > > > > > > > > > > > > >    session won't synchronize with other
>> sessions.
>> > > > > > > > > > > > > >    6.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    To support multi-session synchronization
>> > scenarios
>> > > > for
>> > > > > > > > > deletions
>> > > > > > > > > > > > later
>> > > > > > > > > > > > > >    on we should make Map<String,Catalog>catalogs
>> > > > > > > > > configurable.There
>> > > > > > > > > > > may
>> > > > > > > > > > > > > be
>> > > > > > > > > > > > > >    three possible situations:
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    a.Default caching of all initialized catalogs
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    b.Introduction of LRU cache logic which can
>> > > > > > automatically
>> > > > > > > > > clear
>> > > > > > > > > > > > > >    long-unused catalogs.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >    c.No caching of any instances; each call to
>> > > > getCatalog
>> > > > > > > > > creates a
>> > > > > > > > > > > new
>> > > > > > > > > > > > > >    instance.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > This is the document for discussion:
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://docs.google.com/document/d/1HRJNd4_id7i6cUxGnAybmYZIwl5g1SmZCOzGdUz-6lU/edit
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > This is the final proposal document:
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-295%3A+Support+lazy+initialization+of+catalogs+and+persistence+of+catalog+configurations
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > Thank you very much for your attention and
>> > > suggestions
>> > > > on
>> > > > > > this
>> > > > > > > > > > > FLIP.  A
>> > > > > > > > > > > > > > special thanks to Hang Ruan for his suggestions
>> on
>> > > the
>> > > > > > entire
>> > > > > > > > > > design
>> > > > > > > > > > > > and
>> > > > > > > > > > > > > > organizing offline discussions.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > If you have any further suggestions or feedback
>> > about
>> > > > > this
>> > > > > > FLIP
>> > > > > > > > > > > please
>> > > > > > > > > > > > > feel
>> > > > > > > > > > > > > > free to share.
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > Best,
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > Feng
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > On Sat, May 6, 2023 at 8:32 PM Jing Ge
>> > > > > > > > > <j...@ververica.com.invalid
>> > > > > > > > > > >
>> > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > Hi Feng,
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > Thanks for improving the FLIP. It looks good
>> to
>> > me.
>> > > > We
>> > > > > > could
>> > > > > > > > > > still
>> > > > > > > > > > > > > > > reconsider in the future how to provide more
>> > common
>> > > > > > built-in
>> > > > > > > > > > cache
>> > > > > > > > > > > > > > > functionality in CatalogManager so that not
>> every
>> > > > > > > > CatalogSotre
>> > > > > > > > > > > > > > > implementation has to take care of it.
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > > > Jing
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > On Thu, May 4, 2023 at 1:47 PM Feng Jin <
>> > > > > > > > jinfeng1...@gmail.com
>> > > > > > > > > >
>> > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > Hi Jing,
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > Thanks for your reply.
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > >  There might be more such issues. I would
>> > > suggest
>> > > > > you
>> > > > > > > > > > > completely
>> > > > > > > > > > > > > walk
>> > > > > > > > > > > > > > > > through the FLIP again and fix those issues
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > I am very sorry for my carelessness and at
>> the
>> > > same
>> > > > > > time, I
>> > > > > > > > > > > greatly
>> > > > > > > > > > > > > > > > appreciate your careful review. I have
>> > thoroughly
>> > > > > > checked
>> > > > > > > > the
>> > > > > > > > > > > > entire
>> > > > > > > > > > > > > > FLIP
>> > > > > > > > > > > > > > > > and made corrections to these issues.
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > >  If I am not mistaken, with the  current
>> FLIP
>> > > > > design,
>> > > > > > > > > > > > > CatalogManager
>> > > > > > > > > > > > > > > > could work without Optional  CatalogStore
>> being
>> > > > > > configured.
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > Yes, in the original design, CatalogStore
>> was
>> > not
>> > > > > > necessary
>> > > > > > > > > > > because
>> > > > > > > > > > > > > > > > CatalogManager used Map<String, Catalog>
>> > catalogs
>> > > > to
>> > > > > > store
>> > > > > > > > > > > catalog
>> > > > > > > > > > > > > > > > instances.
>> > > > > > > > > > > > > > > > However, this caused inconsistency issues.
>> > > > > Therefore, I
>> > > > > > > > > > modified
>> > > > > > > > > > > > this
>> > > > > > > > > > > > > > > part
>> > > > > > > > > > > > > > > > of the design and removed Map<String,
>> Catalog>
>> > > > > catalogs
>> > > > > > > > from
>> > > > > > > > > > > > > > > > CatalogManager.
>> > > > > > > > > > > > > > > >  At the same time, InMemoryCatalog will
>> serve
>> > as
>> > > > the
>> > > > > > > > default
>> > > > > > > > > > > > > > CatalogStore
>> > > > > > > > > > > > > > > > to save catalogs in memory and replace the
>> > > > > > functionality of
>> > > > > > > > > > > > > > > > Map<String,Catalog>catalogs.
>> > > > > > > > > > > > > > > > The previous plan that kept
>> > > > > > Map<String,Catalog>catalogs has
>> > > > > > > > > > been
>> > > > > > > > > > > > > moved
>> > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > Rejected Alternatives.
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > Best,
>> > > > > > > > > > > > > > > > Feng
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > On Sun, Apr 30, 2023 at 9:03 PM Jing Ge
>> > > > > > > > > > > <j...@ververica.com.invalid
>> > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > Hi Feng,
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > There are still many places contain
>> > > inconsistent
>> > > > > > content,
>> > > > > > > > > > e.g.
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > 1. "Asynchronous registration" is still
>> used.
>> > > > > > > > > > > > > > > > > 2. The java comment of the method
>> > > > > > registerCatalog(String
>> > > > > > > > > > > > > catalogName,
>> > > > > > > > > > > > > > > > > Catalog catalog) in CatalogManager does
>> not
>> > > tell
>> > > > > > what the
>> > > > > > > > > > > method
>> > > > > > > > > > > > is
>> > > > > > > > > > > > > > > > doing.
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > There might be more such issues. I would
>> > > suggest
>> > > > > you
>> > > > > > > > > > completely
>> > > > > > > > > > > > > walk
>> > > > > > > > > > > > > > > > > through the FLIP again and fix those
>> issues.
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > About the inMemoryCatalogStore, do you
>> mean
>> > > that
>> > > > > you
>> > > > > > will
>> > > > > > > > > > build
>> > > > > > > > > > > > the
>> > > > > > > > > > > > > > > cache
>> > > > > > > > > > > > > > > > > functionality in the CatalogStore? This
>> is a
>> > > very
>> > > > > > > > different
>> > > > > > > > > > > > design
>> > > > > > > > > > > > > > > > concept
>> > > > > > > > > > > > > > > > > from what the current FLIP described. If
>> I am
>> > > not
>> > > > > > > > mistaken,
>> > > > > > > > > > > with
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > current FLIP design, CatalogManager could
>> > work
>> > > > > > without
>> > > > > > > > > > Optional
>> > > > > > > > > > > > > > > > > CatalogStore being configured. That is the
>> > > reason
>> > > > > > why I
>> > > > > > > > > > > mentioned
>> > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > last email that the example code wrt the
>> > > Optional
>> > > > > > > > > > CatalogStore
>> > > > > > > > > > > is
>> > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > correct.
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > > > > > Jing
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > On Thu, Apr 27, 2023 at 3:55 PM Feng Jin <
>> > > > > > > > > > > jinfeng1...@gmail.com>
>> > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > Hi Jing
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > There are still some NIT issues in the
>> > FLIP
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > Thank you very much for the careful
>> > review. I
>> > > > > have
>> > > > > > > > > already
>> > > > > > > > > > > made
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > relevant changes.
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > >  Speaking of the conflict issues in
>> the
>> > > > > > > > multi-instance
>> > > > > > > > > > > > > > scenarios, I
>> > > > > > > > > > > > > > > > am
>> > > > > > > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > > sure if this is the intended behaviour
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > Currently, there are conflicts in
>> multiple
>> > > > > > scenarios
>> > > > > > > > with
>> > > > > > > > > > the
>> > > > > > > > > > > > > > current
>> > > > > > > > > > > > > > > > > > design. I am thinking whether we should
>> > > remove
>> > > > > > > > > 'Map<String,
>> > > > > > > > > > > > > > Catalog>'
>> > > > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > make Cache the default behavior of
>> > > > > > > > InMemoryCatalogStore.
>> > > > > > > > > > This
>> > > > > > > > > > > > > way,
>> > > > > > > > > > > > > > > > users
>> > > > > > > > > > > > > > > > > > can implement their own CatalogStore to
>> > > achieve
>> > > > > > > > > > > multi-instance
>> > > > > > > > > > > > > > > > > > non-conflicting scenarios. What do you
>> > think?
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > Best,
>> > > > > > > > > > > > > > > > > > Feng
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > On Thu, Apr 27, 2023 at 9:03 PM Jing Ge
>> > > > > > > > > > > > > <j...@ververica.com.invalid
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > Hi Feng,
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > Thanks for working on the FLIP. There
>> are
>> > > > still
>> > > > > > some
>> > > > > > > > > NIT
>> > > > > > > > > > > > issues
>> > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > FLIP
>> > > > > > > > > > > > > > > > > > > like:
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > 1. Optional<CatalogStore> catalogStore
>> > has
>> > > > been
>> > > > > > used
>> > > > > > > > as
>> > > > > > > > > > > > > > > CatalogStore
>> > > > > > > > > > > > > > > > > > > instead of Optional in the code
>> example.
>> > It
>> > > > > > should be
>> > > > > > > > > > fine
>> > > > > > > > > > > to
>> > > > > > > > > > > > > use
>> > > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > as
>> > > > > > > > > > > > > > > > > > > pseudo code for now and update it
>> after
>> > you
>> > > > > > submit
>> > > > > > > > the
>> > > > > > > > > > PR.
>> > > > > > > > > > > > > > > > > > > 2. addCatalog(...) is still used
>> > somewhere
>> > > in
>> > > > > the
>> > > > > > > > > > rejected
>> > > > > > > > > > > > > > section
>> > > > > > > > > > > > > > > > > which
>> > > > > > > > > > > > > > > > > > > should be persistContext(...) to keep
>> it
>> > > > > > consistent.
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > Speaking of the conflict issues in the
>> > > > > > multi-instance
>> > > > > > > > > > > > > scenarios,
>> > > > > > > > > > > > > > I
>> > > > > > > > > > > > > > > am
>> > > > > > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > > > sure if this is the intended
>> behaviour.
>> > If
>> > > > > > > > Map<String,
>> > > > > > > > > > > > Catalog>
>> > > > > > > > > > > > > > > > > catalogs
>> > > > > > > > > > > > > > > > > > is
>> > > > > > > > > > > > > > > > > > > used as a cache, it should be invalid,
>> > once
>> > > > the
>> > > > > > > > related
>> > > > > > > > > > > > catalog
>> > > > > > > > > > > > > > has
>> > > > > > > > > > > > > > > > > been
>> > > > > > > > > > > > > > > > > > > removed from the CatalogStore by
>> another
>> > > > > > instance.
>> > > > > > > > Did
>> > > > > > > > > I
>> > > > > > > > > > > miss
>> > > > > > > > > > > > > > > > > something?
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > > > > > > > Jing
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > On Thu, Apr 13, 2023 at 4:40 PM Feng
>> Jin
>> > <
>> > > > > > > > > > > > > jinfeng1...@gmail.com>
>> > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > Hi Jing,Shammon
>> > > > > > > > > > > > > > > > > > > > Thanks for your reply.
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > @Jing
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > How about persistCatalog()?
>> > > > > > > > > > > > > > > > > > > > I think this is a good function
>> name, I
>> > > > have
>> > > > > > > > updated
>> > > > > > > > > it
>> > > > > > > > > > > in
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > documentation.
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > >    Some common cache features
>> should
>> > be
>> > > > > > > > implemented
>> > > > > > > > > > > > > > > > > > > > Thank you for the suggestion. If
>> > > > alternative
>> > > > > 1
>> > > > > > > > turns
>> > > > > > > > > > out
>> > > > > > > > > > > to
>> > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > more
>> > > > > > > > > > > > > > > > > > > > appropriate later, I will improve
>> this
>> > > part
>> > > > > of
>> > > > > > the
>> > > > > > > > > > > content.
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > As the above discussion moves
>> > forward,
>> > > > the
>> > > > > > > > option 2
>> > > > > > > > > > > > > solution
>> > > > > > > > > > > > > > > > looks
>> > > > > > > > > > > > > > > > > > more
>> > > > > > > > > > > > > > > > > > > > like a replacement of option 1
>> > > > > > > > > > > > > > > > > > > > Yes, after discussing with Shammon
>> > > offline,
>> > > > > we
>> > > > > > > > think
>> > > > > > > > > > that
>> > > > > > > > > > > > > > > solution
>> > > > > > > > > > > > > > > > 2
>> > > > > > > > > > > > > > > > > > > might
>> > > > > > > > > > > > > > > > > > > > be more suitable and also avoid any
>> > > > > > inconsistency
>> > > > > > > > > > issues.
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > There are some inconsistent
>> > > descriptions
>> > > > in
>> > > > > > the
>> > > > > > > > > > > content.
>> > > > > > > > > > > > > > Would
>> > > > > > > > > > > > > > > > you
>> > > > > > > > > > > > > > > > > > > like
>> > > > > > > > > > > > > > > > > > > > to clean them up?
>> > > > > > > > > > > > > > > > > > > > I will do my best to improve the
>> > document
>> > > > and
>> > > > > > > > > > appreciate
>> > > > > > > > > > > > your
>> > > > > > > > > > > > > > > > > > > suggestions.
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > @Shammon
>> > > > > > > > > > > > > > > > > > > > > can you put the unselected option
>> in
>> > > > > > `Rejected
>> > > > > > > > > > > > > Alternatives`
>> > > > > > > > > > > > > > > > > > > > Sure, I have moved it to the
>> `Rejected
>> > > > > > > > Alternatives`.
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > Best
>> > > > > > > > > > > > > > > > > > > > Feng
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > On Thu, Apr 13, 2023 at 8:52 AM
>> Shammon
>> > > FY
>> > > > <
>> > > > > > > > > > > > > zjur...@gmail.com>
>> > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > Hi Feng
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > Thanks for your update.
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > I found there are two options in
>> > > > `Proposed
>> > > > > > > > > Changes`,
>> > > > > > > > > > > can
>> > > > > > > > > > > > > you
>> > > > > > > > > > > > > > > put
>> > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > unselected option in `Rejected
>> > > > > > Alternatives`? I
>> > > > > > > > > think
>> > > > > > > > > > > > this
>> > > > > > > > > > > > > > may
>> > > > > > > > > > > > > > > > help
>> > > > > > > > > > > > > > > > > > us
>> > > > > > > > > > > > > > > > > > > > > better understand your proposal
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > Best,
>> > > > > > > > > > > > > > > > > > > > > Shammon FY
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > On Thu, Apr 13, 2023 at 4:49 AM
>> Jing
>> > Ge
>> > > > > > > > > > > > > > > > <j...@ververica.com.invalid
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > Hi Feng,
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > Thanks for raising this FLIP. I
>> am
>> > > > still
>> > > > > > > > confused
>> > > > > > > > > > > after
>> > > > > > > > > > > > > > > > > completely
>> > > > > > > > > > > > > > > > > > > > > reading
>> > > > > > > > > > > > > > > > > > > > > > the thread with following
>> > questions:
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > 1. Naming confusion -
>> > > registerCatalog()
>> > > > > and
>> > > > > > > > > > > > addCatalog()
>> > > > > > > > > > > > > > have
>> > > > > > > > > > > > > > > > no
>> > > > > > > > > > > > > > > > > > big
>> > > > > > > > > > > > > > > > > > > > > > difference based on their names.
>> > One
>> > > of
>> > > > > > them is
>> > > > > > > > > > > > > responsible
>> > > > > > > > > > > > > > > for
>> > > > > > > > > > > > > > > > > > data
>> > > > > > > > > > > > > > > > > > > > > > persistence. How about
>> > > > persistCatalog()?
>> > > > > > > > > > > > > > > > > > > > > > 2. As you mentioned that
>> > Map<String,
>> > > > > > Catalog>
>> > > > > > > > > > > catalogs
>> > > > > > > > > > > > is
>> > > > > > > > > > > > > > > used
>> > > > > > > > > > > > > > > > > as a
>> > > > > > > > > > > > > > > > > > > > cache
>> > > > > > > > > > > > > > > > > > > > > > and catalogStore is used for
>> data
>> > > > > > persistence.
>> > > > > > > > I
>> > > > > > > > > > > would
>> > > > > > > > > > > > > > > suggest
>> > > > > > > > > > > > > > > > > > > > describing
>> > > > > > > > > > > > > > > > > > > > > > their purpose conceptually and
>> > > clearly
>> > > > in
>> > > > > > the
>> > > > > > > > > FLIP.
>> > > > > > > > > > > > Some
>> > > > > > > > > > > > > > > common
>> > > > > > > > > > > > > > > > > > cache
>> > > > > > > > > > > > > > > > > > > > > > features should be implemented,
>> > i.e.
>> > > > data
>> > > > > > in
>> > > > > > > > the
>> > > > > > > > > > > cache
>> > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > store
>> > > > > > > > > > > > > > > > > > > > > should
>> > > > > > > > > > > > > > > > > > > > > > be consistent. Same Catalog
>> > instance
>> > > > > > should be
>> > > > > > > > > > found
>> > > > > > > > > > > in
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > store
>> > > > > > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > > > the cache(either it has been
>> > > > initialized
>> > > > > > or it
>> > > > > > > > > will
>> > > > > > > > > > > be
>> > > > > > > > > > > > > lazy
>> > > > > > > > > > > > > > > > > > > > initialized)
>> > > > > > > > > > > > > > > > > > > > > > for the same catalog name. The
>> > > > > consistency
>> > > > > > will
>> > > > > > > > > be
>> > > > > > > > > > > > taken
>> > > > > > > > > > > > > > care
>> > > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > while
>> > > > > > > > > > > > > > > > > > > > > > updating the catalog.
>> > > > > > > > > > > > > > > > > > > > > > 3. As the above discussion moves
>> > > > forward,
>> > > > > > the
>> > > > > > > > > > option
>> > > > > > > > > > > 2
>> > > > > > > > > > > > > > > solution
>> > > > > > > > > > > > > > > > > > looks
>> > > > > > > > > > > > > > > > > > > > > more
>> > > > > > > > > > > > > > > > > > > > > > like a replacement of option 1,
>> > > > because,
>> > > > > > afaiu,
>> > > > > > > > > > > issues
>> > > > > > > > > > > > > > > > mentioned
>> > > > > > > > > > > > > > > > > > > > > > previously with option 1 are not
>> > > solved
>> > > > > > yet. Do
>> > > > > > > > > you
>> > > > > > > > > > > > still
>> > > > > > > > > > > > > > > want
>> > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > propose
>> > > > > > > > > > > > > > > > > > > > > > both options and ask for
>> > suggestions
>> > > > for
>> > > > > > both
>> > > > > > > > of
>> > > > > > > > > > > them?
>> > > > > > > > > > > > > > > > > > > > > > 4. After you updated the FLIP,
>> > there
>> > > > are
>> > > > > > some
>> > > > > > > > > > > > > inconsistent
>> > > > > > > > > > > > > > > > > > > descriptions
>> > > > > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > > > the content.  Would you like to
>> > clean
>> > > > > them
>> > > > > > up?
>> > > > > > > > > > > Thanks!
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > > > > > > > > > > Jing
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > On Fri, Apr 7, 2023 at 9:24 AM
>> Feng
>> > > > Jin <
>> > > > > > > > > > > > > > > jinfeng1...@gmail.com
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > hi Shammon
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > Thank you for your response,
>> and
>> > I
>> > > > > > completely
>> > > > > > > > > > agree
>> > > > > > > > > > > > > with
>> > > > > > > > > > > > > > > your
>> > > > > > > > > > > > > > > > > > point
>> > > > > > > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > > > > > view.
>> > > > > > > > > > > > > > > > > > > > > > > Initially, I may have over
>> > > > complicated
>> > > > > > the
>> > > > > > > > > whole
>> > > > > > > > > > > > issue.
>> > > > > > > > > > > > > > > First
>> > > > > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > > > > > foremost,
>> > > > > > > > > > > > > > > > > > > > > > > we need to consider the
>> > persistence
>> > > > of
>> > > > > > the
>> > > > > > > > > > > Catalog's
>> > > > > > > > > > > > > > > > > > Configuration.
>> > > > > > > > > > > > > > > > > > > > > > > If we only need to provide
>> > > > persistence
>> > > > > > for
>> > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > Configuration,
>> > > > > > > > > > > > > > > > > > > we
>> > > > > > > > > > > > > > > > > > > > > can
>> > > > > > > > > > > > > > > > > > > > > > > add a toConfiguration method
>> to
>> > the
>> > > > > > Catalog
>> > > > > > > > > > > > interface.
>> > > > > > > > > > > > > > > > > > > > > > > This method can convert a
>> Catalog
>> > > > > > instance
>> > > > > > > > to a
>> > > > > > > > > > > > > > Map<String,
>> > > > > > > > > > > > > > > > > > String>
>> > > > > > > > > > > > > > > > > > > > > > > properties, and the default
>> > > > > > implementation
>> > > > > > > > will
>> > > > > > > > > > > throw
>> > > > > > > > > > > > > an
>> > > > > > > > > > > > > > > > > > exception.
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > public interface Catalog {
>> > > > > > > > > > > > > > > > > > > > > > >    /**
>> > > > > > > > > > > > > > > > > > > > > > >    * Returns a map containing
>> the
>> > > > > > properties
>> > > > > > > > of
>> > > > > > > > > > the
>> > > > > > > > > > > > > > catalog
>> > > > > > > > > > > > > > > > > > object.
>> > > > > > > > > > > > > > > > > > > > > > >    *
>> > > > > > > > > > > > > > > > > > > > > > >    * @return a map containing
>> the
>> > > > > > properties
>> > > > > > > > of
>> > > > > > > > > > the
>> > > > > > > > > > > > > > catalog
>> > > > > > > > > > > > > > > > > > object
>> > > > > > > > > > > > > > > > > > > > > > >    * @throws
>> > > > > > UnsupportedOperationException if
>> > > > > > > > > the
>> > > > > > > > > > > > > > > > implementing
>> > > > > > > > > > > > > > > > > > > class
>> > > > > > > > > > > > > > > > > > > > > does
>> > > > > > > > > > > > > > > > > > > > > > > not override
>> > > > > > > > > > > > > > > > > > > > > > >    * the default
>> implementation
>> > of
>> > > > this
>> > > > > > > > method
>> > > > > > > > > > > > > > > > > > > > > > >    */
>> > > > > > > > > > > > > > > > > > > > > > >   default Map<String, String>
>> > > > > > toProperties()
>> > > > > > > > {
>> > > > > > > > > > > > > > > > > > > > > > >     throw new
>> > > > > > > > > > UnsupportedOperationException("Please
>> > > > > > > > > > > > > > > implement
>> > > > > > > > > > > > > > > > > > > > > > toProperties
>> > > > > > > > > > > > > > > > > > > > > > > for this catalog");
>> > > > > > > > > > > > > > > > > > > > > > >   }
>> > > > > > > > > > > > > > > > > > > > > > > }
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > The specific process is as
>> > follows:
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > 1.  If the user has
>> configured a
>> > > > > > > > CatalogStore,
>> > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > toConfiguration()
>> > > > > > > > > > > > > > > > > > > > > > method
>> > > > > > > > > > > > > > > > > > > > > > > will be called when
>> registering a
>> > > > > Catalog
>> > > > > > > > > > instance
>> > > > > > > > > > > > with
>> > > > > > > > > > > > > > > > > > > > > > > registerCatalog(String
>> > catalogName,
>> > > > > > Catalog
>> > > > > > > > > > > catalog).
>> > > > > > > > > > > > > The
>> > > > > > > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > > > > > > instance
>> > > > > > > > > > > > > > > > > > > > > > > will be converted to a
>> > Map<String,
>> > > > > > String>
>> > > > > > > > > > > properties
>> > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > saved
>> > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > CatalogStore. If some Catalog
>> > > > instances
>> > > > > > do
>> > > > > > > > not
>> > > > > > > > > > > > > implement
>> > > > > > > > > > > > > > > this
>> > > > > > > > > > > > > > > > > > > method,
>> > > > > > > > > > > > > > > > > > > > > an
>> > > > > > > > > > > > > > > > > > > > > > > exception will be thrown.
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > 2.  If the user does not use a
>> > > > > > CatalogStore,
>> > > > > > > > > the
>> > > > > > > > > > > > > > > > > > toConfiguration()
>> > > > > > > > > > > > > > > > > > > > > method
>> > > > > > > > > > > > > > > > > > > > > > > will not be called, ensuring
>> > > > > consistency
>> > > > > > with
>> > > > > > > > > the
>> > > > > > > > > > > > > > original
>> > > > > > > > > > > > > > > > > > process.
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > 3. Saving both the Map<String,
>> > > > Catalog>
>> > > > > > > > > catalogs
>> > > > > > > > > > > and
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > CatalogStore
>> > > > > > > > > > > > > > > > > > > > > at
>> > > > > > > > > > > > > > > > > > > > > > > the same time can also avoid
>> > > > conflicts
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > For lazy initialization:
>> > > > > > > > > > > > > > > > > > > > > > > we can start from the Catalog
>> > > itself
>> > > > > and
>> > > > > > > > > provide
>> > > > > > > > > > a
>> > > > > > > > > > > > > > > dedicated
>> > > > > > > > > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > > > > > > > implementation for lazy
>> loading,
>> > > such
>> > > > > as
>> > > > > > > > > > > > > > > ConfigurationCatalog
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > public class
>> ConfigurationCatalog
>> > > > > > implements
>> > > > > > > > > > > Catalog
>> > > > > > > > > > > > {
>> > > > > > > > > > > > > > > > > > > > > > >
>> ConfigurationCatalog(Map<String,
>> > > > > String>
>> > > > > > > > > > > properties)
>> > > > > > > > > > > > {
>> > > > > > > > > > > > > > > > > > > > > > > }
>> > > > > > > > > > > > > > > > > > > > > > > }
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > I have added this design to
>> the
>> > > FLIP.
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > Best,
>> > > > > > > > > > > > > > > > > > > > > > > Feng
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > On Thu, Apr 6, 2023 at
>> 10:03 AM
>> > > > Shammon
>> > > > > > FY <
>> > > > > > > > > > > > > > > > zjur...@gmail.com>
>> > > > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > Hi Feng
>> > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > Thanks for your answer.
>> > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > I have no questions about
>> the
>> > > > > > functionality
>> > > > > > > > > of
>> > > > > > > > > > > > > > > > > `CatalogStore`,
>> > > > > > > > > > > > > > > > > > > but
>> > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > different operations of
>> > multiple
>> > > > > > > > > > > `registerCatalog`
>> > > > > > > > > > > > or
>> > > > > > > > > > > > > > > > > > > > `storeCatalog`
>> > > > > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > > > > > `CatalogManager`. The
>> > > > implementation
>> > > > > in
>> > > > > > > > Trino
>> > > > > > > > > > is
>> > > > > > > > > > > > also
>> > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > same,
>> > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > `CatalogManager` in trino
>> only
>> > > has
>> > > > > one
>> > > > > > > > > > > > > `createCatalog`,
>> > > > > > > > > > > > > > > > which
>> > > > > > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > > > > > > save
>> > > > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > catalog to memory and
>> > > > `CatalogStore`.
>> > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > I think we don't need to add
>> > > > another
>> > > > > > > > > > > > > `registerCatalog`
>> > > > > > > > > > > > > > or
>> > > > > > > > > > > > > > > > > > > > > `addCatalog`
>> > > > > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > > > > save a catalog in
>> `Map<String,
>> > > > > Catalog>
>> > > > > > > > > > catalogs`
>> > > > > > > > > > > > or
>> > > > > > > > > > > > > > > > > > > `CatalogStore
>> > > > > > > > > > > > > > > > > > > > > > > > catalogStore`.  As you
>> > mentioned
>> > > > > > before,
>> > > > > > > > the
>> > > > > > > > > > > > > > `Map<String,
>> > > > > > > > > > > > > > > > > > > Catalog>
>> > > > > > > > > > > > > > > > > > > > > > > > catalogs` is a cache in
>> > > > > > `CatalogManager`.
>> > > > > > > > How
>> > > > > > > > > > > about
>> > > > > > > > > > > > > > > saving
>> > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > catalog
>> > > > > > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > > > > > `Map<String, Catalog>
>> catalogs`
>> > > and
>> > > > > > > > > > `CatalogStore
>> > > > > > > > > > > > > > > > > catalogStore`
>> > > > > > > > > > > > > > > > > > > > > > together
>> > > > > > > > > > > > > > > > > > > > > > > > when it is registered or
>> added
>> > in
>> > > > > > > > > > > `CatalogManager`?
>> > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > Best,
>> > > > > > > > > > > > > > > > > > > > > > > > Shammon FY
>> > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > On Tue, Apr 4, 2023 at
>> 5:22 PM
>> > > Feng
>> > > > > > Jin <
>> > > > > > > > > > > > > > > > > jinfeng1...@gmail.com
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > Thank you for your reply.
>> I
>> > am
>> > > > very
>> > > > > > sorry
>> > > > > > > > > for
>> > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > misunderstanding
>> > > > > > > > > > > > > > > > > > > > > > > caused
>> > > > > > > > > > > > > > > > > > > > > > > > > by my deviation from the
>> > > original
>> > > > > > > > > discussion.
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > @Shammon
>> > > > > > > > > > > > > > > > > > > > > > > > > > I found there is a
>> > > > pre-discussion
>> > > > > > [1]
>> > > > > > > > for
>> > > > > > > > > > > this
>> > > > > > > > > > > > > FLIP
>> > > > > > > > > > > > > > > > > > > > > > > > > Yes, there was indeed
>> such a
>> > > > > > discussion
>> > > > > > > > > > before.
>> > > > > > > > > > > > > > > However,
>> > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > > > designing
>> > > > > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > whole solution, I found
>> that
>> > > the
>> > > > > > logic of
>> > > > > > > > > > > > > > > CatalogManager
>> > > > > > > > > > > > > > > > > > itself
>> > > > > > > > > > > > > > > > > > > > > > doesn't
>> > > > > > > > > > > > > > > > > > > > > > > > > need to change much. *We
>> > cannot
>> > > > > only
>> > > > > > > > > persist
>> > > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > > instances
>> > > > > > > > > > > > > > > > > > > > > > > > themselves*,
>> > > > > > > > > > > > > > > > > > > > > > > > > so exposing only
>> > > > > > registerCatalog(String
>> > > > > > > > > > > > > catalogName,
>> > > > > > > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > > > > > catalog)
>> > > > > > > > > > > > > > > > > > > > > > > > might
>> > > > > > > > > > > > > > > > > > > > > > > > > not be enough to save
>> > Catalogs,
>> > > > > > because
>> > > > > > > > in
>> > > > > > > > > > the
>> > > > > > > > > > > > end
>> > > > > > > > > > > > > we
>> > > > > > > > > > > > > > > > still
>> > > > > > > > > > > > > > > > > > > need
>> > > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > > > save
>> > > > > > > > > > > > > > > > > > > > > > > > > the configurations
>> > > corresponding
>> > > > to
>> > > > > > the
>> > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > instances.
>> > > > > > > > > > > > > > > > > > > > > > Therefore,
>> > > > > > > > > > > > > > > > > > > > > > > I
>> > > > > > > > > > > > > > > > > > > > > > > > > decided to introduce the
>> > > > > CatalogStore
>> > > > > > > > > > interface
>> > > > > > > > > > > > for
>> > > > > > > > > > > > > > > > > > > configuration
>> > > > > > > > > > > > > > > > > > > > > > > > > persistence. Regarding
>> this
>> > > > part, I
>> > > > > > also
>> > > > > > > > > took
>> > > > > > > > > > > > > > > inspiration
>> > > > > > > > > > > > > > > > > > from
>> > > > > > > > > > > > > > > > > > > > > > Trino's
>> > > > > > > > > > > > > > > > > > > > > > > > > implementation[1].
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > @yuxia
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > 1: The mechanism of
>> > handling
>> > > > > > catalog
>> > > > > > > > with
>> > > > > > > > > > the
>> > > > > > > > > > > > > same
>> > > > > > > > > > > > > > > name
>> > > > > > > > > > > > > > > > > > > looks a
>> > > > > > > > > > > > > > > > > > > > > > > little
>> > > > > > > > > > > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > > > > > > > complex to me.
>> > > > > > > > > > > > > > > > > > > > > > > > > Thank you for the
>> > suggestion. I
>> > > > > will
>> > > > > > > > > provide
>> > > > > > > > > > a
>> > > > > > > > > > > > > > detailed
>> > > > > > > > > > > > > > > > > > > > description
>> > > > > > > > > > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > > > > > > > > code examples for this
>> part,
>> > > and
>> > > > > add
>> > > > > > it
>> > > > > > > > to
>> > > > > > > > > > the
>> > > > > > > > > > > > > FLIP.
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > 2: TBH, the method name
>> > > > > > `addCatalog`
>> > > > > > > > > still
>> > > > > > > > > > > > looks
>> > > > > > > > > > > > > > > > confused
>> > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > me.
>> > > > > > > > > > > > > > > > > > > > > > > IIUC,
>> > > > > > > > > > > > > > > > > > > > > > > > > this method is for storing
>> > > > catalog
>> > > > > to
>> > > > > > > > > > > > CatalogStore,
>> > > > > > > > > > > > > > how
>> > > > > > > > > > > > > > > > > about
>> > > > > > > > > > > > > > > > > > > > > > renaming
>> > > > > > > > > > > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > > > > > > > > > > to `storeCatalog`? It's
>> very
>> > > > > personal
>> > > > > > > > > > opinion,
>> > > > > > > > > > > > you
>> > > > > > > > > > > > > > can
>> > > > > > > > > > > > > > > > > decide
>> > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > take
>> > > > > > > > > > > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > > > > > > > > > or
>> > > > > > > > > > > > > > > > > > > > > > > > > not by your self.
>> > > > > > > > > > > > > > > > > > > > > > > > > StoreCatalog looks more
>> > > intuitive
>> > > > > to
>> > > > > > me.
>> > > > > > > > I
>> > > > > > > > > > > don't
>> > > > > > > > > > > > > see
>> > > > > > > > > > > > > > > any
>> > > > > > > > > > > > > > > > > > > problem
>> > > > > > > > > > > > > > > > > > > > > with
>> > > > > > > > > > > > > > > > > > > > > > > it.
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > 3.For CREATE CATALOG
>> > > statement,
>> > > > > > which
>> > > > > > > > > > method
>> > > > > > > > > > > > will
>> > > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > > > > called?
>> > > > > > > > > > > > > > > > > > > > > > > > > `registerCatalog` or
>> > > > `addCatalog`?
>> > > > > > I'm
>> > > > > > > > > > > wondering
>> > > > > > > > > > > > > > > whether
>> > > > > > > > > > > > > > > > > user
>> > > > > > > > > > > > > > > > > > > can
>> > > > > > > > > > > > > > > > > > > > > > add a
>> > > > > > > > > > > > > > > > > > > > > > > > > catalog to store with SQL
>> > > > stement.
>> > > > > > > > > > > > > > > > > > > > > > > > > For CREATE CATALOG, my
>> > original
>> > > > > > design
>> > > > > > > > was
>> > > > > > > > > to
>> > > > > > > > > > > add
>> > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > > directly
>> > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > CatalogStore, but this
>> would
>> > > > > disrupt
>> > > > > > the
>> > > > > > > > > > > existing
>> > > > > > > > > > > > > > > logic.
>> > > > > > > > > > > > > > > > > > > > > Therefore, I
>> > > > > > > > > > > > > > > > > > > > > > > > think
>> > > > > > > > > > > > > > > > > > > > > > > > > we can do both: save the
>> > > > > > configuration to
>> > > > > > > > > the
>> > > > > > > > > > > > > > > > CatalogStore
>> > > > > > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > > > > > > initialize
>> > > > > > > > > > > > > > > > > > > > > > > > > the Catalog instance at
>> the
>> > > same
>> > > > > time
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > 3. Is it really
>> neccessary
>> > to
>> > > > > > provide a
>> > > > > > > > > > > default
>> > > > > > > > > > > > > > > > > > implmentation
>> > > > > > > > > > > > > > > > > > > > for
>> > > > > > > > > > > > > > > > > > > > > > > > > interface
>> > > `CatalogStoreFactory`?
>> > > > > > > > > > > > > > > > > > > > > > > > > I think it is necessary,
>> > > > otherwise
>> > > > > we
>> > > > > > > > would
>> > > > > > > > > > > need
>> > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > introduce
>> > > > > > > > > > > > > > > > > > > an
>> > > > > > > > > > > > > > > > > > > > > > > > additional
>> > > > > > > > > > > > > > > > > > > > > > > > > Map to store the
>> > configuration
>> > > > for
>> > > > > > lazy
>> > > > > > > > > > > loading.
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > 4: About asynchronous
>> > > > > registration
>> > > > > > for
>> > > > > > > > > > > catalog.
>> > > > > > > > > > > > > > > > > > > > > > > > > I don't think
>> > > > > registerCatalog(String
>> > > > > > > > > > > catalogName,
>> > > > > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > > > > catalog)
>> > > > > > > > > > > > > > > > > > > > > > can
>> > > > > > > > > > > > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > > > > > > > > > > > made into an asynchronous
>> > > > interface
>> > > > > > > > because
>> > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > is
>> > > > > > > > > > > > > > > > > > already
>> > > > > > > > > > > > > > > > > > > an
>> > > > > > > > > > > > > > > > > > > > > > > > instance.
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > It looks more like lazy
>> > > > > > initialization
>> > > > > > > > > for
>> > > > > > > > > > > > > catalog
>> > > > > > > > > > > > > > > than
>> > > > > > > > > > > > > > > > > > > > > > asynchronous
>> > > > > > > > > > > > > > > > > > > > > > > > > registration, right?
>> > > > > > > > > > > > > > > > > > > > > > > > > Indeed, my description was
>> > > > > > inaccurate. It
>> > > > > > > > > > > should
>> > > > > > > > > > > > be
>> > > > > > > > > > > > > > > lazy
>> > > > > > > > > > > > > > > > > > > > > registration
>> > > > > > > > > > > > > > > > > > > > > > > > > instead of asynchronous
>> > > > > > registration. I
>> > > > > > > > > have
>> > > > > > > > > > > > > already
>> > > > > > > > > > > > > > > > > updated
>> > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > title
>> > > > > > > > > > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > > > > > > > the FLIP.
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > [1].
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>> https://github.com/trinodb/trino/blob/master/core/trino-main/src/main/java/io/trino/connector/CatalogStore.java
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Apr 4, 2023 at
>> > 4:27 PM
>> > > > > > Shammon
>> > > > > > > > FY <
>> > > > > > > > > > > > > > > > > zjur...@gmail.com
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > Hi Feng
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > I think if there is a
>> > > > > > `registerCatalog`
>> > > > > > > > > > > method
>> > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > > `CatalogManager`,
>> > > > > > > > > > > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > > > > > > > > > > > confuse users whether a
>> > > method
>> > > > > > named
>> > > > > > > > > > > > `addCatalog`
>> > > > > > > > > > > > > > or
>> > > > > > > > > > > > > > > > > > > > > `storeCatalog`
>> > > > > > > > > > > > > > > > > > > > > > > is
>> > > > > > > > > > > > > > > > > > > > > > > > > > added.
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > And as you mentioned,
>> the
>> > > > memory
>> > > > > > > > catalog
>> > > > > > > > > > is a
>> > > > > > > > > > > > > > > `cache`,
>> > > > > > > > > > > > > > > > I
>> > > > > > > > > > > > > > > > > > > think
>> > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > concept
>> > > > > > > > > > > > > > > > > > > > > > > > > > of `cache` should not be
>> > > > exposed
>> > > > > to
>> > > > > > > > > users.
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > I found there is a
>> > > > pre-discussion
>> > > > > > [1]
>> > > > > > > > for
>> > > > > > > > > > > this
>> > > > > > > > > > > > > > FLIP.
>> > > > > > > > > > > > > > > > > Please
>> > > > > > > > > > > > > > > > > > > > > correct
>> > > > > > > > > > > > > > > > > > > > > > > me
>> > > > > > > > > > > > > > > > > > > > > > > > if
>> > > > > > > > > > > > > > > > > > > > > > > > > > I'm wrong, IIUC, the
>> > > conclusion
>> > > > > of
>> > > > > > that
>> > > > > > > > > > > > > discussion
>> > > > > > > > > > > > > > is
>> > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > use
>> > > > > > > > > > > > > > > > > > > > > > > > > > `CatalogManager` as an
>> > > > interface
>> > > > > > and
>> > > > > > > > > > > implement
>> > > > > > > > > > > > it
>> > > > > > > > > > > > > > for
>> > > > > > > > > > > > > > > > > > > different
>> > > > > > > > > > > > > > > > > > > > > > > stores
>> > > > > > > > > > > > > > > > > > > > > > > > > such
>> > > > > > > > > > > > > > > > > > > > > > > > > > as memory, file and
>> > external
>> > > > > > system.
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > I think there is a gap
>> > > between
>> > > > > the
>> > > > > > > > > current
>> > > > > > > > > > > FLIP
>> > > > > > > > > > > > > > > design
>> > > > > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > > that
>> > > > > > > > > > > > > > > > > > > > > > > > > conclusion.
>> > > > > > > > > > > > > > > > > > > > > > > > > > What about the proposal
>> of
>> > > the
>> > > > > > > > discussion
>> > > > > > > > > > in
>> > > > > > > > > > > > > thread
>> > > > > > > > > > > > > > > > [1] ?
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > [1]
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > >
>> > > > https://lists.apache.org/thread/9bnjblgd9wvrl75lkm84oo654c4lqv70
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > Best,
>> > > > > > > > > > > > > > > > > > > > > > > > > > Shammon FY
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Apr 4, 2023 at
>> > > 3:41 PM
>> > > > > > yuxia <
>> > > > > > > > > > > > > > > > > > > > > luoyu...@alumni.sjtu.edu.cn>
>> > > > > > > > > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks Feng for
>> driving
>> > > this
>> > > > > > FLIP.
>> > > > > > > > > > > > > > > > > > > > > > > > > > > I have few comments:
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 1: The mechanism of
>> > > handling
>> > > > > > catalog
>> > > > > > > > > with
>> > > > > > > > > > > the
>> > > > > > > > > > > > > > same
>> > > > > > > > > > > > > > > > name
>> > > > > > > > > > > > > > > > > > > > looks a
>> > > > > > > > > > > > > > > > > > > > > > > > little
>> > > > > > > > > > > > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > > > > > > > > > complex to me. I think
>> > > it'll
>> > > > be
>> > > > > > > > better
>> > > > > > > > > to
>> > > > > > > > > > > > > explain
>> > > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > java
>> > > > > > > > > > > > > > > > > > > > > > > doc
>> > > > > > > > > > > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > > > > > > > > > these methods and
>> give a
>> > > > brief
>> > > > > > > > example
>> > > > > > > > > in
>> > > > > > > > > > > > this
>> > > > > > > > > > > > > > > FLIP.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 2: TBH, the method
>> name
>> > > > > > `addCatalog`
>> > > > > > > > > > still
>> > > > > > > > > > > > > looks
>> > > > > > > > > > > > > > > > > confused
>> > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > me.
>> > > > > > > > > > > > > > > > > > > > > > > > IIUC,
>> > > > > > > > > > > > > > > > > > > > > > > > > > > this method is for
>> > storing
>> > > > > > catalog to
>> > > > > > > > > > > > > > CatalogStore,
>> > > > > > > > > > > > > > > > how
>> > > > > > > > > > > > > > > > > > > about
>> > > > > > > > > > > > > > > > > > > > > > > > renaming
>> > > > > > > > > > > > > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > > > > > > > > > > > > to `storeCatalog`?
>> It's
>> > > very
>> > > > > > personal
>> > > > > > > > > > > > opinion,
>> > > > > > > > > > > > > > you
>> > > > > > > > > > > > > > > > can
>> > > > > > > > > > > > > > > > > > > decide
>> > > > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > > > take
>> > > > > > > > > > > > > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > > > > > > > > > > > or
>> > > > > > > > > > > > > > > > > > > > > > > > > > > not by your self.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 3: For CREATE CATALOG
>> > > > > statement,
>> > > > > > > > which
>> > > > > > > > > > > method
>> > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > > > > > called?
>> > > > > > > > > > > > > > > > > > > > > > > > > > > `registerCatalog` or
>> > > > > > `addCatalog`?
>> > > > > > > > I'm
>> > > > > > > > > > > > > wondering
>> > > > > > > > > > > > > > > > > whether
>> > > > > > > > > > > > > > > > > > > user
>> > > > > > > > > > > > > > > > > > > > > can
>> > > > > > > > > > > > > > > > > > > > > > > > add a
>> > > > > > > > > > > > > > > > > > > > > > > > > > > catalog to store with
>> SQL
>> > > > > > stement.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 3: Is it really
>> > neccessary
>> > > to
>> > > > > > > > provide a
>> > > > > > > > > > > > default
>> > > > > > > > > > > > > > > > > > > implmentation
>> > > > > > > > > > > > > > > > > > > > > for
>> > > > > > > > > > > > > > > > > > > > > > > > > > > interface
>> > > > > `CatalogStoreFactory`?
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 4: About asynchronous
>> > > > > > registration
>> > > > > > > > for
>> > > > > > > > > > > > catalog.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > When creating a
>> catalog
>> > > > with
>> > > > > > CREATE
>> > > > > > > > > > > > CATALOG,
>> > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > asynchronous
>> > > > > > > > > > > > > > > > > > > > > > > > > > > registration method is
>> > used
>> > > > by
>> > > > > > > > default.
>> > > > > > > > > > > > > > > > > > > > > > > > > > > If asynchronous
>> > > registration
>> > > > is
>> > > > > > the
>> > > > > > > > > > default
>> > > > > > > > > > > > > > > behavior,
>> > > > > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > > > > > there
>> > > > > > > > > > > > > > > > > > > > > > any
>> > > > > > > > > > > > > > > > > > > > > > > > way
>> > > > > > > > > > > > > > > > > > > > > > > > > > > that user can switch
>> to
>> > > > > > synchronous
>> > > > > > > > > > > > > registration
>> > > > > > > > > > > > > > > just
>> > > > > > > > > > > > > > > > > > like
>> > > > > > > > > > > > > > > > > > > > > > before?
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Will both method
>> > > `addCatalog`
>> > > > > and
>> > > > > > > > > > > > > > `registerCatalog`
>> > > > > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > > > > > > > > asynchronous
>> > > > > > > > > > > > > > > > > > > > > > > > > > > registration?
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > IIUC, in asynchronous
>> > > > > > registration,
>> > > > > > > > it
>> > > > > > > > > > may
>> > > > > > > > > > > > well
>> > > > > > > > > > > > > > > that
>> > > > > > > > > > > > > > > > > > CREATE
>> > > > > > > > > > > > > > > > > > > > > > CATALOG
>> > > > > > > > > > > > > > > > > > > > > > > > > > > executes successfully,
>> > but
>> > > > then
>> > > > > > the
>> > > > > > > > > > > following
>> > > > > > > > > > > > > > > CREATE
>> > > > > > > > > > > > > > > > > > TABLE
>> > > > > > > > > > > > > > > > > > > > > > > statement
>> > > > > > > > > > > > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > > > > > > > > > > > > fail for the catalog
>> fail
>> > > to
>> > > > > > open.
>> > > > > > > > > > > > > > > > > > > > > > > > > > > I think it's a break
>> > change
>> > > > > which
>> > > > > > > > > should
>> > > > > > > > > > be
>> > > > > > > > > > > > > > > > highlighted
>> > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > this
>> > > > > > > > > > > > > > > > > > > > > > > FLIP,
>> > > > > > > > > > > > > > > > > > > > > > > > > may
>> > > > > > > > > > > > > > > > > > > > > > > > > > > be in compatibility
>> part.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > BTW, by saying
>> > asynchronous
>> > > > > > > > > > registration, I
>> > > > > > > > > > > > > would
>> > > > > > > > > > > > > > > > like
>> > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > expect
>> > > > > > > > > > > > > > > > > > > > > > > > there
>> > > > > > > > > > > > > > > > > > > > > > > > > > > will be an executor to
>> > open
>> > > > or
>> > > > > > > > register
>> > > > > > > > > > > > catalog
>> > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > background,
>> > > > > > > > > > > > > > > > > > > > > > > > but
>> > > > > > > > > > > > > > > > > > > > > > > > > > from
>> > > > > > > > > > > > > > > > > > > > > > > > > > > your previous
>> comments,
>> > > > > > > > > > > > > > > > > > > > > > > > > > > "the Catalog instance
>> > will
>> > > be
>> > > > > > > > > initialized
>> > > > > > > > > > > if
>> > > > > > > > > > > > it
>> > > > > > > > > > > > > > has
>> > > > > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > > > been
>> > > > > > > > > > > > > > > > > > > > > > > > > initialized
>> > > > > > > > > > > > > > > > > > > > > > > > > > > yet. If the
>> > initialization
>> > > > > > process
>> > > > > > > > > fails,
>> > > > > > > > > > > > these
>> > > > > > > > > > > > > > > > > > statements
>> > > > > > > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > > > > > > > > > > > > > executed
>> successfully."
>> > > > > > > > > > > > > > > > > > > > > > > > > > > It looks more like
>> lazy
>> > > > > > > > initialization
>> > > > > > > > > > for
>> > > > > > > > > > > > > > catalog
>> > > > > > > > > > > > > > > > than
>> > > > > > > > > > > > > > > > > > > > > > > asynchronous
>> > > > > > > > > > > > > > > > > > > > > > > > > > > registration, right?
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Yuxia
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > ----- 原始邮件 -----
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 发件人: "Feng Jin" <
>> > > > > > > > jinfeng1...@gmail.com
>> > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 收件人: "dev" <
>> > > > > dev@flink.apache.org
>> > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 发送时间: 星期一, 2023年 4 月
>> 03日
>> > 下午
>> > > > > > 3:27:45
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 主题: Re: [DISCUSS] FLIP
>> > 295:
>> > > > > > Support
>> > > > > > > > > > > > persistence
>> > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > > > > > > > > > configuration
>> > > > > > > > > > > > > > > > > > > > > > > > > > > and asynchronous
>> > > registration
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Hi everyone, Thank you
>> > all
>> > > > for
>> > > > > > your
>> > > > > > > > > > > interest
>> > > > > > > > > > > > in
>> > > > > > > > > > > > > > > this
>> > > > > > > > > > > > > > > > > > > DISCUSS.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > @Shammon
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > How to handle a
>> catalog
>> > > > with
>> > > > > > the
>> > > > > > > > same
>> > > > > > > > > > > name
>> > > > > > > > > > > > > that
>> > > > > > > > > > > > > > > > > exists
>> > > > > > > > > > > > > > > > > > > for
>> > > > > > > > > > > > > > > > > > > > > both
>> > > > > > > > > > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > > > > > > > > them?
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > I believe this is a
>> > crucial
>> > > > > > point.
>> > > > > > > > > Based
>> > > > > > > > > > on
>> > > > > > > > > > > > my
>> > > > > > > > > > > > > > > > current
>> > > > > > > > > > > > > > > > > > > > personal
>> > > > > > > > > > > > > > > > > > > > > > > > > > > understanding, the
>> > > > Map<String,
>> > > > > > > > Catalog>
>> > > > > > > > > > > > > catalogs
>> > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > > > serve
>> > > > > > > > > > > > > > > > > > > > as
>> > > > > > > > > > > > > > > > > > > > > a
>> > > > > > > > > > > > > > > > > > > > > > > > cache
>> > > > > > > > > > > > > > > > > > > > > > > > > > > for instantiated
>> catalogs
>> > > and
>> > > > > > have
>> > > > > > > > the
>> > > > > > > > > > > > highest
>> > > > > > > > > > > > > > > > > priority.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > There are three
>> methods
>> > > that
>> > > > > can
>> > > > > > > > affect
>> > > > > > > > > > the
>> > > > > > > > > > > > > > > > Map<String,
>> > > > > > > > > > > > > > > > > > > > > Catalog>
>> > > > > > > > > > > > > > > > > > > > > > > > > > catalogs:
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 1.
>> registerCatalog(String
>> > > > > > > > catalogName,
>> > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > catalog)
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > This method puts the
>> > > catalog
>> > > > > > instance
>> > > > > > > > > > into
>> > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > Map<String,
>> > > > > > > > > > > > > > > > > > > > > > Catalog>
>> > > > > > > > > > > > > > > > > > > > > > > > > > > catalogs.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 2.
>> > unregisterCatalog(String
>> > > > > > > > > catalogName)
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > This method removes
>> the
>> > > > catalog
>> > > > > > > > > instance
>> > > > > > > > > > > > > > > > corresponding
>> > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > > > catalogName
>> > > > > > > > > > > > > > > > > > > > > > > > > > > from the Map<String,
>> > > Catalog>
>> > > > > > > > catalogs.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 3. getCatalog(String
>> > > > > catalogName)
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > This method first
>> > retrieves
>> > > > the
>> > > > > > > > > > > corresponding
>> > > > > > > > > > > > > > > catalog
>> > > > > > > > > > > > > > > > > > > > instance
>> > > > > > > > > > > > > > > > > > > > > > from
>> > > > > > > > > > > > > > > > > > > > > > > > > > > the Map<String,
>> Catalog>
>> > > > > > catalogs. If
>> > > > > > > > > the
>> > > > > > > > > > > > > catalog
>> > > > > > > > > > > > > > > > does
>> > > > > > > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > > > > > exist,
>> > > > > > > > > > > > > > > > > > > > > > > it
>> > > > > > > > > > > > > > > > > > > > > > > > > > > retrieves the
>> > corresponding
>> > > > > > > > > configuration
>> > > > > > > > > > > > from
>> > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > CatalogStore,
>> > > > > > > > > > > > > > > > > > > > > > > > > > > initializes it, and
>> puts
>> > > the
>> > > > > > > > > initialized
>> > > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > instance
>> > > > > > > > > > > > > > > > > > > > into
>> > > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Map<String, Catalog>
>> > > > catalogs.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > The following two
>> methods
>> > > > only
>> > > > > > modify
>> > > > > > > > > the
>> > > > > > > > > > > > > > > > configuration
>> > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > CatalogStore:
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 1. addCatalog(String
>> > > > > catalogName,
>> > > > > > > > > > > Map<String,
>> > > > > > > > > > > > > > > String>
>> > > > > > > > > > > > > > > > > > > > > properties)
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > This method saves the
>> > > > > properties
>> > > > > > to
>> > > > > > > > the
>> > > > > > > > > > > > > > > catalogStore
>> > > > > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > > > checks
>> > > > > > > > > > > > > > > > > > > > > > > > > > > whether there is a
>> > > > catalogName
>> > > > > > with
>> > > > > > > > the
>> > > > > > > > > > > same
>> > > > > > > > > > > > > > name.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 2.
>> removeCatalog(String
>> > > > > > catalogName)
>> > > > > > > > > > > > > > > > > > > > > > > > > > > This method removes
>> the
>> > > > > specified
>> > > > > > > > > > > > configuration
>> > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > specified
>> > > > > > > > > > > > > > > > > > > > > > > > > > > catalogName in the
>> > > > > catalogStore.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > The following are
>> > possible
>> > > > > > conflict
>> > > > > > > > > > > > scenarios:
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 1. When the
>> corresponding
>> > > > > > catalogName
>> > > > > > > > > > > already
>> > > > > > > > > > > > > > > exists
>> > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > CatalogStore but not
>> in
>> > the
>> > > > > > > > Map<String,
>> > > > > > > > > > > > > Catalog>,
>> > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > registerCatalog(String
>> > > > > > catalogName,
>> > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > catalog)
>> > > > > > > > > > > > > > > > > > method
>> > > > > > > > > > > > > > > > > > > > can
>> > > > > > > > > > > > > > > > > > > > > > > > > > > succeed and be
>> directly
>> > > saved
>> > > > > to
>> > > > > > the
>> > > > > > > > > > > > > Map<String,
>> > > > > > > > > > > > > > > > > Catalog>
>> > > > > > > > > > > > > > > > > > > > > > catalogs.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 2. When the
>> corresponding
>> > > > > > catalogName
>> > > > > > > > > > > already
>> > > > > > > > > > > > > > > exists
>> > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > both
>> > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > CatalogStore and the
>> > > > > Map<String,
>> > > > > > > > > > Catalog>,
>> > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > registerCatalog(String
>> > > > > > > > > > > > > > > > > > > > > > > > > > > catalogName, Catalog
>> > > catalog)
>> > > > > > method
>> > > > > > > > > will
>> > > > > > > > > > > > fail.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > 3. When the
>> corresponding
>> > > > > > catalogName
>> > > > > > > > > > > already
>> > > > > > > > > > > > > > > exists
>> > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Map<String, Catalog>,
>> the
>> > > > > > > > > > addCatalog(String
>> > > > > > > > > > > > > > > > > catalogName,
>> > > > > > > > > > > > > > > > > > > > > > > Map<String,
>> > > > > > > > > > > > > > > > > > > > > > > > > > > String> properties)
>> > method
>> > > > can
>> > > > > > > > directly
>> > > > > > > > > > > save
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > properties
>> > > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > catalogStore, but the
>> > > > > > > > getCatalog(String
>> > > > > > > > > > > > > > > catalogName)
>> > > > > > > > > > > > > > > > > > method
>> > > > > > > > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > > > > > > > > > > > use the new properties
>> > for
>> > > > > > > > > initialization
>> > > > > > > > > > > > > because
>> > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > corresponding
>> > > > > > > > > > > > > > > > > > > > > > > > > > > catalog instance
>> already
>> > > > exists
>> > > > > > in
>> > > > > > > > > > catalogs
>> > > > > > > > > > > > and
>> > > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > > > > > > > > > prioritized.
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Therefore, using the
>> > > > > > > > > > > unregisterCatalog(String
>> > > > > > > > > > > > > > > > > > catalogName)
>> > > > > > > > > > > > > > > > > > > > > method
>> > > > > > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > > > > > > > remove the instance
>> > > > > > corresponding to
>> > > > > > > > > the
>> > > > > > > > > > > > > original
>> > > > > > > > > > > > > > > > > > > catalogName
>> > > > > > > > > > > > > > > > > > > > > is
>> > > > > > > > > > > > > > > > > > > > > > > > > > > necessary.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > I think it will
>> confuse
>> > > > users
>> > > > > > that
>> > > > > > > > > > > > > > > > > > > `registerCatalog(String
>> > > > > > > > > > > > > > > > > > > > > > > > > > > catalogName,Catalog
>> > > catalog)`
>> > > > > in
>> > > > > > the
>> > > > > > > > > > > > > `Map<String,
>> > > > > > > > > > > > > > > > > > Catalog>
>> > > > > > > > > > > > > > > > > > > > > > > catalogs`
>> > > > > > > > > > > > > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> `registerCatalog(String
>> > > > > > catalogName,
>> > > > > > > > > > > > > Map<String,
>> > > > > > > > > > > > > > > > > String>
>> > > > > > > > > > > > > > > > > > > > > > > properties)
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > This could potentially
>> > lead
>> > > > to
>> > > > > > > > > > confusion. I
>> > > > > > > > > > > > > > suggest
>> > > > > > > > > > > > > > > > > > > changing
>> > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > method name, perhaps
>> to
>> > > > > > > > > addCatalog(String
>> > > > > > > > > > > > > > > > catalogName,
>> > > > > > > > > > > > > > > > > > > > > > Map<String,
>> > > > > > > > > > > > > > > > > > > > > > > > > > > String> properties),
>> as
>> > > > > > previously
>> > > > > > > > > > > mentioned
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > @Hang
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > add
>> > > `registerCatalog(String
>> > > > > > > > > > > > > catalogName,Catalog
>> > > > > > > > > > > > > > > > > > catalog,
>> > > > > > > > > > > > > > > > > > > > > > > > > > > boolean lazyInit)`
>> method
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Since a catalog is
>> > already
>> > > an
>> > > > > > > > instance,
>> > > > > > > > > > > > adding
>> > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > "lazyInit"
>> > > > > > > > > > > > > > > > > > > > > > > > > > > parameter to the
>> > > > > > > > registerCatalog(String
>> > > > > > > > > > > > > > > catalogName,
>> > > > > > > > > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > > > > > > > catalog)
>> > > > > > > > > > > > > > > > > > > > > > > > > > > method may not
>> > necessarily
>> > > > > > result in
>> > > > > > > > > lazy
>> > > > > > > > > > > > > > > > > initialization.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > Do we need to think
>> > about
>> > > > > > > > encryption
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > I think encryption is
>> > > > > necessary,
>> > > > > > but
>> > > > > > > > > > > perhaps
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > encryption
>> > > > > > > > > > > > > > > > > > > > > logic
>> > > > > > > > > > > > > > > > > > > > > > > > > > > should be implemented
>> in
>> > > the
>> > > > > > > > > CatalogStore
>> > > > > > > > > > > > when
>> > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > data
>> > > > > > > > > > > > > > > > > > is
>> > > > > > > > > > > > > > > > > > > > > > actually
>> > > > > > > > > > > > > > > > > > > > > > > > > > > saved. For instance,
>> the
>> > > > > > > > > FileCatalogStore
>> > > > > > > > > > > > could
>> > > > > > > > > > > > > > > > encrypt
>> > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > data
>> > > > > > > > > > > > > > > > > > > > > > > when
>> > > > > > > > > > > > > > > > > > > > > > > > > > > it is saved to a file,
>> > > while
>> > > > > the
>> > > > > > > > > > > > > > MemoryCatalogStore
>> > > > > > > > > > > > > > > > > does
>> > > > > > > > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > > > > > > > require
>> > > > > > > > > > > > > > > > > > > > > > > > > > > encryption.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >  Do we really need
>> the
>> > > > > > > > > > > > `MemoryCatalogStore`?
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > I think it is
>> necessary
>> > to
>> > > > > have a
>> > > > > > > > > > > > > > > MemoryCatalogStore
>> > > > > > > > > > > > > > > > as
>> > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > default
>> > > > > > > > > > > > > > > > > > > > > > > > > > > implementation, which
>> > saves
>> > > > > > Catalog
>> > > > > > > > > > > > > > configurations
>> > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > memory.
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Otherwise, if we want
>> to
>> > > > > > implement
>> > > > > > > > > > > > asynchronous
>> > > > > > > > > > > > > > > > loading
>> > > > > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > > > > Catalog,
>> > > > > > > > > > > > > > > > > > > > > > > > we
>> > > > > > > > > > > > > > > > > > > > > > > > > > > would need to
>> introduce
>> > > > > > additional
>> > > > > > > > > cache.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > @Xianxun
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > What if asynchronous
>> > > > > > registration
>> > > > > > > > > > failed?
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > This is also a
>> critical
>> > > > > concern.
>> > > > > > > > When
>> > > > > > > > > > > > > executing
>> > > > > > > > > > > > > > > DDL,
>> > > > > > > > > > > > > > > > > > DQL,
>> > > > > > > > > > > > > > > > > > > or
>> > > > > > > > > > > > > > > > > > > > > DML
>> > > > > > > > > > > > > > > > > > > > > > > > > > > statements that
>> > reference a
>> > > > > > specific
>> > > > > > > > > > > Catalog,
>> > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > Catalog
>> > > > > > > > > > > > > > > > > > > > > > instance
>> > > > > > > > > > > > > > > > > > > > > > > > > > > will be initialized
>> if it
>> > > has
>> > > > > not
>> > > > > > > > been
>> > > > > > > > > > > > > > initialized
>> > > > > > > > > > > > > > > > yet.
>> > > > > > > > > > > > > > > > > > If
>> > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > initialization process
>> > > fails,
>> > > > > > these
>> > > > > > > > > > > > statements
>> > > > > > > > > > > > > > will
>> > > > > > > > > > > > > > > > not
>> > > > > > > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > > > > > > > > executed
>> > > > > > > > > > > > > > > > > > > > > > > > > > > successfully.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > nt. The Map<String,
>> > > > Catalog>
>> > > > > > > > catalogs
>> > > > > > > > > > and
>> > > > > > > > > > > > > > > > > CatalogStore
>> > > > > > > > > > > > > > > > > > > > > > > catalogstore
>> > > > > > > > > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > > > > > > > > the CatalogManager all
>> > have
>> > > > the
>> > > > > > same
>> > > > > > > > > > > catalog
>> > > > > > > > > > > > > > name,
>> > > > > > > > > > > > > > > > but
>> > > > > > > > > > > > > > > > > > > > > > correponding
>> > > > > > > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > > > > > > > different catalog
>> > > instances.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > This issue can be
>> > resolved
>> > > by
>> > > > > > > > referring
>> > > > > > > > > > to
>> > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > previous
>> > > > > > > > > > > > > > > > > > > > > > responses.
>> > > > > > > > > > > > > > > > > > > > > > > > The
>> > > > > > > > > > > > > > > > > > > > > > > > > > > key principle is that
>> the
>> > > > > Catalog
>> > > > > > > > that
>> > > > > > > > > > has
>> > > > > > > > > > > > been
>> > > > > > > > > > > > > > > most
>> > > > > > > > > > > > > > > > > > > recently
>> > > > > > > > > > > > > > > > > > > > > > used
>> > > > > > > > > > > > > > > > > > > > > > > > > > > will be given priority
>> > for
>> > > > > > subsequent
>> > > > > > > > > > use.
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > On Sun, Apr 2, 2023 at
>> > > > 10:58 PM
>> > > > > > > > Xianxun
>> > > > > > > > > > Ye
>> > > > > > > > > > > <
>> > > > > > > > > > > > > > > > > > > > > > > yesorno828...@gmail.com>
>> > > > > > > > > > > > > > > > > > > > > > > > > > > wrote:
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > Hi Feng,
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks for driving
>> this
>> > > > Flip,
>> > > > > > I do
>> > > > > > > > > > > believe
>> > > > > > > > > > > > > this
>> > > > > > > > > > > > > > > > Flip
>> > > > > > > > > > > > > > > > > > > could
>> > > > > > > > > > > > > > > > > > > > be
>> > > > > > > > > > > > > > > > > > > > > > > > helpful
>> > > > > > > > > > > > > > > > > > > > > > > > > > > for users. The firm I
>> > work
>> > > > for
>> > > > > > also
>> > > > > > > > > > > manages a
>> > > > > > > > > > > > > lot
>> > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > > catalogs,
>> > > > > > > > > > > > > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > submission of tasks
>> > becomes
>> > > > > slow
>> > > > > > > > > because
>> > > > > > > > > > of
>> > > > > > > > > > > > > > > loading a
>> > > > > > > > > > > > > > > > > > > number
>> > > > > > > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > > > > > > > > catalogs.
>> > > > > > > > > > > > > > > > > > > > > > > > > > > We obtain the
>> catalogs in
>> > > the
>> > > > > > user's
>> > > > > > > > > > Flink
>> > > > > > > > > > > > SQL
>> > > > > > > > > > > > > > > > through
>> > > > > > > > > > > > > > > > > > > > regular
>> > > > > > > > > > > > > > > > > > > > > > > > > expression
>> > > > > > > > > > > > > > > > > > > > > > > > > > > to avoid loading all
>> > > catalogs
>> > > > > to
>> > > > > > > > > improve
>> > > > > > > > > > > the
>> > > > > > > > > > > > > > speed
>> > > > > > > > > > > > > > > of
>> > > > > > > > > > > > > > > > > > task
>> > > > > > > > > > > > > > > > > > > > > > > > submission.
>> > > > > > > > > > > > > > > > > > > > > > > > > > > After reading
>> flip-295, I
>> > > > have
>> > > > > > some
>> > > > > > > > > > > > questions:
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > 1. When creating a
>> > > catalog
>> > > > > with
>> > > > > > > > > CREATE
>> > > > > > > > > > > > > CATALOG,
>> > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > asynchronous
>> > > > > > > > > > > > > > > > > > > > > > > > > > > registration method is
>> > used
>> > > > by
>> > > > > > > > default.
>> > > > > > > > > > > What
>> > > > > > > > > > > > if
>> > > > > > > > > > > > > > > > > > > asynchronous
>> > > > > > > > > > > > > > > > > > > > > > > > > registration
>> > > > > > > > > > > > > > > > > > > > > > > > > > > failed? And how to
>> > > implement
>> > > > > > > > > asynchronous
>> > > > > > > > > > > > > > > > registration?
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > 2. I also have the
>> same
>> > > > > > question
>> > > > > > > > with
>> > > > > > > > > > > > > Shammon’s
>> > > > > > > > > > > > > > > > first
>> > > > > > > > > > > > > > > > > > > > > comment.
>> > > > > > > > > > > > > > > > > > > > > > > The
>> > > > > > > > > > > > > > > > > > > > > > > > > > > Map<String, Catalog>
>> > > catalogs
>> > > > > and
>> > > > > > > > > > > > CatalogStore
>> > > > > > > > > > > > > > > > > > catalogstore
>> > > > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > CatalogManager all
>> have
>> > the
>> > > > > same
>> > > > > > > > > catalog
>> > > > > > > > > > > > name,
>> > > > > > > > > > > > > > but
>> > > > > > > > > > > > > > > > > > > > correponding
>> > > > > > > > > > > > > > > > > > > > > > to
>> > > > > > > > > > > > > > > > > > > > > > > > > > > different catalog
>> > > instances.
>> > > > > For
>> > > > > > > > > example:
>> > > > > > > > > > > > > > > catalog1->
>> > > > > > > > > > > > > > > > > > > > > jdbcCatalog
>> > > > > > > > > > > > > > > > > > > > > > in
>> > > > > > > > > > > > > > > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > > > > > > > > > > catalogs, but
>> catalog1 ->
>> > > > > > hiveCatalog
>> > > > > > > > > in
>> > > > > > > > > > > the
>> > > > > > > > > > > > > > > > > > catalogstore.
>> > > > > > > > > > > > > > > > > > > > > Would
>> > > > > > > > > > > > > > > > > > > > > > > this
>> > > > > > > > > > > > > > > > > > > > > > > > > > case
>> > > > > > > > > > > > > > > > > > > > > > > > > > > happen? Maybe we
>> should
>> > > > define
>> > > > > > > > > `catalogs`
>> > > > > > > > > > > and
>> > > > > > > > > > > > > > > > > > > `catalogstore`
>> > > > > > > > > > > > > > > > > > > > > more
>> > > > > > > > > > > > > > > > > > > > > > > > > > clearly.
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > Best regards,
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > Xianxun
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > 2023年3月31日
>> 11:13,Hang
>> > > > Ruan
>> > > > > <
>> > > > > > > > > > > > > > > > ruanhang1...@gmail.com
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > 写道:
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > > > MemoryCatalogStore
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > > >
>> > > > > > > > > > > > > > >
>> > > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > > >
>> > > > > > > > > > > >
>> > > > > > > > > > >
>> > > > > > > > > >
>> > > > > > > > >
>> > > > > > > >
>> > > > > >
>> > > > >
>> > > >
>> > >
>> >
>>
>

Reply via email to