Hi all, I want to kick off a discussion of whether we should remove the default in-memory catalog from Flink table module.
Background: Currently Flink always has a default in-memory catalog named "default_catalog" upon start. This behavior is added in 1.9.0 along with new Catalog APIs. Till 1.9, lots of Flink temporary objects in table module are not well defined on both APIs and locations to store them, thus this default in-memory catalog serves backward compatibility purpose to hold such temporary objects, e.g. ConnectorCatalogTable. In Flink 1.10, we completely redefined temp objects so that, if I understand correctly, no temp objects are in this default catalog anymore. More specifically, all temp functions reside in FunctionCatalog as of FLIP-57 [1], and all temp table/view reside in CatalogManager as of FLIP-64 [2]. Thus, the backward compatibility purpose isn't there anymore. Therefore, I propose to remove this default in memory catalog from Flink. Benefits: it would make the metadata/catalog architecture cleaner, and prevent developers from misusing this default catalog unintentionally, as this default catalog is really no different from any other catalogs anymore from 1.10 Potential impacts: users then would need to explicitly register an in memory catalog either in table API or via SQL CLI yaml file, if they want to play with catalogs and catalog objects without external dependencies, but it's still pretty easy to do. Note that it's not a proposal to remove the in-memory catalog implementation. [1] https://cwiki.apache.org/confluence/display/FLINK/FLIP-57%3A+Rework+FunctionCatalog [2] https://cwiki.apache.org/confluence/display/FLINK/FLIP-64%3A+Support+for+Temporary+Objects+in+Table+module