Package org.apache.iceberg.catalog
Interface SessionCatalog
- All Known Implementing Classes:
 BaseSessionCatalog,BaseViewSessionCatalog,RESTSessionCatalog
public interface SessionCatalog
A Catalog API for table and namespace operations that includes session context.
- 
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic final classContext for a session. - 
Method Summary
Modifier and TypeMethodDescriptionbuildTable(SessionCatalog.SessionContext context, TableIdentifier ident, Schema schema) Create a builder to create a table or start a create/replace transaction.default voidcreateNamespace(SessionCatalog.SessionContext context, Namespace namespace) Create a namespace in the catalog.voidcreateNamespace(SessionCatalog.SessionContext context, Namespace namespace, Map<String, String> metadata) Create a namespace in the catalog.booleandropNamespace(SessionCatalog.SessionContext context, Namespace namespace) Drop a namespace.booleandropTable(SessionCatalog.SessionContext context, TableIdentifier ident) Drop a table, without requesting that files are immediately deleted.voidinitialize(String name, Map<String, String> properties) Initialize given a custom name and a map of catalog properties.voidinvalidateTable(SessionCatalog.SessionContext context, TableIdentifier ident) Invalidate cached table metadata from current catalog.List top-level namespaces from the catalog.listNamespaces(SessionCatalog.SessionContext context, Namespace namespace) List child namespaces from the namespace.listTables(SessionCatalog.SessionContext context, Namespace namespace) Return all the identifiers under this namespace.loadNamespaceMetadata(SessionCatalog.SessionContext context, Namespace namespace) Load metadata properties for a namespace.loadTable(SessionCatalog.SessionContext context, TableIdentifier ident) Load a table.name()Return the name for this catalog.default booleannamespaceExists(SessionCatalog.SessionContext context, Namespace namespace) Checks whether the Namespace exists.Return the properties for this catalog.booleanpurgeTable(SessionCatalog.SessionContext context, TableIdentifier ident) Drop a table and request that files are immediately deleted.registerTable(SessionCatalog.SessionContext context, TableIdentifier ident, String metadataFileLocation) Register a table if it does not exist.voidrenameTable(SessionCatalog.SessionContext context, TableIdentifier from, TableIdentifier to) Rename a table.default booleantableExists(SessionCatalog.SessionContext context, TableIdentifier ident) Check whether table exists.booleanupdateNamespaceMetadata(SessionCatalog.SessionContext context, Namespace namespace, Map<String, String> updates, Set<String> removals) Set a collection of properties on a namespace in the catalog. 
- 
Method Details
- 
initialize
Initialize given a custom name and a map of catalog properties.- Parameters:
 name- a custom name for the catalogproperties- catalog properties
 - 
name
String name()Return the name for this catalog.- Returns:
 - this catalog's name
 
 - 
properties
Return the properties for this catalog.- Returns:
 - this catalog's config properties
 
 - 
listTables
Return all the identifiers under this namespace.- Parameters:
 context- session contextnamespace- a namespace- Returns:
 - a list of identifiers for tables
 - Throws:
 NoSuchNamespaceException- if the namespace does not exist
 - 
buildTable
Catalog.TableBuilder buildTable(SessionCatalog.SessionContext context, TableIdentifier ident, Schema schema) Create a builder to create a table or start a create/replace transaction.- Parameters:
 context- session contextident- a table identifierschema- a schema- Returns:
 - the builder to create a table or start a create/replace transaction
 
 - 
registerTable
Table registerTable(SessionCatalog.SessionContext context, TableIdentifier ident, String metadataFileLocation) Register a table if it does not exist.- Parameters:
 context- session contextident- a table identifiermetadataFileLocation- the location of a metadata file- Returns:
 - a Table instance
 - Throws:
 AlreadyExistsException- if the table already exists in the catalog.
 - 
tableExists
Check whether table exists.- Parameters:
 context- session contextident- a table identifier- Returns:
 - true if the table exists, false otherwise
 
 - 
loadTable
Load a table.- Parameters:
 context- session contextident- a table identifier- Returns:
 - instance of 
