Class CatalogManager
- java.lang.Object
-
- org.apache.flink.table.catalog.CatalogManager
-
- All Implemented Interfaces:
AutoCloseable
,CatalogRegistry
@Internal public final class CatalogManager extends Object implements CatalogRegistry, AutoCloseable
A manager for dealing with catalog objects such as tables, views, functions, and types. It encapsulates all available catalogs and stores temporary objects.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CatalogManager.Builder
Builder for a fluent definition of aCatalogManager
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method 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
alterModel(CatalogModel modelChange, ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Alters a model in a given fully qualified path.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
createModel(CatalogModel model, ObjectIdentifier objectIdentifier, boolean ignoreIfExists)
Creates a model in a given fully qualified path.void
createTable(CatalogBaseTable table, ObjectIdentifier objectIdentifier, boolean ignoreIfExists)
Creates a table in a given fully qualified path.void
createTemporaryModel(CatalogModel model, ObjectIdentifier objectIdentifier, boolean ignoreIfExists)
Creates a temporary model 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
dropModel(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drops a model in a given fully qualified path.void
dropTable(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drops a table in a given fully qualified path.void
dropTemporaryModel(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drop a temporary model 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 aCatalog
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<ContextResolvedModel>
getModel(ObjectIdentifier objectIdentifier)
Retrieves a fully qualified model.ContextResolvedModel
getModelOrError(ObjectIdentifier objectIdentifier)
LikegetModel(ObjectIdentifier)
, but throws an error when the model is not available in any of the catalogs.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)
LikegetTable(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 aSchemaResolver
forSchema
resolution.boolean
isTemporaryModel(ObjectIdentifier objectIdentifier)
Return whether the model with a fully qualified table path is temporary or not.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 theCatalogStore
.Set<String>
listModels()
Returns an array of names of all models registered in the namespace of the current catalog and database.Set<String>
listModels(String catalogName, String databaseName)
Returns an array of names of all models registered in the namespace of the given catalog and database.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()
String
qualifyCatalog(String catalogName)
Qualifies catalog name.String
qualifyDatabase(String databaseName)
Qualifies database name.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 theidentifier's
length.void
registerCatalog(String catalogName, Catalog catalog)
Deprecated.This method is deprecated and will be removed in a future release.ResolvedCatalogBaseTable<?>
resolveCatalogBaseTable(CatalogBaseTable baseTable)
Resolves aCatalogBaseTable
to a validatedResolvedCatalogBaseTable
.ResolvedCatalogMaterializedTable
resolveCatalogMaterializedTable(CatalogMaterializedTable table)
Resolves aCatalogMaterializedTable
to a validatedResolvedCatalogMaterializedTable
.ResolvedCatalogModel
resolveCatalogModel(CatalogModel model)
ResolvedCatalogTable
resolveCatalogTable(CatalogTable table)
Resolves aCatalogTable
to a validatedResolvedCatalogTable
.ResolvedCatalogView
resolveCatalogView(CatalogView view)
Resolves aCatalogView
to a validatedResolvedCatalogView
.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.
-
-
-
Method Detail
-
getCatalogModificationListeners
@VisibleForTesting public List<CatalogModificationListener> getCatalogModificationListeners()
-
getCatalogDescriptor
public Optional<CatalogDescriptor> getCatalogDescriptor(String catalogName)
-
newBuilder
public static CatalogManager.Builder newBuilder()
-
close
public void close() throws CatalogException
Closes the catalog manager and releases its resources.This method closes all initialized catalogs and the catalog store.
- Specified by:
close
in interfaceAutoCloseable
- Throws:
CatalogException
- if an error occurs while closing the catalogs or the catalog store
-
initSchemaResolver
public void initSchemaResolver(boolean isStreamingMode, ExpressionResolver.ExpressionResolverBuilder expressionResolverBuilder)
Initializes aSchemaResolver
forSchema
resolution.Currently, the resolver cannot be passed in the constructor because of a chicken-and-egg problem between
Planner
andCatalogManager
.
-
getSchemaResolver
public SchemaResolver getSchemaResolver()
-
getDataTypeFactory
public DataTypeFactory getDataTypeFactory()
Returns a factory for creating fully resolved data types that can be used for planning.
-
createCatalog
public void createCatalog(String catalogName, CatalogDescriptor catalogDescriptor, boolean ignoreIfExists) throws CatalogException
Creates a catalog under the given name. The catalog name must be unique.- Parameters:
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.- Throws:
CatalogException
- If the catalog already exists in the catalog store or initialized catalogs, or if an error occurs while creating the catalog or storing theCatalogDescriptor
-
createCatalog
public void createCatalog(String catalogName, CatalogDescriptor catalogDescriptor)
-
alterCatalog
public void alterCatalog(String catalogName, CatalogChange catalogChange) throws CatalogException
Alters a catalog under the given name. The catalog name must be unique.- Parameters:
catalogName
- the given catalog name under which to alter the given catalogcatalogChange
- catalog change to update the underlying catalog descriptor- Throws:
CatalogException
- 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 theCatalogDescriptor
-
registerCatalog
@Deprecated public void registerCatalog(String catalogName, Catalog catalog)
Deprecated.This method is deprecated and will be removed in a future release. UsecreateCatalog
instead to create a catalog usingCatalogDescriptor
and store it in theCatalogStore
.Registers a catalog under the given name. The catalog name must be unique.- Parameters:
catalogName
- name under which to register the given catalogcatalog
- catalog to register- Throws:
CatalogException
- if the registration of the catalog under the given name failed
-
unregisterCatalog
public void unregisterCatalog(String catalogName, boolean ignoreIfNotExists)
Unregisters a catalog under the given name. The catalog name must be existed.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.- Parameters:
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.- Throws:
CatalogException
- If the catalog does not exist in the initialized catalogs and not in theCatalogStore
, or if the remove operation failed.
-
getCatalog
public Optional<Catalog> getCatalog(String catalogName)
Gets aCatalog
instance by name.If the catalog has already been initialized, the initialized instance will be returned directly. Otherwise, the
CatalogDescriptor
will be obtained from theCatalogStore
, and the catalog instance will be initialized.- Parameters:
catalogName
- name of the catalog to retrieve- Returns:
- the requested catalog or empty if it does not exist
-
getCatalogOrError
public Catalog getCatalogOrError(String catalogName) throws CatalogNotExistException
Gets a catalog by name.- Specified by:
getCatalogOrError
in interfaceCatalogRegistry
- Parameters:
catalogName
- name of the catalog to retrieve- Returns:
- the requested catalog
- Throws:
CatalogNotExistException
- if the catalog does not exist
-
getCurrentCatalog
@Nullable public String getCurrentCatalog()
Gets the current catalog that will be used when resolving table path.- Specified by:
getCurrentCatalog
in interfaceCatalogRegistry
- Returns:
- the current catalog
- See Also:
qualifyIdentifier(UnresolvedIdentifier)
-
setCurrentCatalog
public void setCurrentCatalog(@Nullable String catalogName) throws CatalogNotExistException
Sets the current catalog name that will be used when resolving table path.- Parameters:
catalogName
- catalog name to set as current catalog- Throws:
CatalogNotExistException
- thrown if the catalog doesn't exist- See Also:
qualifyIdentifier(UnresolvedIdentifier)
-
getCurrentDatabase
@Nullable public String getCurrentDatabase()
Gets the current database name that will be used when resolving table path.- Specified by:
getCurrentDatabase
in interfaceCatalogRegistry
- Returns:
- the current database
- See Also:
qualifyIdentifier(UnresolvedIdentifier)
-
setCurrentDatabase
public void setCurrentDatabase(@Nullable String databaseName)
Sets the current database name that will be used when resolving a table path. The database has to exist in the current catalog.- Parameters:
databaseName
- database name to set as current database name- Throws:
CatalogException
- thrown if the database doesn't exist in the current catalog- See Also:
qualifyIdentifier(UnresolvedIdentifier)
,setCurrentCatalog(String)
-
getBuiltInCatalogName
public String getBuiltInCatalogName()
Gets the built-in catalog name. The built-in catalog is used for storing all non-serializable transient meta-objects.- Returns:
- the built-in catalog name
-
getBuiltInDatabaseName
public String getBuiltInDatabaseName()
Gets the built-in database name in the built-in catalog. The built-in database is used for storing all non-serializable transient meta-objects.- Returns:
- the built-in database name
-
getTable
public Optional<ContextResolvedTable> getTable(ObjectIdentifier objectIdentifier)
Retrieves a fully qualified table. If the path is not yet fully qualified usequalifyIdentifier(UnresolvedIdentifier)
first.- Parameters:
objectIdentifier
- full path of the table to retrieve- Returns:
- table that the path points to.
-
getTable
public Optional<ContextResolvedTable> getTable(ObjectIdentifier objectIdentifier, long timestamp)
Retrieves a fully qualified table with a specific time. If the path is not yet fully qualified, usequalifyIdentifier(UnresolvedIdentifier)
first.- Parameters:
objectIdentifier
- full path of the table to retrievetimestamp
- Timestamp of the table snapshot, which is milliseconds since 1970-01-01 00:00:00 UTC- Returns:
- table at a specific time that the path points to.
-
getCatalogBaseTable
public Optional<ResolvedCatalogBaseTable<?>> getCatalogBaseTable(ObjectIdentifier objectIdentifier)
Retrieves a fully qualified table. If the path is not yet fully qualified usequalifyIdentifier(UnresolvedIdentifier)
first.- Specified by:
getCatalogBaseTable
in interfaceCatalogRegistry
- Parameters:
objectIdentifier
- full path of the table to retrieve- Returns:
- resolved table that the path points to or empty if it does not exist.
-
isTemporaryTable
public boolean isTemporaryTable(ObjectIdentifier objectIdentifier)
Return whether the table with a fully qualified table path is temporary or not.- Specified by:
isTemporaryTable
in interfaceCatalogRegistry
- Parameters:
objectIdentifier
- full path of the table- Returns:
- the table is temporary or not.
-
getTableOrError
public ContextResolvedTable getTableOrError(ObjectIdentifier objectIdentifier)
LikegetTable(ObjectIdentifier)
, but throws an error when the table is not available in any of the catalogs.
-
getPartition
public Optional<CatalogPartition> getPartition(ObjectIdentifier tableIdentifier, CatalogPartitionSpec partitionSpec)
Retrieves a partition with a fully qualified table path and partition spec. If the path is not yet fully qualified usequalifyIdentifier(UnresolvedIdentifier)
first.- Specified by:
getPartition
in interfaceCatalogRegistry
- Parameters:
tableIdentifier
- full path of the table to retrievepartitionSpec
- full partition spec- Returns:
- partition in the table.
-
listCatalogs
public Set<String> listCatalogs()
Retrieves the set of names of all registered catalogs, including all initialized catalogs and all catalogs stored in theCatalogStore
.- Returns:
- a set of names of registered catalogs
-
listTables
public 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.- Returns:
- names of all registered tables
-
listTables
public 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.- Returns:
- names of all registered tables
-
listTemporaryTables
public Set<String> listTemporaryTables()
Returns an array of names of temporary tables registered in the namespace of the current catalog and database.- Returns:
- names of registered temporary tables
-
listTemporaryViews
public Set<String> listTemporaryViews()
Returns an array of names of temporary views registered in the namespace of the current catalog and database.- Returns:
- names of registered temporary views
-
listViews
public 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.- Returns:
- names of all registered views
-
listViews
public 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.- Returns:
- names of registered views
-
listSchemas
public Set<String> listSchemas()
Lists all available schemas in the root of the catalog manager. It is not equivalent to listing all catalogs as it includes also different catalog parts of the temporary objects.NOTE:It is primarily used for interacting with Calcite's schema.
- Returns:
- set of schemas in the root of catalog manager
-
listSchemas
public Set<String> listSchemas(String catalogName)
Lists all available schemas in the given catalog. It is not equivalent to listing databases within the given catalog as it includes also different database parts of the temporary objects identifiers.NOTE:It is primarily used for interacting with Calcite's schema.
- Parameters:
catalogName
- filter for the catalog part of the schema- Returns:
- set of schemas with the given prefix
-
schemaExists
public boolean schemaExists(String catalogName)
Checks if there is a catalog with given name or is there a temporary object registered within a given catalog.NOTE:It is primarily used for interacting with Calcite's schema.
- Parameters:
catalogName
- filter for the catalog part of the schema- Returns:
- true if a subschema exists
-
schemaExists
public 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.NOTE:It is primarily used for interacting with Calcite's schema.
- Parameters:
catalogName
- filter for the catalog part of the schemadatabaseName
- filter for the database part of the schema- Returns:
- true if a subschema exists
-
qualifyIdentifier
public 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 theidentifier's
length.- Specified by:
qualifyIdentifier
in interfaceCatalogRegistry
- Parameters:
identifier
- an unresolved identifier- Returns:
- a fully qualified object identifier
-
qualifyCatalog
public String qualifyCatalog(@Nullable String catalogName)
Qualifies catalog name. ThrowsValidationException
if not set.
-
qualifyDatabase
public String qualifyDatabase(@Nullable String databaseName)
Qualifies database name. ThrowsValidationException
if not set.
-
createTable
public void createTable(CatalogBaseTable table, ObjectIdentifier objectIdentifier, boolean ignoreIfExists)
Creates a table in a given fully qualified path.- Parameters:
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.
-
createTemporaryTable
public void createTemporaryTable(CatalogBaseTable table, ObjectIdentifier objectIdentifier, boolean ignoreIfExists)
Creates a temporary table in a given fully qualified path.- Parameters:
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.
-
resolveCompactManagedTableOptions
public Map<String,String> resolveCompactManagedTableOptions(ResolvedCatalogTable origin, ObjectIdentifier tableIdentifier, CatalogPartitionSpec partitionSpec)
Resolve dynamic options for compact operation on a Flink's managed table.- Parameters:
origin
- The resolved managed table with enriched options.tableIdentifier
- The fully qualified path of the managed table.partitionSpec
- User-specified unresolved partition spec.- Returns:
- dynamic options which describe the metadata of compaction
-
dropTemporaryTable
public void dropTemporaryTable(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drop a temporary table in a given fully qualified path.- Parameters:
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.
-
dropTemporaryView
public void dropTemporaryView(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drop a temporary view in a given fully qualified path.- Parameters:
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.
-
getTemporaryOperationListener
protected Optional<TemporaryOperationListener> getTemporaryOperationListener(ObjectIdentifier identifier)
-
alterTable
public void alterTable(CatalogBaseTable table, ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Alters a table in a given fully qualified path.- Parameters:
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.
-
alterTable
public void alterTable(CatalogBaseTable table, List<TableChange> changes, ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Alters a table in a given fully qualified path with table changes.- Parameters:
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.
-
dropTable
public void dropTable(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drops a table in a given fully qualified path.- Parameters:
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.
-
dropMaterializedTable
public void dropMaterializedTable(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drops a materialized table in a given fully qualified path.- Parameters:
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.
-
dropView
public void dropView(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drops a view in a given fully qualified path.- Parameters:
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.
-
getModel
public Optional<ContextResolvedModel> getModel(ObjectIdentifier objectIdentifier)
Retrieves a fully qualified model. If the path is not yet fully qualified usequalifyIdentifier(UnresolvedIdentifier)
first.- Parameters:
objectIdentifier
- full path of the model to retrieve- Returns:
- model that the path points to.
-
getModelOrError
public ContextResolvedModel getModelOrError(ObjectIdentifier objectIdentifier)
LikegetModel(ObjectIdentifier)
, but throws an error when the model is not available in any of the catalogs.
-
isTemporaryModel
public boolean isTemporaryModel(ObjectIdentifier objectIdentifier)
Return whether the model with a fully qualified table path is temporary or not.- Parameters:
objectIdentifier
- full path of the table- Returns:
- the model is temporary or not.
-
listModels
public Set<String> listModels()
Returns an array of names of all models registered in the namespace of the current catalog and database.- Returns:
- names of all registered models
-
listModels
public Set<String> listModels(String catalogName, String databaseName)
Returns an array of names of all models registered in the namespace of the given catalog and database.- Returns:
- names of all registered models
-
createModel
public void createModel(CatalogModel model, ObjectIdentifier objectIdentifier, boolean ignoreIfExists)
Creates a model in a given fully qualified path.- Parameters:
model
- The resolved model to put in the given path.objectIdentifier
- The fully qualified path where to put the model.ignoreIfExists
- If false exception will be thrown if a model exists in the given path.
-
createTemporaryModel
public void createTemporaryModel(CatalogModel model, ObjectIdentifier objectIdentifier, boolean ignoreIfExists)
Creates a temporary model in a given fully qualified path.- Parameters:
model
- The resolved model to put in the given path.objectIdentifier
- The fully qualified path where to put the model.ignoreIfExists
- if false exception will be thrown if a model exists in the given path.
-
alterModel
public void alterModel(CatalogModel modelChange, ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Alters a model in a given fully qualified path.- Parameters:
modelChange
- The model containing only changesobjectIdentifier
- The fully qualified path where to alter the model.ignoreIfNotExists
- If false exception will be thrown if the model to be altered does not exist.
-
dropModel
public void dropModel(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drops a model in a given fully qualified path.- Parameters:
objectIdentifier
- The fully qualified path of the model to drop.ignoreIfNotExists
- If false exception will be thrown if the model to drop does not exist.
-
dropTemporaryModel
public void dropTemporaryModel(ObjectIdentifier objectIdentifier, boolean ignoreIfNotExists)
Drop a temporary model in a given fully qualified path.- Parameters:
objectIdentifier
- The fully qualified path of the model to drop.ignoreIfNotExists
- If false exception will be thrown if the model to be dropped does not exist.
-
resolveCatalogModel
public ResolvedCatalogModel resolveCatalogModel(CatalogModel model)
-
resolveCatalogBaseTable
public ResolvedCatalogBaseTable<?> resolveCatalogBaseTable(CatalogBaseTable baseTable)
Resolves aCatalogBaseTable
to a validatedResolvedCatalogBaseTable
.
-
resolveCatalogTable
public ResolvedCatalogTable resolveCatalogTable(CatalogTable table)
Resolves aCatalogTable
to a validatedResolvedCatalogTable
.
-
resolveCatalogMaterializedTable
public ResolvedCatalogMaterializedTable resolveCatalogMaterializedTable(CatalogMaterializedTable table)
Resolves aCatalogMaterializedTable
to a validatedResolvedCatalogMaterializedTable
.
-
resolveCatalogView
public ResolvedCatalogView resolveCatalogView(CatalogView view)
Resolves aCatalogView
to a validatedResolvedCatalogView
.
-
createDatabase
public void createDatabase(String catalogName, String databaseName, CatalogDatabase database, boolean ignoreIfExists) throws DatabaseAlreadyExistException, CatalogException
Create a database.- Parameters:
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.- Throws:
DatabaseAlreadyExistException
- if the given database already exists and ignoreIfExists is falseCatalogException
- in case of any runtime exception
-
dropDatabase
public void dropDatabase(String catalogName, String databaseName, boolean ignoreIfNotExists, boolean cascade) throws DatabaseNotExistException, DatabaseNotEmptyException, CatalogException
Drop a database.- Parameters:
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.- Throws:
DatabaseNotExistException
- if the given database does not existDatabaseNotEmptyException
- if the given database is not empty and isRestrict is trueCatalogException
- in case of any runtime exception
-
alterDatabase
public void alterDatabase(String catalogName, String databaseName, CatalogDatabase newDatabase, boolean ignoreIfNotExists) throws DatabaseNotExistException, CatalogException
Modify an existing database.- Parameters:
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.- Throws:
DatabaseNotExistException
- if the given database does not existCatalogException
- in case of any runtime exception
-
-