@Internal public class GenericInMemoryCatalog extends AbstractCatalog
Modifier and Type | Field and Description |
---|---|
static String |
DEFAULT_DB |
Constructor and Description |
---|
GenericInMemoryCatalog(String name) |
GenericInMemoryCatalog(String name,
String defaultDatabase) |
Modifier and Type | Method and Description |
---|---|
void |
alterDatabase(String databaseName,
CatalogDatabase newDatabase,
boolean ignoreIfNotExists)
Modify an existing database.
|
void |
alterFunction(ObjectPath path,
CatalogFunction newFunction,
boolean ignoreIfNotExists)
Modify an existing function.
|
void |
alterPartition(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec,
CatalogPartition newPartition,
boolean ignoreIfNotExists)
Alter a partition.
|
void |
alterPartitionColumnStatistics(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec,
CatalogColumnStatistics columnStatistics,
boolean ignoreIfNotExists)
Update the column statistics of a table partition.
|
void |
alterPartitionStatistics(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec,
CatalogTableStatistics partitionStatistics,
boolean ignoreIfNotExists)
Update the statistics of a table partition.
|
void |
alterTable(ObjectPath tablePath,
CatalogBaseTable newTable,
boolean ignoreIfNotExists)
Modifies an existing table or view.
|
void |
alterTableColumnStatistics(ObjectPath tablePath,
CatalogColumnStatistics columnStatistics,
boolean ignoreIfNotExists)
Update the column statistics of a table.
|
void |
alterTableStatistics(ObjectPath tablePath,
CatalogTableStatistics tableStatistics,
boolean ignoreIfNotExists)
Update the statistics of a table.
|
void |
close()
Close the catalog when it is no longer needed and release any resource that it might be
holding.
|
void |
createDatabase(String databaseName,
CatalogDatabase db,
boolean ignoreIfExists)
Create a database.
|
void |
createFunction(ObjectPath path,
CatalogFunction function,
boolean ignoreIfExists)
Create a function.
|
void |
createPartition(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec,
CatalogPartition partition,
boolean ignoreIfExists)
Create a partition.
|
void |
createTable(ObjectPath tablePath,
CatalogBaseTable table,
boolean ignoreIfExists)
Creates a new table or view.
|
boolean |
databaseExists(String databaseName)
Check if a database exists in this catalog.
|
void |
dropDatabase(String databaseName,
boolean ignoreIfNotExists,
boolean cascade)
Drop a database.
|
void |
dropFunction(ObjectPath path,
boolean ignoreIfNotExists)
Drop a function.
|
void |
dropPartition(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec,
boolean ignoreIfNotExists)
Drop a partition.
|
void |
dropTable(ObjectPath tablePath,
boolean ignoreIfNotExists)
Drop a table or view.
|
boolean |
functionExists(ObjectPath path)
Check whether a function exists or not.
|
CatalogDatabase |
getDatabase(String databaseName)
Get a database from this catalog.
|
CatalogFunction |
getFunction(ObjectPath path)
Get the function.
|
CatalogPartition |
getPartition(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec)
Get a partition of the given table.
|
CatalogColumnStatistics |
getPartitionColumnStatistics(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec)
Get the column statistics of a partition.
|
CatalogTableStatistics |
getPartitionStatistics(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec)
Get the statistics of a partition.
|
CatalogBaseTable |
getTable(ObjectPath tablePath)
|
CatalogColumnStatistics |
getTableColumnStatistics(ObjectPath tablePath)
Get the column statistics of a table.
|
CatalogTableStatistics |
getTableStatistics(ObjectPath tablePath)
Get the statistics of a table.
|
List<String> |
listDatabases()
Get the names of all databases in this catalog.
|
List<String> |
listFunctions(String databaseName)
List the names of all functions in the given database.
|
List<CatalogPartitionSpec> |
listPartitions(ObjectPath tablePath)
Get CatalogPartitionSpec of all partitions of the table.
|
List<CatalogPartitionSpec> |
listPartitions(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec)
Get CatalogPartitionSpec of all partitions that is under the given CatalogPartitionSpec in
the table.
|
List<CatalogPartitionSpec> |
listPartitionsByFilter(ObjectPath tablePath,
List<Expression> filters)
Get CatalogPartitionSpec of partitions by expression filters in the table.
|
List<String> |
listTables(String databaseName)
Get names of all tables and views under this database.
|
List<String> |
listViews(String databaseName)
Get names of all views under this database.
|
void |
open()
Open the catalog.
|
boolean |
partitionExists(ObjectPath tablePath,
CatalogPartitionSpec partitionSpec)
Check whether a partition exists or not.
|
void |
renameTable(ObjectPath tablePath,
String newTableName,
boolean ignoreIfNotExists)
Rename an existing table or view.
|
boolean |
supportsManagedTable()
If true, tables which do not specify a connector will be translated to managed tables.
|
boolean |
tableExists(ObjectPath tablePath)
Check if a table or view exists in this catalog.
|
getDefaultDatabase, getName
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
alterTable, bulkGetPartitionColumnStatistics, bulkGetPartitionStatistics, dropDatabase, getFactory, getFunctionDefinitionFactory, getProcedure, getTable, getTableFactory, listProcedures
public static final String DEFAULT_DB
public GenericInMemoryCatalog(String name)
public void open()
Catalog
public void close()
Catalog
public void createDatabase(String databaseName, CatalogDatabase db, boolean ignoreIfExists) throws DatabaseAlreadyExistException
Catalog
databaseName
- Name of the database to be createddb
- 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 falsepublic void dropDatabase(String databaseName, boolean ignoreIfNotExists, boolean cascade) throws DatabaseNotExistException, DatabaseNotEmptyException
Catalog
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 truepublic void alterDatabase(String databaseName, CatalogDatabase newDatabase, boolean ignoreIfNotExists) throws DatabaseNotExistException
Catalog
databaseName
- Name of the database to be modifiednewDatabase
- 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 existpublic List<String> listDatabases()
Catalog
public CatalogDatabase getDatabase(String databaseName) throws DatabaseNotExistException
Catalog
databaseName
- Name of the databaseDatabaseNotExistException
- if the database does not existpublic boolean databaseExists(String databaseName)
Catalog
databaseName
- Name of the databasepublic void createTable(ObjectPath tablePath, CatalogBaseTable table, boolean ignoreIfExists) throws TableAlreadyExistException, DatabaseNotExistException
Catalog
The framework will make sure to call this method with fully validated ResolvedCatalogTable
or ResolvedCatalogView
. Those instances are easy to serialize
for a durable catalog implementation.
tablePath
- path of the table or view to be createdtable
- the table definitionignoreIfExists
- flag to specify behavior when a table or view already exists at the
given path: if set to false, it throws a TableAlreadyExistException, if set to true, do
nothing.TableAlreadyExistException
- if table already exists and ignoreIfExists is falseDatabaseNotExistException
- if the database in tablePath doesn't existpublic void alterTable(ObjectPath tablePath, CatalogBaseTable newTable, boolean ignoreIfNotExists) throws TableNotExistException
Catalog
CatalogBaseTable
must
be of the same kind. For example, this doesn't allow altering a regular table to partitioned
table, or altering a view to a table, and vice versa.
The framework will make sure to call this method with fully validated ResolvedCatalogTable
or ResolvedCatalogView
. Those instances are easy to serialize
for a durable catalog implementation.
tablePath
- path of the table or view to be modifiednewTable
- the new table definitionignoreIfNotExists
- flag to specify behavior when the table or view does not exist: if
set to false, throw an exception, if set to true, do nothing.TableNotExistException
- if the table does not existpublic boolean supportsManagedTable()
Catalog
public void dropTable(ObjectPath tablePath, boolean ignoreIfNotExists) throws TableNotExistException
Catalog
tablePath
- Path of the table or view to be droppedignoreIfNotExists
- Flag to specify behavior when the table or view does not exist: if
set to false, throw an exception, if set to true, do nothing.TableNotExistException
- if the table or view does not existpublic void renameTable(ObjectPath tablePath, String newTableName, boolean ignoreIfNotExists) throws TableNotExistException, TableAlreadyExistException
Catalog
tablePath
- Path of the table or view to be renamednewTableName
- the new name of the table or viewignoreIfNotExists
- Flag to specify behavior when the table or view does not exist: if
set to false, throw an exception, if set to true, do nothing.TableNotExistException
- if the table does not existTableAlreadyExistException
public List<String> listTables(String databaseName) throws DatabaseNotExistException
Catalog
DatabaseNotExistException
- if the database does not existpublic List<String> listViews(String databaseName) throws DatabaseNotExistException
Catalog
databaseName
- the name of the given databaseDatabaseNotExistException
- if the database does not existpublic CatalogBaseTable getTable(ObjectPath tablePath) throws TableNotExistException
Catalog
CatalogTable
or CatalogView
identified by the given ObjectPath
. The framework will resolve the metadata objects when necessary.tablePath
- Path of the table or viewTableNotExistException
- if the target does not existpublic boolean tableExists(ObjectPath tablePath)
Catalog
tablePath
- Path of the table or viewpublic void createFunction(ObjectPath path, CatalogFunction function, boolean ignoreIfExists) throws FunctionAlreadyExistException, DatabaseNotExistException
Catalog
path
- path of the functionfunction
- the function to be createdignoreIfExists
- flag to specify behavior if a function with the given name already
exists: if set to false, it throws a FunctionAlreadyExistException, if set to true,
nothing happens.FunctionAlreadyExistException
- if the function already existDatabaseNotExistException
- if the given database does not existpublic void alterFunction(ObjectPath path, CatalogFunction newFunction, boolean ignoreIfNotExists) throws FunctionNotExistException
Catalog
path
- path of the functionnewFunction
- the function to be modifiedignoreIfNotExists
- flag to specify behavior if the function does not exist: if set to
false, throw an exception if set to true, nothing happensFunctionNotExistException
- if the function does not existpublic void dropFunction(ObjectPath path, boolean ignoreIfNotExists) throws FunctionNotExistException
Catalog
path
- path of the function to be droppedignoreIfNotExists
- flag to specify behavior if the function does not exist: if set to
false, throw an exception if set to true, nothing happensFunctionNotExistException
- if the function does not existpublic List<String> listFunctions(String databaseName) throws DatabaseNotExistException
Catalog
databaseName
- name of the database.DatabaseNotExistException
- if the database does not existpublic CatalogFunction getFunction(ObjectPath path) throws FunctionNotExistException
Catalog
path
- path of the functionFunctionNotExistException
- if the function does not exist in the catalogpublic boolean functionExists(ObjectPath path)
Catalog
path
- path of the functionpublic void createPartition(ObjectPath tablePath, CatalogPartitionSpec partitionSpec, CatalogPartition partition, boolean ignoreIfExists) throws TableNotExistException, TableNotPartitionedException, PartitionSpecInvalidException, PartitionAlreadyExistsException, CatalogException
Catalog
tablePath
- path of the table.partitionSpec
- partition spec of the partitionpartition
- the partition to add.ignoreIfExists
- flag to specify behavior if a partition with the given name already
exists: if set to false, it throws a PartitionAlreadyExistsException, if set to true,
nothing happens.TableNotExistException
- thrown if the target table does not existTableNotPartitionedException
- thrown if the target table is not partitionedPartitionSpecInvalidException
- thrown if the given partition spec is invalidPartitionAlreadyExistsException
- thrown if the target partition already existsCatalogException
- in case of any runtime exceptionpublic void dropPartition(ObjectPath tablePath, CatalogPartitionSpec partitionSpec, boolean ignoreIfNotExists) throws PartitionNotExistException, CatalogException
Catalog
tablePath
- path of the table.partitionSpec
- partition spec of the partition to dropignoreIfNotExists
- flag to specify behavior if the partition does not exist: if set to
false, throw an exception, if set to true, nothing happens.PartitionNotExistException
- thrown if the target partition does not existCatalogException
- in case of any runtime exceptionpublic void alterPartition(ObjectPath tablePath, CatalogPartitionSpec partitionSpec, CatalogPartition newPartition, boolean ignoreIfNotExists) throws PartitionNotExistException, CatalogException
Catalog
tablePath
- path of the tablepartitionSpec
- partition spec of the partitionnewPartition
- new partition to replace the old oneignoreIfNotExists
- flag to specify behavior if the partition does not exist: if set to
false, throw an exception, if set to true, nothing happens.PartitionNotExistException
- thrown if the target partition does not existCatalogException
- in case of any runtime exceptionpublic List<CatalogPartitionSpec> listPartitions(ObjectPath tablePath) throws TableNotExistException, TableNotPartitionedException, CatalogException
Catalog
tablePath
- path of the tableTableNotExistException
- thrown if the table does not exist in the catalogTableNotPartitionedException
- thrown if the table is not partitionedCatalogException
- in case of any runtime exceptionpublic List<CatalogPartitionSpec> listPartitions(ObjectPath tablePath, CatalogPartitionSpec partitionSpec) throws TableNotExistException, TableNotPartitionedException, PartitionSpecInvalidException, CatalogException
Catalog
tablePath
- path of the tablepartitionSpec
- the partition spec to listTableNotExistException
- thrown if the table does not exist in the catalogTableNotPartitionedException
- thrown if the table is not partitionedCatalogException
- in case of any runtime exceptionPartitionSpecInvalidException
public List<CatalogPartitionSpec> listPartitionsByFilter(ObjectPath tablePath, List<Expression> filters) throws TableNotExistException, TableNotPartitionedException, CatalogException
Catalog
NOTE: For FieldReferenceExpression, the field index is based on schema of this table instead of partition columns only.
The passed in predicates have been translated in conjunctive form.
If catalog does not support this interface at present, throw an UnsupportedOperationException
directly. If the catalog does not have a valid filter, throw
the UnsupportedOperationException
directly. Planner will fallback to get all
partitions and filter by itself.
tablePath
- path of the tablefilters
- filters to push down filter to catalogTableNotExistException
- thrown if the table does not exist in the catalogTableNotPartitionedException
- thrown if the table is not partitionedCatalogException
- in case of any runtime exceptionpublic CatalogPartition getPartition(ObjectPath tablePath, CatalogPartitionSpec partitionSpec) throws PartitionNotExistException, CatalogException
Catalog
tablePath
- path of the tablepartitionSpec
- partition spec of partition to getPartitionNotExistException
- thrown if the partition doesn't existCatalogException
- in case of any runtime exceptionpublic boolean partitionExists(ObjectPath tablePath, CatalogPartitionSpec partitionSpec) throws CatalogException
Catalog
tablePath
- path of the tablepartitionSpec
- partition spec of the partition to checkCatalogException
- in case of any runtime exceptionpublic CatalogTableStatistics getTableStatistics(ObjectPath tablePath) throws TableNotExistException
Catalog
tablePath
- path of the tableTableNotExistException
- if the table does not exist in the catalogpublic CatalogColumnStatistics getTableColumnStatistics(ObjectPath tablePath) throws TableNotExistException
Catalog
tablePath
- path of the tableTableNotExistException
- if the table does not exist in the catalogpublic CatalogTableStatistics getPartitionStatistics(ObjectPath tablePath, CatalogPartitionSpec partitionSpec) throws PartitionNotExistException
Catalog
tablePath
- path of the tablepartitionSpec
- partition spec of the partitionPartitionNotExistException
- if the partition does not existpublic CatalogColumnStatistics getPartitionColumnStatistics(ObjectPath tablePath, CatalogPartitionSpec partitionSpec) throws PartitionNotExistException
Catalog
tablePath
- path of the tablepartitionSpec
- partition spec of the partitionPartitionNotExistException
- if the partition does not existpublic void alterTableStatistics(ObjectPath tablePath, CatalogTableStatistics tableStatistics, boolean ignoreIfNotExists) throws TableNotExistException
Catalog
tablePath
- path of the tabletableStatistics
- new statistics to updateignoreIfNotExists
- flag to specify behavior if the table does not exist: if set to
false, throw an exception, if set to true, nothing happens.TableNotExistException
- if the table does not exist in the catalogpublic void alterTableColumnStatistics(ObjectPath tablePath, CatalogColumnStatistics columnStatistics, boolean ignoreIfNotExists) throws TableNotExistException
Catalog
tablePath
- path of the tablecolumnStatistics
- new column statistics to updateignoreIfNotExists
- flag to specify behavior if the table does not exist: if set to
false, throw an exception, if set to true, nothing happens.TableNotExistException
- if the table does not exist in the catalogpublic void alterPartitionStatistics(ObjectPath tablePath, CatalogPartitionSpec partitionSpec, CatalogTableStatistics partitionStatistics, boolean ignoreIfNotExists) throws PartitionNotExistException
Catalog
tablePath
- path of the tablepartitionSpec
- partition spec of the partitionpartitionStatistics
- new statistics to updateignoreIfNotExists
- flag to specify behavior if the partition does not exist: if set to
false, throw an exception, if set to true, nothing happens.PartitionNotExistException
- if the partition does not existpublic void alterPartitionColumnStatistics(ObjectPath tablePath, CatalogPartitionSpec partitionSpec, CatalogColumnStatistics columnStatistics, boolean ignoreIfNotExists) throws PartitionNotExistException
Catalog
tablePath
- path of the tablepartitionSpec
- partition spec of the partition @@param columnStatistics new column
statistics to updateignoreIfNotExists
- flag to specify behavior if the partition does not exist: if set to
false, throw an exception, if set to true, nothing happens.PartitionNotExistException
- if the partition does not existCopyright © 2014–2024 The Apache Software Foundation. All rights reserved.