## org.h2.engine
Class Database

    java.lang.Object
      org.h2.engine.Database

All Implemented Interfaces:
  DataHandler

    public class Database

extends java.lang.Object
implements DataHandler

There is one database object per open database. The format of the meta data table is: id int, 0, objectType int, sql varchar

Since:
  2004-04-15 22:49

Constructor Summary
`Database(ConnectionInfo ci, java.lang.String cipher)`

Method Summary
`void` `addDatabaseObject(Session session, DbObject obj)` Add an object to the database.
`void` `addSchemaObject(Session session, SchemaObject obj)` Add a schema object to the database.
`void` `afterWriting()` This method is called after updates are finished.
`int` `allocateObjectId()` Allocate a new object id.
`boolean` `areEqual(Value a, Value b)` Check if two values are equal with the current comparison mode.
`boolean` `beforeWriting()` This method is called before writing to the transaction log.
`void` `checkpoint()` Flush all changes and open a new transaction log.
`void` `checkpointIfRequired()` Flush all changes when using the serialized mode, and if there are pending changes, and some time has passed.
`void` `checkPowerOff()` Check if the simulated power failure occurred.
`void` `checkWritingAllowed()` Check if writing is allowed.
`int` `compare(Value a, Value b)` Compare two values with the current comparison mode.
`int` `compareTypeSave(Value a, Value b)` Compare two values with the current comparison mode.
`java.lang.String` `createTempFile()` Create a temporary file in the database folder.
`boolean` `equalsIdentifiers(java.lang.String a, java.lang.String b)` Compare two identifiers (table names, column names,...) and verify they are equal.
`void` `exceptionThrown(java.sql.SQLException e, java.lang.String sql)` This method is called after an exception occurred, to inform the database event listener (if one is set).
`UserAggregate` `findAggregate(java.lang.String name)` Get the user defined aggregate function if it exists, or null if not.
`Comment` `findComment(DbObject object)` Get the comment for the given database object if one exists, or null if not.
`Role` `findRole(java.lang.String roleName)` Get the role if it exists, or null if not.
`Schema` `findSchema(java.lang.String schemaName)` Get the schema if it exists, or null if not.
`Setting` `findSetting(java.lang.String name)` Get the setting if it exists, or null if not.
`User` `findUser(java.lang.String name)` Get the user if it exists, or null if not.
`UserDataType` `findUserDataType(java.lang.String name)` Get the user defined data type if it exists, or null if not.
`void` `flush()` Flush all pending changes to the transaction log.
`java.util.ArrayList<UserAggregate>` `getAllAggregates()`
`java.util.ArrayList<Comment>` `getAllComments()`
`int` `getAllowLiterals()`
`java.util.ArrayList<Right>` `getAllRights()`
`java.util.ArrayList<Role>` `getAllRoles()`
`java.util.ArrayList<SchemaObject>` `getAllSchemaObjects()` Get all schema objects.
`java.util.ArrayList<SchemaObject>` `getAllSchemaObjects(int type)` Get all schema objects of the given type.
`java.util.ArrayList<Schema>` `getAllSchemas()`
`java.util.ArrayList<Setting>` `getAllSettings()`
`java.util.ArrayList<Table>` `getAllTablesAndViews(boolean includeMeta)` Get all tables and views.
`java.util.ArrayList<UserDataType>` `getAllUserDataTypes()`
`java.util.ArrayList<User>` `getAllUsers()`
`java.lang.String` `getCacheType()`
`java.lang.String` `getCluster()`
`CompareMode` `getCompareMode()`
`SourceCompiler` `getCompiler()`
`java.lang.String` `getDatabasePath()` Get the database path.
`int` `getDefaultTableType()`
`Table` `getDependentTable(SchemaObject obj, Table except)` Get the first table that depends on this object.
`Session` `getExclusiveSession()`
`byte[]` `getFileEncryptionKey()`
`Table` `getFirstUserTable()` Get the first user defined table.
`boolean` `getFlushOnEachCommit()` Check if flush-on-each-commit is enabled.
`boolean` `getIgnoreCase()`
`java.util.ArrayList<InDoubtTransaction>` `getInDoubtTransactions()` Get the list of in-doubt transactions.
`JavaObjectSerializer` `getJavaObjectSerializer()` Return the serializer to be used for java objects being stored in column of type OTHER.
`TableLinkConnection` `getLinkConnection(java.lang.String driver, java.lang.String url, java.lang.String user, java.lang.String password)` Open a new connection or get an existing connection to another database.
`java.lang.String` `getLobCompressionAlgorithm(int type)` Get the compression algorithm used for large objects.
`JdbcConnection` `getLobConnectionForInit()`
`JdbcConnection` `getLobConnectionForRegularUse()`
`SmallLRUCache<java.lang.String,java.lang.String[]>` `getLobFileListCache()` Get the lob file list cache if it is used.
`Session` `getLobSession()`
`LobStorageBackend` `getLobStorage()` Get the lob storage mechanism to use.
`java.lang.Object` `getLobSyncObject()` Get the synchronization object for lob operations.
`int` `getLockMode()`
`int` `getLogMode()`
`int` `getMaxLengthInplaceLob()` Get the maximum length of a in-place large object
`int` `getMaxMemoryRows()`
`int` `getMaxMemoryUndo()`
`int` `getMaxOperationMemory()`
`Mode` `getMode()`
`long` `getModificationDataId()`
`long` `getModificationMetaId()`
`MVTableEngine.Store` `getMvStore()`
`java.lang.String` `getName()`
`long` `getNextModificationDataId()`
`long` `getNextModificationMetaId()`
`boolean` `getOptimizeReuseResults()`
`PageStore` `getPageStore()`
`int` `getPowerOffCount()`
`Role` `getPublicRole()`
`boolean` `getQueryStatistics()`
`QueryStatisticsData` `getQueryStatisticsData()`
`boolean` `getReferentialIntegrity()`
`int` `getRetentionTime()`
`Schema` `getSchema(java.lang.String schemaName)` Get the schema.
`int` `getSessionCount()`
`Session[]` `getSessions(boolean includingSystemSession)` Get all sessions that are currently connected to the database.
`DbSettings` `getSettings()`
`java.lang.String` `getShortName()`
`Session` `getSystemSession()`
`TempFileDeleter` `getTempFileDeleter()` Get the temp file deleter mechanism.
`java.lang.String` `getTempTableName(java.lang.String baseName, Session session)` Get a unique temporary table name.
`Trace` `getTrace(java.lang.String module)` Get the trace object for the given module.
`TraceSystem` `getTraceSystem()`
`User` `getUser(java.lang.String name)` Get user with the given name.
`boolean` `isClosing()` Check if the database is in the process of closing.
`boolean` `isFileLockSerialized()`
`boolean` `isMultiThreaded()`
`boolean` `isMultiVersion()` Check if multi version concurrency is enabled for this database.
`boolean` `isPersistent()` Check if this database disk-based.
`boolean` `isReadOnly()`
`boolean` `isReconnectNeeded()` Check if the contents of the database was changed and therefore it is required to re-connect.
`boolean` `isStarting()` Check if the database is currently opening.
`boolean` `isSysTableLocked()` Checks if the system table (containing the catalog) is locked.
`boolean` `lockMeta(Session session)` Lock the metadata table for updates.

