public abstract class AbstractCatalog extends Object implements Catalog
Catalog.| Modifier and Type | Class and Description |
|---|---|
protected static class |
AbstractCatalog.TableMeta
Table metadata.
|
Catalog.ColumnAlreadyExistException, Catalog.ColumnNotExistException, Catalog.DatabaseAlreadyExistException, Catalog.DatabaseNoPermissionException, Catalog.DatabaseNotEmptyException, Catalog.DatabaseNotExistException, Catalog.PartitionNotExistException, Catalog.ProcessSystemDatabaseException, Catalog.TableAlreadyExistException, Catalog.TableNoPermissionException, Catalog.TableNotExistException, Catalog.ViewAlreadyExistException, Catalog.ViewNotExistException| Modifier and Type | Field and Description |
|---|---|
protected Options |
catalogOptions |
protected FileIO |
fileIO |
protected Map<String,String> |
tableDefaultOptions |
COMMENT_PROP, DB_LOCATION_PROP, DB_SUFFIX, DEFAULT_DATABASE, LAST_UPDATE_TIME_PROP, NUM_FILES_PROP, NUM_ROWS_PROP, OWNER_PROP, SYSTEM_BRANCH_PREFIX, SYSTEM_DATABASE_NAME, SYSTEM_TABLE_SPLITTER, TABLE_DEFAULT_OPTION_PREFIX, TOTAL_SIZE_PROP| Modifier | Constructor and Description |
|---|---|
protected |
AbstractCatalog(FileIO fileIO) |
protected |
AbstractCatalog(FileIO fileIO,
Options options) |
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
allowCustomTablePath() |
Map<String,Map<String,Path>> |
allTablePaths() |
void |
alterDatabase(String name,
List<PropertyChange> changes,
boolean ignoreIfNotExists)
Alter a database.
|
protected abstract void |
alterDatabaseImpl(String name,
List<PropertyChange> changes) |
void |
alterTable(Identifier identifier,
List<SchemaChange> changes,
boolean ignoreIfNotExists)
Modify an existing table from
SchemaChanges. |
protected abstract void |
alterTableImpl(Identifier identifier,
List<SchemaChange> changes) |
protected void |
assertMainBranch(Identifier identifier) |
void |
createDatabase(String name,
boolean ignoreIfExists,
Map<String,String> properties)
Create a database with properties.
|
protected abstract void |
createDatabaseImpl(String name,
Map<String,String> properties) |
void |
createFormatTable(Identifier identifier,
Schema schema)
Create a
FormatTable identified by the given Identifier. |
void |
createPartition(Identifier identifier,
Map<String,String> partitionSpec)
Create the partition of the specify table.
|
void |
createTable(Identifier identifier,
Schema schema,
boolean ignoreIfExists)
Create a new table.
|
protected abstract void |
createTableImpl(Identifier identifier,
Schema schema) |
Optional<CatalogLockFactory> |
defaultLockFactory() |
void |
dropDatabase(String name,
boolean ignoreIfNotExists,
boolean cascade)
Drop a database.
|
protected abstract void |
dropDatabaseImpl(String name) |
void |
dropPartition(Identifier identifier,
Map<String,String> partitionSpec)
Drop the partition of the specify table.
|
void |
dropTable(Identifier identifier,
boolean ignoreIfNotExists)
Drop a table.
|
protected abstract void |
dropTableImpl(Identifier identifier) |
FileIO |
fileIO()
FileIO of this catalog. |
Database |
getDatabase(String name)
Return a
Database identified by the given name. |
protected abstract Database |
getDatabaseImpl(String name) |
protected Table |
getDataOrFormatTable(Identifier identifier) |
protected AbstractCatalog.TableMeta |
getDataTableMeta(Identifier identifier) |
protected abstract TableSchema |
getDataTableSchema(Identifier identifier) |
Table |
getTable(Identifier identifier)
Return a
Table identified by the given Identifier. |
Path |
getTableLocation(Identifier identifier) |
protected List<String> |
listDatabasesInFileSystem(Path warehouse) |
List<Partition> |
listPartitions(Identifier identifier)
Get Partition of all partitions of the table.
|
List<String> |
listTables(String databaseName)
Get names of all tables under this database.
|
protected abstract List<String> |
listTablesImpl(String databaseName) |
protected List<String> |
listTablesInFileSystem(Path databasePath) |
Optional<CatalogLockContext> |
lockContext() |
protected boolean |
lockEnabled() |
Optional<CatalogLockFactory> |
lockFactory() |
Optional<MetastoreClient.Factory> |
metastoreClientFactory(Identifier identifier)
Get metastore client factory for the table specified by
identifier. |
Path |
newDatabasePath(String database)
Get warehouse path for specified database.
|
static Path |
newDatabasePath(String warehouse,
String database) |
static Path |
newTableLocation(String warehouse,
Identifier identifier) |
protected FileIO |
objectFileIO(String objectLocation)
Catalog implementation may override this method to provide
FileIO to object table. |
Map<String,String> |
options()
Catalog options for re-creating this catalog.
|
void |
renameTable(Identifier fromTable,
Identifier toTable,
boolean ignoreIfNotExists)
Rename a table.
|
protected abstract void |
renameTableImpl(Identifier fromTable,
Identifier toTable) |
protected boolean |
tableExistsInFileSystem(Path tablePath,
String branchName) |
Optional<TableSchema> |
tableSchemaInFileSystem(Path tablePath,
String branchName) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitalterTable, caseSensitive, createDatabase, createView, dropView, getView, invalidateTable, listDatabases, listViews, renameView, repairCatalog, repairDatabase, repairTable, warehousecloseprotected final FileIO fileIO
protected final Options catalogOptions
protected AbstractCatalog(FileIO fileIO)
public Map<String,String> options()
Catalogpublic FileIO fileIO()
CatalogFileIO of this catalog. It can access Catalog.warehouse() path.public Optional<CatalogLockFactory> lockFactory()
public Optional<CatalogLockFactory> defaultLockFactory()
public Optional<CatalogLockContext> lockContext()
protected boolean lockEnabled()
protected boolean allowCustomTablePath()
public void createDatabase(String name, boolean ignoreIfExists, Map<String,String> properties) throws Catalog.DatabaseAlreadyExistException
CatalogcreateDatabase in interface Catalogname - Name of the database to be createdignoreIfExists - 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.properties - properties to be associated with the databaseCatalog.DatabaseAlreadyExistException - if the given database already exists and ignoreIfExists
is falsepublic Database getDatabase(String name) throws Catalog.DatabaseNotExistException
CatalogDatabase identified by the given name.getDatabase in interface Catalogname - Database nameDatabaseCatalog.DatabaseNotExistException - if the requested database does not existprotected abstract Database getDatabaseImpl(String name) throws Catalog.DatabaseNotExistException
public void createPartition(Identifier identifier, Map<String,String> partitionSpec) throws Catalog.TableNotExistException
CatalogOnly catalog with metastore can support this method, and only table with 'metastore.partitioned-table' can support this method.
createPartition in interface Catalogidentifier - path of the table to drop partitionpartitionSpec - the partition to be createdCatalog.TableNotExistException - if the table does not existpublic void dropPartition(Identifier identifier, Map<String,String> partitionSpec) throws Catalog.TableNotExistException
CatalogdropPartition in interface Catalogidentifier - path of the table to drop partitionpartitionSpec - the partition to be deletedCatalog.TableNotExistException - if the table does not existpublic List<Partition> listPartitions(Identifier identifier) throws Catalog.TableNotExistException
CataloglistPartitions in interface Catalogidentifier - path of the table to list partitionsCatalog.TableNotExistException - if the table does not existprotected abstract void createDatabaseImpl(String name, Map<String,String> properties)
public void dropDatabase(String name, boolean ignoreIfNotExists, boolean cascade) throws Catalog.DatabaseNotExistException, Catalog.DatabaseNotEmptyException
CatalogdropDatabase in interface Catalogname - 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.Catalog.DatabaseNotEmptyException - if the given database is not empty and isRestrict is trueCatalog.DatabaseNotExistExceptionprotected abstract void dropDatabaseImpl(String name)
public void alterDatabase(String name, List<PropertyChange> changes, boolean ignoreIfNotExists) throws Catalog.DatabaseNotExistException
CatalogalterDatabase in interface Catalogname - Name of the database to alter.changes - the property changesignoreIfNotExists - Flag to specify behavior when the database does not exist: if set to
false, throw an exception, if set to true, do nothing.Catalog.DatabaseNotExistException - if the given database is not exist and ignoreIfNotExists is
falseprotected abstract void alterDatabaseImpl(String name, List<PropertyChange> changes) throws Catalog.DatabaseNotExistException
public List<String> listTables(String databaseName) throws Catalog.DatabaseNotExistException
CatalogNOTE: System tables will not be listed.
listTables in interface CatalogCatalog.DatabaseNotExistException - if the database does not existpublic void dropTable(Identifier identifier, boolean ignoreIfNotExists) throws Catalog.TableNotExistException
CatalogNOTE: System tables can not be dropped.
dropTable in interface Catalogidentifier - Path of the table to be droppedignoreIfNotExists - Flag to specify behavior when the table does not exist: if set to
false, throw an exception, if set to true, do nothing.Catalog.TableNotExistException - if the table does not existprotected abstract void dropTableImpl(Identifier identifier)
public void createTable(Identifier identifier, Schema schema, boolean ignoreIfExists) throws Catalog.TableAlreadyExistException, Catalog.DatabaseNotExistException
CatalogNOTE: System tables can not be created.
createTable in interface Catalogidentifier - path of the table to be createdschema - the table definitionignoreIfExists - flag to specify behavior when a table already exists at the given path:
if set to false, it throws a TableAlreadyExistException, if set to true, do nothing.Catalog.TableAlreadyExistException - if table already exists and ignoreIfExists is falseCatalog.DatabaseNotExistException - if the database in identifier doesn't existprotected abstract void createTableImpl(Identifier identifier, Schema schema)
public void renameTable(Identifier fromTable, Identifier toTable, boolean ignoreIfNotExists) throws Catalog.TableNotExistException, Catalog.TableAlreadyExistException
CatalogNOTE: If you use object storage, such as S3 or OSS, please use this syntax carefully, because the renaming of object storage is not atomic, and only partial files may be moved in case of failure.
NOTE: System tables can not be renamed.
renameTable in interface CatalogfromTable - the name of the table which need to renametoTable - the new tableignoreIfNotExists - Flag to specify behavior when the table does not exist: if set to
false, throw an exception, if set to true, do nothing.Catalog.TableNotExistException - if the fromTable does not existCatalog.TableAlreadyExistException - if the toTable already existsprotected abstract void renameTableImpl(Identifier fromTable, Identifier toTable)
public void alterTable(Identifier identifier, List<SchemaChange> changes, boolean ignoreIfNotExists) throws Catalog.TableNotExistException, Catalog.ColumnAlreadyExistException, Catalog.ColumnNotExistException
CatalogSchemaChanges.
NOTE: System tables can not be altered.
alterTable in interface Catalogidentifier - path of the table to be modifiedchanges - the schema changesignoreIfNotExists - flag to specify behavior when the table does not exist: if set to
false, throw an exception, if set to true, do nothing.Catalog.TableNotExistException - if the table does not existCatalog.ColumnAlreadyExistExceptionCatalog.ColumnNotExistExceptionprotected abstract void alterTableImpl(Identifier identifier, List<SchemaChange> changes) throws Catalog.TableNotExistException, Catalog.ColumnAlreadyExistException, Catalog.ColumnNotExistException
public Table getTable(Identifier identifier) throws Catalog.TableNotExistException
CataloggetTable in interface Catalogidentifier - Path of the tableCatalog.TableNotExistException - if the target does not existprotected Table getDataOrFormatTable(Identifier identifier) throws Catalog.TableNotExistException
Catalog.TableNotExistExceptionprotected FileIO objectFileIO(String objectLocation)
FileIO to object table.public void createFormatTable(Identifier identifier, Schema schema)
FormatTable identified by the given Identifier.identifier - Path of the tableschema - Schema of the tablepublic Path newDatabasePath(String database)
database - The given database nameprotected AbstractCatalog.TableMeta getDataTableMeta(Identifier identifier) throws Catalog.TableNotExistException
Catalog.TableNotExistExceptionprotected abstract TableSchema getDataTableSchema(Identifier identifier) throws Catalog.TableNotExistException
Catalog.TableNotExistExceptionpublic Optional<MetastoreClient.Factory> metastoreClientFactory(Identifier identifier)
identifier.public Path getTableLocation(Identifier identifier)
protected void assertMainBranch(Identifier identifier)
public static Path newTableLocation(String warehouse, Identifier identifier)
protected List<String> listDatabasesInFileSystem(Path warehouse) throws IOException
IOExceptionprotected List<String> listTablesInFileSystem(Path databasePath) throws IOException
IOExceptionprotected boolean tableExistsInFileSystem(Path tablePath, String branchName)
public Optional<TableSchema> tableSchemaInFileSystem(Path tablePath, String branchName)
Copyright © 2023–2025 The Apache Software Foundation. All rights reserved.