Hi everyone,

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

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


Best,
Feng


On Mon, Jun 12, 2023 at 10:54 AM Feng Jin <jinfeng1...@gmail.com> wrote:

> hi, Hang
>
> Thanks for your reply,  Make sense to me, I updated the FLIP.
>
>
> Best,
>
> Feng
>
>
>
> On Fri, Jun 9, 2023 at 3:34 PM Hang Ruan <ruanhang1...@gmail.com> wrote:
>
>> Hi, Feng.
>>
>> I reviewed this FLIP again and found some little places that may need to
>> optimize.
>>
>> 1. `CatalogDescriptor` may need a private constructor.
>> 2. The method `initCatalog` in `CatalogManager` is not introduced.
>>
>> Best,
>> Hang
>>
>> Feng Jin <jinfeng1...@gmail.com> 于2023年6月6日周二 21:17写道:
>>
>> > Hi Leonard,
>> >
>> > Thanks for your reply.
>> >
>> > > 1. a  How to construct a CatalogDescriptor ?
>> >
>> > I think it would be helpful to add a method for constructing a
>> > CatalogDescriptor, as you mentioned in 1.c. I will update the
>> documentation
>> > later.
>> >
>> > > 1.b  How to visit the fields ? Could we use Configuration instead of
>> > Map<String, String> ?
>> >
>> > I believe that the use of Map<String, String> options is only intended
>> for
>> > creating a catalog and not for accessing internal parameters.
>> >
>> > Since all of the relevant parameters for CREATE CATALOG are also stored
>> in
>> > Map<String, String> options, my understanding is that using Map<String,
>> > String> options should suffice.
>> >
>> > Here is the implementation of execute CREATE CATALOG statement.
>> > ```java
>> > private TableResultInternal createCatalog(CreateCatalogOperation
>> operation)
>> > {
>> > String exMsg = getDDLOpExecuteErrorMsg(operation.asSummaryString());
>> > try {
>> > String catalogName = operation.getCatalogName();
>> > Map<String, String> properties = operation.getProperties();
>> >
>> > Catalog catalog =
>> > FactoryUtil.createCatalog(
>> > catalogName,
>> > properties,
>> > tableConfig,
>> > resourceManager.getUserClassLoader());
>> > catalogManager.registerCatalog(catalogName, catalog);
>> >
>> > return TableResultImpl.TABLE_RESULT_OK;
>> > } catch (CatalogException e) {
>> > throw new ValidationException(exMsg, e);
>> > }
>> > }
>> > ```
>> >
>> >
>> > >  2. Do we have plan to offer a default CatalogStore if user didn’t
>> config
>> > this?
>> >
>> > Yes, the in-memory catalogStore will be used as the default CatalogStore
>> > even if the user has not configured one
>> >
>> >
>> > Best,
>> > Feng
>> >
>> >
>> > On Tue, Jun 6, 2023 at 8:02 PM Leonard Xu <xbjt...@gmail.com> wrote:
>> >
>> > > Hi, Feng
>> > >
>> > > Sorry for reply late, but I’ve some comments about the FLIP
>> > >
>> > >
>> > > 1. The introduced Public class CatalogDescriptor seems missed some
>> > > necessary component
>> > >   a) How to construct a CatalogDescriptor ?
>> > >   b) How to visit the fields ? Could we use Configuration instead of
>> > > Map<String, String> ?
>> > >   c) Could we offer a built-in factory method to build a
>> > CatalogDescriptor
>> > > like
>> > >      public static CatalogDescriptor of(String catalogName,
>> Configuration
>> > > configuration)
>> > >
>> > > 2. The FLIP said “By default, there are two built-in CatalogStores
>> > > available: the In-Memory CatalogStore and the File CatalogStore” ,
>> > > Do we have plan to offer a default CatalogStore if user didn’t config
>> > > this? IIUC, users can obtains the benefits  from lazy catalog
>> > > initialization If
>> > > we have a default catalogstore even it is in-memory.
>> > >
>> > > Best,
>> > > Leonard
>> > >
>> > >
>> > >
>> > > > On Jun 6, 2023, at 7:08 PM, Feng Jin <jinfeng1...@gmail.com> wrote:
>> > > >
>> > > > 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