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