`

`<V> java.util.HashMap<java.lang.String,V>`

`

`newStringMap()`
Create a new hash map.

`FileStore` `openFile(java.lang.String name, java.lang.String openMode, boolean mustExist)` Open a file at the given location.
`int` `readLob(long lobId, byte[] hmac, long offset, byte[] buff, int off, int length)` Read from a lob.
`void` `removeDatabaseObject(Session session, DbObject obj)` Remove the object from the database.
`void` `removeMeta(Session session, int id)` Remove the given object from the meta data.
`void` `removeSchemaObject(Session session, SchemaObject obj)` Remove an object from the system table.
`void` `removeSession(Session session)` Remove a session.
`void` `renameDatabaseObject(Session session, DbObject obj, java.lang.String newName)` Rename a database object.
`void` `renameSchemaObject(Session session, SchemaObject obj, java.lang.String newName)` Rename a schema object.
`void` `setAllowLiterals(int value)`
`void` `setBackgroundException(DbException e)`
`void` `setCacheSize(int kb)`
`void` `setCloseDelay(int value)`
`void` `setCluster(java.lang.String cluster)`
`void` `setCompactMode(int compactMode)`
`void` `setCompareMode(CompareMode compareMode)`
`void` `setDefaultTableType(int defaultTableType)`
`void` `setDeleteFilesOnDisconnect(boolean b)`
`void` `setEventListener(DatabaseEventListener eventListener)`
`void` `setEventListenerClass(java.lang.String className)`
`void` `setExclusiveSession(Session session, boolean closeOthers)` Set the session that can exclusively access the database.
`void` `setIgnoreCase(boolean b)`
`static void` `setInitialPowerOffCount(int count)`
`void` `setJavaObjectSerializerName(java.lang.String serializerName)`
`void` `setLobCompressionAlgorithm(java.lang.String stringValue)`
`void` `setLockMode(int lockMode)`
`void` `setLogMode(int log)`
`void` `setMasterUser(User user)`
`void` `setMaxLengthInplaceLob(int value)`
`void` `setMaxLogSize(long value)`
`void` `setMaxMemoryRows(int value)`
`void` `setMaxMemoryUndo(int value)`
`void` `setMaxOperationMemory(int maxOperationMemory)`
`void` `setMode(Mode mode)`
`void` `setMultiThreaded(boolean multiThreaded)`
`void` `setMultiVersion(boolean multiVersion)`
`void` `setMvStore(MVTableEngine.Store mvStore)`
`void` `setOptimizeReuseResults(boolean b)`
`void` `setPowerOffCount(int count)`
`void` `setProgress(int state, java.lang.String name, int x, int max)` Set the progress of a long running operation.
`void` `setQueryStatistics(boolean b)`
`void` `setReadOnly(boolean readOnly)` Switch the database to read-only mode.
`void` `setReferentialIntegrity(boolean b)`
`void` `setRetentionTime(int value)`
`void` `setWriteDelay(int value)`
`void` `shutdownImmediately()` Immediately close the database.
`void` `sync()` Synchronize the files with the file system.
`java.lang.String` `toString()`
`void` `update(Session session, DbObject obj)` Update an object in the system table.
`void` `verifyMetaLocked(Session session)` Verify the meta table is locked.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### Database

    public Database(ConnectionInfo ci,
                    java.lang.String cipher)

