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

Reply via email to