@Internal public final class CatalogManager extends Object implements CatalogRegistry, AutoCloseable
Modifier and Type | Class and Description |
---|---|
static class |
CatalogManager.Builder
Builder for a fluent definition of a
CatalogManager . |
Modifier and Type | Method and Description |
---|---|
void |
alterCatalog(String catalogName,
CatalogChange catalogChange)
Alters a catalog under the given name.
|
void |
alterDatabase(String catalogName,
String databaseName,
CatalogDatabase newDatabase,
boolean ignoreIfNotExists)
Modify an existing database.
|
void |
alterTable(CatalogBaseTable table,
List<TableChange> changes,
ObjectIdentifier objectIdentifier,
boolean ignoreIfNotExists)
Alters a table in a given fully qualified path with table changes.
|
void |
alterTable(CatalogBaseTable table,
ObjectIdentifier objectIdentifier,
boolean ignoreIfNotExists)
Alters a table in a given fully qualified path.
|
void |
close()
Closes the catalog manager and releases its resources.
|
void |
createCatalog(String catalogName,
CatalogDescriptor catalogDescriptor) |
void |
createCatalog(String catalogName,
CatalogDescriptor catalogDescriptor,
boolean ignoreIfExists)
Creates a catalog under the given name.
|
void |
createDatabase(String catalogName,
String databaseName,
CatalogDatabase database,
boolean ignoreIfExists)
Create a database.
|
void |
createTable(CatalogBaseTable table,
ObjectIdentifier objectIdentifier,
boolean ignoreIfExists)
Creates a table in a given fully qualified path.
|
void |
createTemporaryTable(CatalogBaseTable table,
ObjectIdentifier objectIdentifier,
boolean ignoreIfExists)
Creates a temporary table in a given fully qualified path.
|
void |
dropDatabase(String catalogName,
String databaseName,
boolean ignoreIfNotExists,
boolean cascade)
Drop a database.
|
void |
dropMaterializedTable(ObjectIdentifier objectIdentifier,
boolean ignoreIfNotExists)
Drops a materialized table in a given fully qualified path.
|
void |
dropTable(ObjectIdentifier objectIdentifier,
boolean ignoreIfNotExists)
Drops a table in a given fully qualified path.
|
void |
dropTemporaryTable(ObjectIdentifier objectIdentifier,
boolean ignoreIfNotExists)
Drop a temporary table in a given fully qualified path.
|
void |
dropTemporaryView(ObjectIdentifier objectIdentifier,
boolean ignoreIfNotExists)
Drop a temporary view in a given fully qualified path.
|
void |
dropView(ObjectIdentifier objectIdentifier,
boolean ignoreIfNotExists)
Drops a view in a given fully qualified path.
|
String |
getBuiltInCatalogName()
Gets the built-in catalog name.
|
String |
getBuiltInDatabaseName()
Gets the built-in database name in the built-in catalog.
|
Optional<Catalog> |
getCatalog(String catalogName)
Gets a
Catalog instance by name. |
Optional<ResolvedCatalogBaseTable<?>> |
getCatalogBaseTable(ObjectIdentifier objectIdentifier)
Retrieves a fully qualified table.
|
Optional<CatalogDescriptor> |
getCatalogDescriptor(String catalogName) |
List<CatalogModificationListener> |
getCatalogModificationListeners() |
Catalog |
getCatalogOrError(String catalogName)
Gets a catalog by name.
|
Catalog |
getCatalogOrThrowException(String catalogName) |
String |
getCurrentCatalog()
Gets the current catalog that will be used when resolving table path.
|
String |
getCurrentDatabase()
Gets the current database name that will be used when resolving table path.
|
DataTypeFactory |
getDataTypeFactory()
Returns a factory for creating fully resolved data types that can be used for planning.
|
Optional<CatalogPartition> |
getPartition(ObjectIdentifier tableIdentifier,
CatalogPartitionSpec partitionSpec)
Retrieves a partition with a fully qualified table path and partition spec.
|
SchemaResolver |
getSchemaResolver()
|
Optional<ContextResolvedTable> |
getTable(ObjectIdentifier objectIdentifier)
Retrieves a fully qualified table.
|
Optional<ContextResolvedTable> |
getTable(ObjectIdentifier objectIdentifier,
long timestamp)
Retrieves a fully qualified table with a specific time.
|
ContextResolvedTable |
getTableOrError(ObjectIdentifier objectIdentifier)
Like
getTable(ObjectIdentifier) , but throws an error when the table is not available
in any of the catalogs. |
protected Optional<TemporaryOperationListener> |
getTemporaryOperationListener(ObjectIdentifier identifier) |
void |
initSchemaResolver(boolean isStreamingMode,
ExpressionResolver.ExpressionResolverBuilder expressionResolverBuilder)
Initializes a
SchemaResolver for Schema resolution. |
boolean |
isTemporaryTable(ObjectIdentifier objectIdentifier)
Return whether the table with a fully qualified table path is temporary or not.
|
Set<String> |
listCatalogs()
Retrieves the set of names of all registered catalogs, including all initialized catalogs and
all catalogs stored in the
CatalogStore . |
Set<String> |
listSchemas()
Lists all available schemas in the root of the catalog manager.
|
Set<String> |
listSchemas(String catalogName)
Lists all available schemas in the given catalog.
|
Set<String> |
listTables()
Returns an array of names of all tables (tables and views, both temporary and permanent)
registered in the namespace of the current catalog and database.
|
Set<String> |
listTables(String catalogName,
String databaseName)
Returns an array of names of all tables (tables and views, both temporary and permanent)
registered in the namespace of the given catalog and database.
|
Set<String> |
listTemporaryTables()
Returns an array of names of temporary tables registered in the namespace of the current
catalog and database.
|
Set<String> |
listTemporaryViews()
Returns an array of names of temporary views registered in the namespace of the current
catalog and database.
|
Set<String> |
listViews()
Returns an array of names of all views(both temporary and permanent) registered in the
namespace of the current catalog and database.
|
Set<String> |
listViews(String catalogName,
String databaseName)
Returns an array of names of all views(both temporary and permanent) registered in the
namespace of the given catalog and database.
|
static CatalogManager.Builder |
newBuilder() |
ObjectIdentifier |
qualifyIdentifier(UnresolvedIdentifier identifier)
Returns the full name of the given table path, this name may be padded with current
catalog/database name based on the
identifier's length. |
void |
registerCatalog(String catalogName,
Catalog catalog)
Deprecated.
This method is deprecated and will be removed in a future release. Use
createCatalog instead to create a catalog using CatalogDescriptor and store it
in the CatalogStore . |
ResolvedCatalogBaseTable<?> |
resolveCatalogBaseTable(CatalogBaseTable baseTable)
Resolves a
CatalogBaseTable to a validated ResolvedCatalogBaseTable . |
ResolvedCatalogMaterializedTable |
resolveCatalogMaterializedTable(CatalogMaterializedTable table)
Resolves a
CatalogMaterializedTable to a validated ResolvedCatalogMaterializedTable . |
ResolvedCatalogTable |
resolveCatalogTable(CatalogTable table)
Resolves a
CatalogTable to a validated ResolvedCatalogTable . |
ResolvedCatalogView |
resolveCatalogView(CatalogView view)
Resolves a
CatalogView to a validated ResolvedCatalogView . |
Map<String,String> |
resolveCompactManagedTableOptions(ResolvedCatalogTable origin,
ObjectIdentifier tableIdentifier,
CatalogPartitionSpec partitionSpec)
Resolve dynamic options for compact operation on a Flink's managed table.
|
boolean |
schemaExists(String catalogName)
Checks if there is a catalog with given name or is there a temporary object registered within
a given catalog.
|
boolean |
schemaExists(String catalogName,
String databaseName)
Checks if there is a database with given name in a given catalog or is there a temporary
object registered within a given catalog and database.
|
void |
setCurrentCatalog(String catalogName)
Sets the current catalog name that will be used when resolving table path.
|
void |
setCurrentDatabase(String databaseName)
Sets the current database name that will be used when resolving a table path.
|
void |
unregisterCatalog(String catalogName,
boolean ignoreIfNotExists)
Unregisters a catalog under the given name.
|
@VisibleForTesting public List<CatalogModificationListener> getCatalogModificationListeners()
public Optional<CatalogDescriptor> getCatalogDescriptor(String catalogName)
public static CatalogManager.Builder newBuilder()
public void close() throws CatalogException
This method closes all initialized catalogs and the catalog store.
close
in interface AutoCloseable
CatalogException
- if an error occurs while closing the catalogs or the catalog storepublic void initSchemaResolver(boolean isStreamingMode, ExpressionResolver.ExpressionResolverBuilder expressionResolverBuilder)
SchemaResolver
for Schema
resolution.
Currently, the resolver cannot be passed in the constructor because of a chicken-and-egg
problem between Planner
and CatalogManager
.
public SchemaResolver getSchemaResolver()
public DataTypeFactory getDataTypeFactory()
public void createCatalog(String catalogName, CatalogDescriptor catalogDescriptor, boolean ignoreIfExists) throws CatalogException
catalogName
- the given catalog name under which to create the given catalogcatalogDescriptor
- catalog descriptor for creating catalogignoreIfExists
- if false exception will be thrown if a catalog exists.CatalogException
- If the catalog already exists in the catalog store or initialized
catalogs, or if an error occurs while creating the catalog or storing the CatalogDescriptor
public void createCatalog(String catalogName, CatalogDescriptor catalogDescriptor)
public void alterCatalog(String catalogName, CatalogChange catalogChange) throws CatalogException
catalogName
- the given catalog name under which to alter the given catalogcatalogChange
- catalog change to update the underlying catalog descriptorCatalogException
- If the catalog neither exists in the catalog store nor in the
initialized catalogs, or if an error occurs while creating the catalog or storing the
CatalogDescriptor
@Deprecated public void registerCatalog(String catalogName, Catalog catalog)
createCatalog
instead to create a catalog using CatalogDescriptor
and store it
in the CatalogStore
.catalogName
- name under which to register the given catalogcatalog
- catalog to registerCatalogException
- if the registration of the catalog under the given name failedpublic void unregisterCatalog(String catalogName, boolean ignoreIfNotExists)
If the catalog is in the initialized catalogs, it will be removed from the initialized
catalogs. If the catalog is stored in the CatalogStore
, it will be removed from the
CatalogStore.
catalogName
- name under which to unregister the given catalog.ignoreIfNotExists
- If false exception will be thrown if the table or database or
catalog to be altered does not exist.CatalogException
- If the catalog does not exist in the initialized catalogs and not in
the CatalogStore
, or if the remove operation failed.public Optional<Catalog> getCatalog(String catalogName)
Catalog
instance by name.
If the catalog has already been initialized, the initialized instance will be returned
directly. Otherwise, the CatalogDescriptor
will be obtained from the CatalogStore
, and the catalog instance will be initialized.
catalogName
- name of the catalog to retrievepublic Catalog getCatalogOrError(String catalogName) throws CatalogNotExistException
getCatalogOrError
in interface CatalogRegistry
catalogName
- name of the catalog to retrieveCatalogNotExistException
- if the catalog does not existpublic String getCurrentCatalog()
getCurrentCatalog
in interface CatalogRegistry
qualifyIdentifier(UnresolvedIdentifier)
public void setCurrentCatalog(@Nullable String catalogName) throws CatalogNotExistException
catalogName
- catalog name to set as current catalogCatalogNotExistException
- thrown if the catalog doesn't existqualifyIdentifier(UnresolvedIdentifier)
public String getCurrentDatabase()
getCurrentDatabase
in interface CatalogRegistry
qualifyIdentifier(UnresolvedIdentifier)
public void setCurrentDatabase(@Nullable String databaseName)
databaseName
- database name to set as current database nameCatalogException
- thrown if the database doesn't exist in the current catalogqualifyIdentifier(UnresolvedIdentifier)
,
setCurrentCatalog(String)
public String getBuiltInCatalogName()
public String getBuiltInDatabaseName()
public Optional<ContextResolvedTable> getTable(ObjectIdentifier objectIdentifier)
qualifyIdentifier(UnresolvedIdentifier)
first.objectIdentifier
- full path of the table to retrievepublic Optional<ContextResolvedTable> getTable(ObjectIdentifier objectIdentifier, long timestamp)
qualifyIdentifier(UnresolvedIdentifier)
first.objectIdentifier
- full path of the table to retrievetimestamp
- Timestamp of the table snapshot, which is milliseconds since 1970-01-01
00:00:00 UTCpublic Optional<ResolvedCatalogBaseTable<?>> getCatalogBaseTable(ObjectIdentifier objectIdentifier)
qualifyIdentifier(UnresolvedIdentifier)
first.getCatalogBaseTable
in interface CatalogRegistry
objectIdentifier
- full path of the table to retrievepublic boolean isTemporaryTable(ObjectIdentifier objectIdentifier)
isTemporaryTable
in interface CatalogRegistry
objectIdentifier
- full path of the tablepublic ContextResolvedTable getTableOrError(ObjectIdentifier objectIdentifier)
getTable(ObjectIdentifier)
, but throws an error when the table is not available
in any of the catalogs.public Optional<CatalogPartition> getPartition(ObjectIdentifier tableIdentifier, CatalogPartitionSpec partitionSpec)
qualifyIdentifier(UnresolvedIdentifier)
first.getPartition
in interface CatalogRegistry
tableIdentifier
- full path of the table to retrievepartitionSpec
- full partition specpublic Set<String> listCatalogs()
CatalogStore
.public Set<String> listTables()
public Set<String> listTables(String catalogName, String databaseName)
public Set<String> listTemporaryTables()
public Set<String> listTemporaryViews()
public Set<String> listViews()
public Set<String> listViews(String catalogName, String databaseName)
public Set<String> listSchemas()
NOTE:It is primarily used for interacting with Calcite's schema.
public Set<String> listSchemas(String catalogName)
NOTE:It is primarily used for interacting with Calcite's schema.
catalogName
- filter for the catalog part of the schemapublic boolean schemaExists(String catalogName)
NOTE:It is primarily used for interacting with Calcite's schema.
catalogName
- filter for the catalog part of the schemapublic boolean schemaExists(String catalogName, String databaseName)
NOTE:It is primarily used for interacting with Calcite's schema.
catalogName
- filter for the catalog part of the schemadatabaseName
- filter for the database part of the schemapublic ObjectIdentifier qualifyIdentifier(UnresolvedIdentifier identifier)
identifier's
length.qualifyIdentifier
in interface CatalogRegistry
identifier
- an unresolved identifierpublic void createTable(CatalogBaseTable table, ObjectIdentifier objectIdentifier, boolean ignoreIfExists)
table
- The table to put in the given path.objectIdentifier
- The fully qualified path where to put the table.ignoreIfExists
- If false exception will be thrown if a table exists in the given path.public void createTemporaryTable(CatalogBaseTable table, ObjectIdentifier objectIdentifier, boolean ignoreIfExists)
table
- The table to put in the given path.objectIdentifier
- The fully qualified path where to put the table.ignoreIfExists
- if false exception will be thrown if a table exists in the given path.public Map<String,String> resolveCompactManagedTableOptions(ResolvedCatalogTable origin, ObjectIdentifier tableIdentifier, CatalogPartitionSpec partitionSpec)
origin
- The resolved managed table with enriched options.tableIdentifier
- The fully qualified path of the managed table.partitionSpec
- User-specified unresolved partition spec.public void dropTemporaryTable(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
objectIdentifier
- The fully qualified path of the table to drop.ignoreIfNotExists
- If false exception will be thrown if the table to be dropped does
not exist.public void dropTemporaryView(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
objectIdentifier
- The fully qualified path of the view to drop.ignoreIfNotExists
- If false exception will be thrown if the view to be dropped does not
exist.protected Optional<TemporaryOperationListener> getTemporaryOperationListener(ObjectIdentifier identifier)
public void alterTable(CatalogBaseTable table, ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
table
- The table to put in the given pathobjectIdentifier
- The fully qualified path where to alter the table.ignoreIfNotExists
- If false exception will be thrown if the table or database or
catalog to be altered does not exist.public void alterTable(CatalogBaseTable table, List<TableChange> changes, ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
table
- The table to put in the given pathchanges
- The table changes from the original table to the new table.objectIdentifier
- The fully qualified path where to alter the table.ignoreIfNotExists
- If false exception will be thrown if the table or database or
catalog to be altered does not exist.public void dropTable(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
objectIdentifier
- The fully qualified path of the table to drop.ignoreIfNotExists
- If false exception will be thrown if the table to drop does not
exist.public void dropMaterializedTable(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
objectIdentifier
- The fully qualified path of the materialized table to drop.ignoreIfNotExists
- If false exception will be thrown if the table to drop does not
exist.public void dropView(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
objectIdentifier
- The fully qualified path of the view to drop.ignoreIfNotExists
- If false exception will be thrown if the view to drop does not
exist.public ResolvedCatalogBaseTable<?> resolveCatalogBaseTable(CatalogBaseTable baseTable)
CatalogBaseTable
to a validated ResolvedCatalogBaseTable
.public ResolvedCatalogTable resolveCatalogTable(CatalogTable table)
CatalogTable
to a validated ResolvedCatalogTable
.public ResolvedCatalogMaterializedTable resolveCatalogMaterializedTable(CatalogMaterializedTable table)
CatalogMaterializedTable
to a validated ResolvedCatalogMaterializedTable
.public ResolvedCatalogView resolveCatalogView(CatalogView view)
CatalogView
to a validated ResolvedCatalogView
.public void createDatabase(String catalogName, String databaseName, CatalogDatabase database, boolean ignoreIfExists) throws DatabaseAlreadyExistException, CatalogException
catalogName
- Name of the catalog for databasedatabaseName
- Name of the database to be createddatabase
- The database definitionignoreIfExists
- Flag to specify behavior when a database with the given name already
exists: if set to false, throw a DatabaseAlreadyExistException, if set to true, do
nothing.DatabaseAlreadyExistException
- if the given database already exists and ignoreIfExists
is falseCatalogException
- in case of any runtime exceptionpublic void dropDatabase(String catalogName, String databaseName, boolean ignoreIfNotExists, boolean cascade) throws DatabaseNotExistException, DatabaseNotEmptyException, CatalogException
catalogName
- Name of the catalog for database.databaseName
- Name of the database to be dropped.ignoreIfNotExists
- Flag to specify behavior when the database does not exist: if set to
false, throw an exception, if set to true, do nothing.cascade
- Flag to specify behavior when the database contains table or function: if set
to true, delete all tables and functions in the database and then delete the database, if
set to false, throw an exception.DatabaseNotExistException
- if the given database does not existDatabaseNotEmptyException
- if the given database is not empty and isRestrict is trueCatalogException
- in case of any runtime exceptionpublic void alterDatabase(String catalogName, String databaseName, CatalogDatabase newDatabase, boolean ignoreIfNotExists) throws DatabaseNotExistException, CatalogException
catalogName
- Name of the catalog for databasedatabaseName
- Name of the database to be droppednewDatabase
- The new database definitionignoreIfNotExists
- Flag to specify behavior when the given database does not exist: if
set to false, throw an exception, if set to true, do nothing.DatabaseNotExistException
- if the given database does not existCatalogException
- in case of any runtime exceptionCopyright © 2014–2024 The Apache Software Foundation. All rights reserved.