Method Detail

### setInitialPowerOffCount

    public static void setInitialPowerOffCount(int count)

### setPowerOffCount

    public void setPowerOffCount(int count)

### getMvStore

    public MVTableEngine.Store getMvStore()

### setMvStore

    public void setMvStore(MVTableEngine.Store mvStore)

### areEqual

    public boolean areEqual(Value a,
                            Value b)

  Check if two values are equal with the current comparison mode.

  Parameters:
    `a` - the first value
    `b` - the second value
  Returns:
    true if both objects are equal

### compare

    public int compare(Value a,
                       Value b)

  Compare two values with the current comparison mode. The values may not be of the same type.

  Parameters:
    `a` - the first value
    `b` - the second value
  Returns:
    0 if both values are equal, -1 if the first value is smaller, and 1 otherwise

### compareTypeSave

    public int compareTypeSave(Value a,
                               Value b)

  Compare two values with the current comparison mode. The values must be of the same type.

  Parameters:
    `a` - the first value
    `b` - the second value
  Returns:
    0 if both values are equal, -1 if the first value is smaller, and 1 otherwise

### getModificationDataId

    public long getModificationDataId()

### getNextModificationDataId

    public long getNextModificationDataId()

### getModificationMetaId

    public long getModificationMetaId()

### getNextModificationMetaId

    public long getNextModificationMetaId()

### getPowerOffCount

    public int getPowerOffCount()

### checkPowerOff

    public void checkPowerOff()

  Description copied from interface: `DataHandler`
  Check if the simulated power failure occurred. This call will decrement the countdown.

  Specified by:
    `checkPowerOff` in interface `DataHandler`

### getTrace

    public Trace getTrace(java.lang.String module)

  Get the trace object for the given module.

  Parameters:
    `module` - the module name
  Returns:
    the trace object

### openFile

    public FileStore openFile(java.lang.String name,
                              java.lang.String openMode,
                              boolean mustExist)

  Description copied from interface: `DataHandler`
  Open a file at the given location.

  Specified by:
    `openFile` in interface `DataHandler`
  Parameters:
    `name` - the file name
    `openMode` - the mode
    `mustExist` - whether the file must already exist
  Returns:
    the file

### verifyMetaLocked

    public void verifyMetaLocked(Session session)

  Verify the meta table is locked.

  Parameters:
    `session` - the session

### lockMeta

    public boolean lockMeta(Session session)

  Lock the metadata table for updates.

  Parameters:
    `session` - the session
  Returns:
    whether it was already locked before by this session