Tableimplementation referred bytableIdentifier - Throws:
 NoSuchTableException- if the table does not exist
 - 
dropTable
Drop a table, without requesting that files are immediately deleted.Data and metadata files should be deleted according to the catalog's policy.
- Parameters:
 context- session contextident- a table identifier- Returns:
 - true if the table was dropped, false if the table did not exist
 
 - 
purgeTable
Drop a table and request that files are immediately deleted.- Parameters:
 context- session contextident- a table identifier- Returns:
 - true if the table was dropped and purged, false if the table did not exist
 - Throws:
 UnsupportedOperationException- if immediate delete is not supported
 - 
renameTable
Rename a table.- Parameters:
 context- session contextfrom- identifier of the table to renameto- new table name- Throws:
 NoSuchTableException- if the from table does not existAlreadyExistsException- if the to table already exists
 - 
invalidateTable
Invalidate cached table metadata from current catalog.If the table is already loaded or cached, drop cached data. If the table does not exist or is not cached, do nothing.
- Parameters:
 context- session contextident- a table identifier
 - 
createNamespace
Create a namespace in the catalog.- Parameters:
 context- session contextnamespace- anamespace- Throws:
 AlreadyExistsException- If the namespace already existsUnsupportedOperationException- If create is not a supported operation
 - 
createNamespace
void createNamespace(SessionCatalog.SessionContext context, Namespace namespace, Map<String, String> metadata) Create a namespace in the catalog.- Parameters:
 context- session contextnamespace- anamespacemetadata- a string Map of properties for the given namespace- Throws:
 AlreadyExistsException- If the namespace already existsUnsupportedOperationException- If create is not a supported operation
 - 
listNamespaces
List top-level namespaces from the catalog.If an object such as a table, view, or function exists, its parent namespaces must also exist and must be returned by this discovery method. For example, if table a.b.t exists, this method must return ["a"] in the result array.
- Parameters:
 context- session context- Returns:
 - a List of namespace 
Namespacenames 
 - 
listNamespaces
List child namespaces from the namespace.For two existing tables named 'a.b.c.table' and 'a.b.d.table', this method returns:
- Given: 
Namespace.empty() - Returns: 
Namespace.of("a") 
- Given: 
Namespace.of("a") - Returns: 
Namespace.of("a", "b") 
- Given: 
Namespace.of("a", "b") - Returns: 
Namespace.of("a", "b", "c")andNamespace.of("a", "b", "d") 
- Given: 
Namespace.of("a", "b", "c") - Returns: empty list, because there are no child namespaces
 
- Parameters:
 context- session contextnamespace- anamespace- Returns:
 - a List of child 
Namespacenames from the given namespace - Throws:
 NoSuchNamespaceException- If the namespace does not exist (optional)
 - Given: 
 - 
loadNamespaceMetadata
Map<String,String> loadNamespaceMetadata(SessionCatalog.SessionContext context, Namespace namespace) Load metadata properties for a namespace.- Parameters:
 context- session contextnamespace- anamespace- Returns:
 - a string map of properties for the given namespace
 - Throws:
 NoSuchNamespaceException- If the namespace does not exist (optional)
 - 
dropNamespace
Drop a namespace. If the namespace exists and was dropped, this will return true.- Parameters:
 context- session contextnamespace- anamespace- Returns:
 - true if the namespace was dropped, false otherwise.
 - Throws:
 NamespaceNotEmptyException- If the namespace is not empty
 - 
updateNamespaceMetadata
boolean updateNamespaceMetadata(SessionCatalog.SessionContext context, Namespace namespace, Map<String, String> updates, Set<String> removals) Set a collection of properties on a namespace in the catalog.Properties that are not in the given map are not modified or removed by this method.
- Parameters:
 context- session contextnamespace- anamespaceupdates- properties to set for the namespaceremovals- properties to remove from the namespace- Throws:
 NoSuchNamespaceException- If the namespace does not exist (optional)UnsupportedOperationException- If namespace properties are not supported
 - 
namespaceExists
Checks whether the Namespace exists.- Parameters:
 context- session contextnamespace- anamespace- Returns:
 - true if the Namespace exists, false otherwise
 
 
 -