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