### removeMeta

    public void removeMeta(Session session,
                           int id)

  Remove the given object from the meta data.

  Parameters:
    `session` - the session
    `id` - the id of the object to remove

### addSchemaObject

    public void addSchemaObject(Session session,
                                SchemaObject obj)

  Add a schema object to the database.

  Parameters:
    `session` - the session
    `obj` - the object to add

### addDatabaseObject

    public void addDatabaseObject(Session session,
                                  DbObject obj)

  Add an object to the database.

  Parameters:
    `session` - the session
    `obj` - the object to add

### findAggregate

    public UserAggregate findAggregate(java.lang.String name)

  Get the user defined aggregate function if it exists, or null if not.

  Parameters:
    `name` - the name of the user defined aggregate function
  Returns:
    the aggregate function or null

### findComment

    public Comment findComment(DbObject object)

  Get the comment for the given database object if one exists, or null if not.

  Parameters:
    `object` - the database object
  Returns:
    the comment or null

### findRole

    public Role findRole(java.lang.String roleName)

  Get the role if it exists, or null if not.

  Parameters:
    `roleName` - the name of the role
  Returns:
    the role or null

### findSchema

    public Schema findSchema(java.lang.String schemaName)

  Get the schema if it exists, or null if not.

  Parameters:
    `schemaName` - the name of the schema
  Returns:
    the schema or null

### findSetting

    public Setting findSetting(java.lang.String name)

  Get the setting if it exists, or null if not.

  Parameters:
    `name` - the name of the setting
  Returns:
    the setting or null

### findUser

    public User findUser(java.lang.String name)

  Get the user if it exists, or null if not.

  Parameters:
    `name` - the name of the user
  Returns:
    the user or null

### findUserDataType

    public UserDataType findUserDataType(java.lang.String name)

  Get the user defined data type if it exists, or null if not.

  Parameters:
    `name` - the name of the user defined data type
  Returns:
    the user defined data type or null

### getUser

    public User getUser(java.lang.String name)

  Get user with the given name. This method throws an exception if the user does not exist.

  Parameters:
    `name` - the user name
  Returns:
    the user
  Throws:
    `DbException` - if the user does not exist

### removeSession

    public void removeSession(Session session)

  Remove a session. This method is called after the user has disconnected.

  Parameters:
    `session` - the session

### allocateObjectId

    public int allocateObjectId()

  Allocate a new object id.

  Returns:
    the id

### getAllAggregates

    public java.util.ArrayList<UserAggregate> getAllAggregates()

### getAllComments

    public java.util.ArrayList<Comment> getAllComments()

### getAllowLiterals

    public int getAllowLiterals()

### getAllRights

    public java.util.ArrayList<Right> getAllRights()

### getAllRoles

    public java.util.ArrayList<Role> getAllRoles()

### getAllSchemaObjects

    public java.util.ArrayList<SchemaObject> getAllSchemaObjects()

  Get all schema objects.

  Returns:
    all objects of all types

### getAllSchemaObjects

    public java.util.ArrayList<SchemaObject> getAllSchemaObjects(int type)

  Get all schema objects of the given type.

  Parameters:
    `type` - the object type
  Returns:
    all objects of that type

### getAllTablesAndViews

    public java.util.ArrayList<Table> getAllTablesAndViews(boolean includeMeta)

  Get all tables and views.

  Parameters:
    `includeMeta` - whether to force including the meta data tables (if true, metadata tables are always included; if false, metadata tables are only included if they are already initialized)
  Returns:
    all objects of that type

### getAllSchemas

    public java.util.ArrayList<Schema> getAllSchemas()

### getAllSettings

    public java.util.ArrayList<Setting> getAllSettings()

### getAllUserDataTypes

    public java.util.ArrayList<UserDataType> getAllUserDataTypes()

### getAllUsers

    public java.util.ArrayList<User> getAllUsers()

### getCacheType

    public java.lang.String getCacheType()

### getCluster

    public java.lang.String getCluster()

### getCompareMode

    public CompareMode getCompareMode()

### getDatabasePath

    public java.lang.String getDatabasePath()

  Description copied from interface: `DataHandler`
  Get the database path.

  Specified by:
    `getDatabasePath` in interface `DataHandler`
  Returns:
    the database path

### getShortName

    public java.lang.String getShortName()

### getName

    public java.lang.String getName()

