Package org.h2.schema
Class Schema
java.lang.Object
org.h2.engine.DbObject
org.h2.schema.Schema
- All Implemented Interfaces:
HasSQL
- Direct Known Subclasses:
MetaSchema
A schema as created by the SQL statement
CREATE SCHEMA
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ConcurrentHashMap
<String, Constant> private final ConcurrentHashMap
<String, Constraint> private final ConcurrentHashMap
<String, Domain> private final ConcurrentHashMap
<String, UserDefinedFunction> private final ConcurrentHashMap
<String, Index> private RightOwner
private final ConcurrentHashMap
<String, Sequence> private final ConcurrentHashMap
<String, TableSynonym> private final boolean
private final ConcurrentHashMap
<String, Table> The set of returned unique names that are not yet stored.private final ConcurrentHashMap
<String, TriggerObject> Fields inherited from class org.h2.engine.DbObject
AGGREGATE, comment, COMMENT, CONSTANT, CONSTRAINT, database, DOMAIN, FUNCTION_ALIAS, INDEX, RIGHT, ROLE, SCHEMA, SEQUENCE, SETTING, SYNONYM, TABLE_OR_VIEW, trace, TRIGGER, USER
Fields inherited from interface org.h2.util.HasSQL
ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS
-
Constructor Summary
ConstructorsConstructorDescriptionSchema
(Database database, int id, String schemaName, RightOwner owner, boolean system) Create a new schema object. -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(SchemaObject obj) Add an object to this schema.boolean
canDrop()
Check if this schema can be dropped.Add a table synonym to the schema.createTable
(CreateTableData data) Add a table to the schema.createTableLink
(int id, String tableName, String driver, String url, String user, String password, String originalSchema, String originalTable, boolean emitUpdates, boolean force) Add a linked table to the schema.findAggregate
(String name) Get the user defined aggregate function if it exists.findConstant
(String constantName) Try to find a user defined constant with this name.findConstraint
(SessionLocal session, String name) Try to find a constraint with this name.findDomain
(String name) Get the domain if it exists, or null if not.findFunction
(String functionAlias) Try to find a user defined function with this name.Try to find a user defined function or aggregate function with the specified name.findIndex
(SessionLocal session, String name) Try to find an index with this name.findSequence
(String sequenceName) Try to find a sequence with this name.findTableOrView
(SessionLocal session, String name) Try to find a table or view with this name.findTrigger
(String name) Try to find a trigger with this name.void
freeUniqueName
(String name) Release a unique object name.void
getAll
(int type, ArrayList<SchemaObject> addTo) Get all objects of the given type.getAll
(ArrayList<SchemaObject> addTo) Get all objects.getAllTablesAndViews
(SessionLocal session) Get all tables and views.Get the list of dependent children (for tables, this includes indexes and so on).getConstant
(String constantName) Get the user defined constant with the given name.getConstraint
(String name) Get the constraint with the given name.Construct the CREATE ...getCreateSQLForCopy
(Table table, String quotedName) Build a SQL statement to re-create the object, or to create a copy of the object with a different name or referencing a different tableGet the domain with the given name.Get the index with the given name.private Map
<String, SchemaObject> getMap
(int type) getOwner()
Get the owner of this schema.getSequence
(String sequenceName) Get the sequence with the given name.getSynonym
(String name) Try to find a synonym with this name.Get table engine params of this schema.getTableOrView
(SessionLocal session, String name) Get the table or view with the given name.getTableOrViewByName
(SessionLocal session, String name) Get the table with the given name, if any.int
getType()
Get the object type.getUniqueConstraintName
(SessionLocal session, Table table) Create a unique constraint name.getUniqueDomainConstraintName
(SessionLocal session, Domain domain) Create a unique constraint name.getUniqueIndexName
(SessionLocal session, Table table, String prefix) Create a unique index name.private String
getUniqueName
(DbObject obj, Map<String, ? extends SchemaObject> map, String prefix) boolean
isEmpty()
Return whether is this schema is empty (does not contain any objects).void
remove
(SchemaObject obj) Remove an object from this schema.void
removeChildrenAndResources
(SessionLocal session) Delete all dependent children objects and resources of this object.private void
removeChildrenFromMap
(SessionLocal session, ConcurrentHashMap<String, ? extends SchemaObject> map) void
rename
(SchemaObject obj, String newName) Rename an object.void
reserveUniqueName
(String name) Reserve a unique object name.resolveTableOrView
(SessionLocal session, String name) Try to find a table or view with this name.void
setTableEngineParams
(ArrayList<String> tableEngineParams) Set table engine params of this schema.Methods inherited from class org.h2.engine.DbObject
checkRename, getComment, getCreateSQLForMeta, getDatabase, getDropSQL, getId, getModificationId, getName, getSQL, getSQL, invalidate, isTemporary, isValid, rename, setComment, setModified, setObjectName, setTemporary, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.h2.util.HasSQL
getTraceSQL
-
Field Details
-
owner
-
system
private final boolean system -
tableEngineParams
-
tablesAndViews
-
domains
-
synonyms
-
indexes
-
sequences
-
triggers
-
constraints
-
constants
-
functionsAndAggregates
-
temporaryUniqueNames
The set of returned unique names that are not yet stored. It is used to avoid returning the same unique name twice when multiple threads concurrently create objects.
-
-
Constructor Details
-
Schema
Create a new schema object.- Parameters:
database
- the databaseid
- the object idschemaName
- the schema nameowner
- the owner of the schemasystem
- if this is a system schema (such a schema can not be dropped)
-
-
Method Details
-
canDrop
public boolean canDrop()Check if this schema can be dropped. System schemas can not be dropped.- Returns:
- true if it can be dropped
-
getCreateSQLForCopy
Description copied from class:DbObject
Build a SQL statement to re-create the object, or to create a copy of the object with a different name or referencing a different table- Specified by:
getCreateSQLForCopy
in classDbObject
- Parameters:
table
- the new tablequotedName
- the quoted name- Returns:
- the SQL statement
-
getCreateSQL
Description copied from class:DbObject
Construct the CREATE ... SQL statement for this object.- Specified by:
getCreateSQL
in classDbObject
- Returns:
- the SQL statement
-
getType
public int getType()Description copied from class:DbObject
Get the object type. -
isEmpty
public boolean isEmpty()Return whether is this schema is empty (does not contain any objects).- Returns:
true
if this schema is empty,false
otherwise
-
getChildren
Description copied from class:DbObject
Get the list of dependent children (for tables, this includes indexes and so on).- Overrides:
getChildren
in classDbObject
- Returns:
- the list of children, or
null
-
removeChildrenAndResources
Description copied from class:DbObject
Delete all dependent children objects and resources of this object.- Specified by:
removeChildrenAndResources
in classDbObject
- Parameters:
session
- the session
-
removeChildrenFromMap
private void removeChildrenFromMap(SessionLocal session, ConcurrentHashMap<String, ? extends SchemaObject> map) -
getOwner
Get the owner of this schema.- Returns:
- the owner
-
getTableEngineParams
Get table engine params of this schema.- Returns:
- default table engine params
-
setTableEngineParams
Set table engine params of this schema.- Parameters:
tableEngineParams
- default table engine params
-
getMap
-
add
Add an object to this schema. This method must not be called within CreateSchemaObject; use Database.addSchemaObject() instead- Parameters:
obj
- the object to add
-
rename
Rename an object.- Parameters:
obj
- the object to renamenewName
- the new name
-
findTableOrView
Try to find a table or view with this name. This method returns null if no object with this name exists. Local temporary tables are also returned. Synonyms are not returned or resolved.- Parameters:
session
- the sessionname
- the object name- Returns:
- the object or null
-
resolveTableOrView
Try to find a table or view with this name. This method returns null if no object with this name exists. Local temporary tables are also returned. If a synonym with this name exists, the backing table of the synonym is returned- Parameters:
session
- the sessionname
- the object name- Returns:
- the object or null
-
getSynonym
Try to find a synonym with this name. This method returns null if no object with this name exists.- Parameters:
name
- the object name- Returns:
- the object or null
-
findDomain
Get the domain if it exists, or null if not.- Parameters:
name
- the name of the domain- Returns:
- the domain or null
-
findIndex
Try to find an index with this name. This method returns null if no object with this name exists.- Parameters:
session
- the sessionname
- the object name- Returns:
- the object or null
-
findTrigger
Try to find a trigger with this name. This method returns null if no object with this name exists.- Parameters:
name
- the object name- Returns:
- the object or null
-
findSequence
Try to find a sequence with this name. This method returns null if no object with this name exists.- Parameters:
sequenceName
- the object name- Returns:
- the object or null
-
findConstraint
Try to find a constraint with this name. This method returns null if no object with this name exists.- Parameters:
session
- the sessionname
- the object name- Returns:
- the object or null
-
findConstant
Try to find a user defined constant with this name. This method returns null if no object with this name exists.- Parameters:
constantName
- the object name- Returns:
- the object or null
-
findFunction
Try to find a user defined function with this name. This method returns null if no object with this name exists.- Parameters:
functionAlias
- the object name- Returns:
- the object or null
-
findAggregate
Get the user defined aggregate function if it exists. This method returns null if no object with this name exists.- Parameters:
name
- the name of the user defined aggregate function- Returns:
- the aggregate function or null
-
findFunctionOrAggregate
Try to find a user defined function or aggregate function with the specified name. This method returns null if no object with this name exists.- Parameters:
name
- the object name- Returns:
- the object or null
-
reserveUniqueName
Reserve a unique object name.- Parameters:
name
- the object name
-
freeUniqueName
Release a unique object name.- Parameters:
name
- the object name
-
getUniqueName
-
getUniqueConstraintName
Create a unique constraint name.- Parameters:
session
- the sessiontable
- the constraint table- Returns:
- the unique name
-
getUniqueDomainConstraintName
Create a unique constraint name.- Parameters:
session
- the sessiondomain
- the constraint domain- Returns:
- the unique name
-
getUniqueIndexName
Create a unique index name.- Parameters:
session
- the sessiontable
- the indexed tableprefix
- the index name prefix- Returns:
- the unique name
-
getTableOrView
Get the table or view with the given name. Local temporary tables are also returned.- Parameters:
session
- the sessionname
- the table or view name- Returns:
- the table or view
- Throws:
DbException
- if no such object exists
-
getDomain
Get the domain with the given name.- Parameters:
name
- the domain name- Returns:
- the domain
- Throws:
DbException
- if no such object exists
-
getIndex
Get the index with the given name.- Parameters:
name
- the index name- Returns:
- the index
- Throws:
DbException
- if no such object exists
-
getConstraint
Get the constraint with the given name.- Parameters:
name
- the constraint name- Returns:
- the constraint
- Throws:
DbException
- if no such object exists
-
getConstant
Get the user defined constant with the given name.- Parameters:
constantName
- the constant name- Returns:
- the constant
- Throws:
DbException
- if no such object exists
-
getSequence
Get the sequence with the given name.- Parameters:
sequenceName
- the sequence name- Returns:
- the sequence
- Throws:
DbException
- if no such object exists
-
getAll
Get all objects.- Parameters:
addTo
- list to add objects to, ornull
to allocate a new list- Returns:
- the specified list with added objects, or a new (possibly empty) list with all objects
-
getAll
Get all objects of the given type.- Parameters:
type
- the object typeaddTo
- list to add objects to
-
getAllDomains
-
getAllConstraints
-
getAllConstants
-
getAllSequences
-
getAllTriggers
-
getAllTablesAndViews
Get all tables and views.- Parameters:
session
- the session,null
to exclude meta tables- Returns:
- a (possible empty) list of all objects
-
getAllIndexes
-
getAllSynonyms
-
getAllFunctionsAndAggregates
-
getTableOrViewByName
Get the table with the given name, if any.- Parameters:
session
- the sessionname
- the table name- Returns:
- the table or null if not found
-
remove
Remove an object from this schema.- Parameters:
obj
- the object to remove
-
createTable
Add a table to the schema.- Parameters:
data
- the create table information- Returns:
- the created
Table
object
-
createSynonym
Add a table synonym to the schema.- Parameters:
data
- the create synonym information- Returns:
- the created
TableSynonym
object
-
createTableLink
public TableLink createTableLink(int id, String tableName, String driver, String url, String user, String password, String originalSchema, String originalTable, boolean emitUpdates, boolean force) Add a linked table to the schema.- Parameters:
id
- the object idtableName
- the table name of the aliasdriver
- the driver class nameurl
- the database URLuser
- the user namepassword
- the passwordoriginalSchema
- the schema name of the target tableoriginalTable
- the table name of the target tableemitUpdates
- if updates should be emitted instead of delete/insertforce
- create the object even if the database can not be accessed- Returns:
- the
TableLink
object
-