### getSessions

    public Session[] getSessions(boolean includingSystemSession)

  Get all sessions that are currently connected to the database.

  Parameters:
    `includingSystemSession` - if the system session should also be included
  Returns:
    the list of sessions

### update

    public void update(Session session,
                       DbObject obj)

  Update an object in the system table.

  Parameters:
    `session` - the session
    `obj` - the database object

### renameSchemaObject

    public void renameSchemaObject(Session session,
                                   SchemaObject obj,
                                   java.lang.String newName)

  Rename a schema object.

  Parameters:
    `session` - the session
    `obj` - the object
    `newName` - the new name

### renameDatabaseObject

    public void renameDatabaseObject(Session session,
                                     DbObject obj,
                                     java.lang.String newName)

  Rename a database object.

  Parameters:
    `session` - the session
    `obj` - the object
    `newName` - the new name

### createTempFile

    public java.lang.String createTempFile()

  Create a temporary file in the database folder.

  Returns:
    the file name

### getSchema

    public Schema getSchema(java.lang.String schemaName)

  Get the schema. If the schema does not exist, an exception is thrown.

  Parameters:
    `schemaName` - the name of the schema
  Returns:
    the schema
  Throws:
    `DbException` - no schema with that name exists

### removeDatabaseObject

    public void removeDatabaseObject(Session session,
                                     DbObject obj)

  Remove the object from the database.

  Parameters:
    `session` - the session
    `obj` - the object to remove

### getDependentTable

    public Table getDependentTable(SchemaObject obj,
                                   Table except)

  Get the first table that depends on this object.

  Parameters:
    `obj` - the object to find
    `except` - the table to exclude (or null)
  Returns:
    the first dependent table, or null

### removeSchemaObject

    public void removeSchemaObject(Session session,
                                   SchemaObject obj)

  Remove an object from the system table.

  Parameters:
    `session` - the session
    `obj` - the object to be removed

### isPersistent

    public boolean isPersistent()

  Check if this database disk-based.

  Returns:
    true if it is disk-based, false it it is in-memory only.

### getTraceSystem

    public TraceSystem getTraceSystem()

### setCacheSize

    public void setCacheSize(int kb)

### setMasterUser

    public void setMasterUser(User user)

### getPublicRole

    public Role getPublicRole()

### getTempTableName

    public java.lang.String getTempTableName(java.lang.String baseName,
                                             Session session)

  Get a unique temporary table name.

  Parameters:
    `baseName` - the prefix of the returned name
    `session` - the session
  Returns:
    a unique name

### setCompareMode

    public void setCompareMode(CompareMode compareMode)

### setCluster

    public void setCluster(java.lang.String cluster)

### checkWritingAllowed

    public void checkWritingAllowed()

  Description copied from interface: `DataHandler`
  Check if writing is allowed.

  Specified by:
    `checkWritingAllowed` in interface `DataHandler`

### isReadOnly

    public boolean isReadOnly()

### setWriteDelay

    public void setWriteDelay(int value)

### getRetentionTime

    public int getRetentionTime()

### setRetentionTime

    public void setRetentionTime(int value)

### getFlushOnEachCommit

    public boolean getFlushOnEachCommit()

  Check if flush-on-each-commit is enabled.

  Returns:
    true if it is

### getInDoubtTransactions

    public java.util.ArrayList<InDoubtTransaction> getInDoubtTransactions()

  Get the list of in-doubt transactions.

  Returns:
    the list

### setBackgroundException

    public void setBackgroundException(DbException e)

### flush

    public void flush()

  Flush all pending changes to the transaction log.

### setEventListener

    public void setEventListener(DatabaseEventListener eventListener)

### setEventListenerClass

    public void setEventListenerClass(java.lang.String className)

### setProgress

    public void setProgress(int state,
                            java.lang.String name,
                            int x,
                            int max)

  Set the progress of a long running operation. This method calls the `DatabaseEventListener` if one is registered.

  Parameters:
    `state` - the `DatabaseEventListener` state
    `name` - the object name
    `x` - the current position
    `max` - the highest value

### exceptionThrown

    public void exceptionThrown(java.sql.SQLException e,
                                java.lang.String sql)

  This method is called after an exception occurred, to inform the database event listener (if one is set).

  Parameters:
    `e` - the exception
    `sql` - the SQL statement

### sync

    public void sync()

  Synchronize the files with the file system. This method is called when executing the SQL statement CHECKPOINT SYNC.

### getMaxMemoryRows

    public int getMaxMemoryRows()

### setMaxMemoryRows

    public void setMaxMemoryRows(int value)

### setMaxMemoryUndo

    public void setMaxMemoryUndo(int value)

### getMaxMemoryUndo

    public int getMaxMemoryUndo()

### setLockMode

    public void setLockMode(int lockMode)

### getLockMode

    public int getLockMode()

### setCloseDelay

    public void setCloseDelay(int value)

### getSystemSession

    public Session getSystemSession()

### isClosing

    public boolean isClosing()

  Check if the database is in the process of closing.

  Returns:
    true if the database is closing

### setMaxLengthInplaceLob

    public void setMaxLengthInplaceLob(int value)

### getMaxLengthInplaceLob

    public int getMaxLengthInplaceLob()

  Description copied from interface: `DataHandler`
  Get the maximum length of a in-place large object

  Specified by:
    `getMaxLengthInplaceLob` in interface `DataHandler`
  Returns:
    the maximum size

### setIgnoreCase

    public void setIgnoreCase(boolean b)

### getIgnoreCase

    public boolean getIgnoreCase()

### setDeleteFilesOnDisconnect

    public void setDeleteFilesOnDisconnect(boolean b)

### getLobCompressionAlgorithm

    public java.lang.String getLobCompressionAlgorithm(int type)

  Description copied from interface: `DataHandler`
  Get the compression algorithm used for large objects.

  Specified by:
    `getLobCompressionAlgorithm` in interface `DataHandler`
  Parameters:
    `type` - the data type (CLOB or BLOB)
  Returns:
    the compression algorithm, or null

### setLobCompressionAlgorithm

    public void setLobCompressionAlgorithm(java.lang.String stringValue)

### setMaxLogSize

    public void setMaxLogSize(long value)

### setAllowLiterals

    public void setAllowLiterals(int value)

### getOptimizeReuseResults

    public boolean getOptimizeReuseResults()

### setOptimizeReuseResults

    public void setOptimizeReuseResults(boolean b)

### getLobSyncObject

    public java.lang.Object getLobSyncObject()

  Description copied from interface: `DataHandler`
  Get the synchronization object for lob operations.

  Specified by:
    `getLobSyncObject` in interface `DataHandler`
  Returns:
    the synchronization object

### getSessionCount

    public int getSessionCount()

### setReferentialIntegrity

    public void setReferentialIntegrity(boolean b)

### getReferentialIntegrity

    public boolean getReferentialIntegrity()

### setQueryStatistics

    public void setQueryStatistics(boolean b)

### getQueryStatistics

    public boolean getQueryStatistics()

### getQueryStatisticsData

    public QueryStatisticsData getQueryStatisticsData()

### isStarting

    public boolean isStarting()

  Check if the database is currently opening. This is true until all stored SQL statements have been executed.

  Returns:
    true if the database is still starting

### isMultiVersion

    public boolean isMultiVersion()

  Check if multi version concurrency is enabled for this database.

  Returns:
    true if it is enabled

### setMode

    public void setMode(Mode mode)

### getMode

    public Mode getMode()

### isMultiThreaded

    public boolean isMultiThreaded()

### setMultiThreaded

    public void setMultiThreaded(boolean multiThreaded)

### setMaxOperationMemory

    public void setMaxOperationMemory(int maxOperationMemory)

### getMaxOperationMemory

    public int getMaxOperationMemory()

### getExclusiveSession

    public Session getExclusiveSession()

### setExclusiveSession

    public void setExclusiveSession(Session session,
                                    boolean closeOthers)

  Set the session that can exclusively access the database.

  Parameters:
    `session` - the session
    `closeOthers` - whether other sessions are closed

### getLobFileListCache

    public SmallLRUCache<java.lang.String,java.lang.String[]> getLobFileListCache()

  Description copied from interface: `DataHandler`
  Get the lob file list cache if it is used.

  Specified by:
    `getLobFileListCache` in interface `DataHandler`
  Returns:
    the cache or null

### isSysTableLocked

    public boolean isSysTableLocked()

  Checks if the system table (containing the catalog) is locked.

  Returns:
    true if it is currently locked

### getLinkConnection

    public TableLinkConnection getLinkConnection(java.lang.String driver,
                                                 java.lang.String url,
                                                 java.lang.String user,
                                                 java.lang.String password)

  Open a new connection or get an existing connection to another database.

  Parameters:
    `driver` - the database driver or null
    `url` - the database URL
    `user` - the user name
    `password` - the password
  Returns:
    the connection

### toString

    public java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### shutdownImmediately

    public void shutdownImmediately()

  Immediately close the database.

### getTempFileDeleter

    public TempFileDeleter getTempFileDeleter()

  Description copied from interface: `DataHandler`
  Get the temp file deleter mechanism.

  Specified by:
    `getTempFileDeleter` in interface `DataHandler`
  Returns:
    the temp file deleter

### getPageStore

    public PageStore getPageStore()

### getFirstUserTable

    public Table getFirstUserTable()

  Get the first user defined table.

  Returns:
    the table or null if no table is defined

### isReconnectNeeded

    public boolean isReconnectNeeded()

  Check if the contents of the database was changed and therefore it is required to re-connect. This method waits until pending changes are completed. If a pending change takes too long (more than 2 seconds), the pending change is broken (removed from the properties file).

  Returns:
    true if reconnecting is required

### checkpointIfRequired

    public void checkpointIfRequired()

  Flush all changes when using the serialized mode, and if there are pending changes, and some time has passed. This switches to a new transaction log and resets the change pending flag in the .lock.db file.

### isFileLockSerialized

    public boolean isFileLockSerialized()

### checkpoint

    public void checkpoint()

  Flush all changes and open a new transaction log.

### beforeWriting

    public boolean beforeWriting()

  This method is called before writing to the transaction log.

  Returns:
    true if the call was successful and writing is allowed, false if another connection was faster

### afterWriting

    public void afterWriting()

  This method is called after updates are finished.

### setReadOnly

    public void setReadOnly(boolean readOnly)

  Switch the database to read-only mode.

  Parameters:
    `readOnly` - the new value

### setCompactMode

    public void setCompactMode(int compactMode)

### getCompiler

    public SourceCompiler getCompiler()

### getLobStorage

    public LobStorageBackend getLobStorage()

  Description copied from interface: `DataHandler`
  Get the lob storage mechanism to use.

  Specified by:
    `getLobStorage` in interface `DataHandler`
  Returns:
    the lob storage mechanism

### getLobConnectionForInit

    public JdbcConnection getLobConnectionForInit()

### getLobConnectionForRegularUse

    public JdbcConnection getLobConnectionForRegularUse()

### getLobSession

    public Session getLobSession()

### setLogMode

    public void setLogMode(int log)

### getLogMode

    public int getLogMode()

### getDefaultTableType

    public int getDefaultTableType()

### setDefaultTableType

    public void setDefaultTableType(int defaultTableType)

### setMultiVersion

    public void setMultiVersion(boolean multiVersion)

### getSettings

    public DbSettings getSettings()

### newStringMap

    public <V> java.util.HashMap<java.lang.String,V> newStringMap()

  Create a new hash map. Depending on the configuration, the key is case sensitive or case insensitive.

  Type Parameters:
    `V` - the value type
  Returns:
    the hash map

### equalsIdentifiers

    public boolean equalsIdentifiers(java.lang.String a,
                                     java.lang.String b)

  Compare two identifiers (table names, column names,...) and verify they are equal. Case sensitivity depends on the configuration.

  Parameters:
    `a` - the first identifier
    `b` - the second identifier
  Returns:
    true if they match

### readLob

    public int readLob(long lobId,
                       byte[] hmac,
                       long offset,
                       byte[] buff,
                       int off,
                       int length)

  Description copied from interface: `DataHandler`
  Read from a lob.

  Specified by:
    `readLob` in interface `DataHandler`
  Parameters:
    `lobId` - the lob
    `hmac` - the message authentication code
    `offset` - the offset within the lob
    `buff` - the target buffer
    `off` - the offset within the target buffer
    `length` - the number of bytes to read
  Returns:
    the number of bytes read

### getFileEncryptionKey

    public byte[] getFileEncryptionKey()

### getJavaObjectSerializer

    public JavaObjectSerializer getJavaObjectSerializer()

  Description copied from interface: `DataHandler`
  Return the serializer to be used for java objects being stored in column of type OTHER.

  Specified by:
    `getJavaObjectSerializer` in interface `DataHandler`
  Returns:
    the serializer to be used for java objects being stored in column of type OTHER

### setJavaObjectSerializerName

    public void setJavaObjectSerializerName(java.lang.String serializerName)