Package org.h2.engine

Class Database

  • All Implemented Interfaces:
    CastDataProvider, org.h2.store.DataHandler

    public final class Database
    extends java.lang.Object
    implements org.h2.store.DataHandler, CastDataProvider
    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 Detail

      • Database

        public Database​(ConnectionInfo ci,
                        java.lang.String cipher)
    • Method Detail

      • getLockTimeout

        public int getLockTimeout()
      • getRowFactory

        public org.h2.result.RowFactory getRowFactory()
      • setRowFactory

        public void setRowFactory​(org.h2.result.RowFactory rowFactory)
      • setInitialPowerOffCount

        public static void setInitialPowerOffCount​(int count)
      • setPowerOffCount

        public void setPowerOffCount​(int count)
      • getStore

        public org.h2.mvstore.db.Store getStore()
      • getModificationDataId

        public long getModificationDataId()
      • getNextModificationDataId

        public long getNextModificationDataId()
      • getModificationMetaId

        public long getModificationMetaId()
      • getNextModificationMetaId

        public long getNextModificationMetaId()
      • getRemoteSettingsId

        public long getRemoteSettingsId()
      • getNextRemoteSettingsId

        public long getNextRemoteSettingsId()
      • getPowerOffCount

        public int getPowerOffCount()
      • checkPowerOff

        public void checkPowerOff()
        Description copied from interface: org.h2.store.DataHandler
        Check if the simulated power failure occurred. This call will decrement the countdown.
        Specified by:
        checkPowerOff in interface org.h2.store.DataHandler
      • getTrace

        public org.h2.message.Trace getTrace​(int moduleId)
        Get the trace object for the given module id.
        Parameters:
        moduleId - the module id
        Returns:
        the trace object
      • openFile

        public org.h2.store.FileStore openFile​(java.lang.String name,
                                               java.lang.String openMode,
                                               boolean mustExist)
        Description copied from interface: org.h2.store.DataHandler
        Open a file at the given location.
        Specified by:
        openFile in interface org.h2.store.DataHandler
        Parameters:
        name - the file name
        openMode - the mode
        mustExist - whether the file must already exist
        Returns:
        the file
      • verifyMetaLocked

        public void verifyMetaLocked​(SessionLocal session)
        Verify the meta table is locked.
        Parameters:
        session - the session
      • lockMeta

        public boolean lockMeta​(SessionLocal session)
        Lock the metadata table for updates.
        Parameters:
        session - the session
        Returns:
        whether it was already locked before by this session
      • unlockMeta

        public void unlockMeta​(SessionLocal session)
        Unlock the metadata table.
        Parameters:
        session - the session
      • removeMeta

        public void removeMeta​(SessionLocal session,
                               int id)
        Remove the given object from the meta data.
        Parameters:
        session - the session
        id - the id of the object to remove
      • releaseDatabaseObjectIds

        public void releaseDatabaseObjectIds​(java.util.BitSet idsToRelease)
        Mark some database ids as unused.
        Parameters:
        idsToRelease - the ids to release
      • addSchemaObject

        public void addSchemaObject​(SessionLocal session,
                                    org.h2.schema.SchemaObject obj)
        Add a schema object to the database.
        Parameters:
        session - the session
        obj - the object to add
      • addDatabaseObject

        public void addDatabaseObject​(SessionLocal session,
                                      DbObject obj)
        Add an object to the database.
        Parameters:
        session - the session
        obj - the object to add
      • 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 org.h2.schema.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
      • 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:
        org.h2.message.DbException - if the user does not exist
      • findUserOrRole

        public RightOwner findUserOrRole​(java.lang.String name)
        Get the user or role if it exists, or null if not.
        Parameters:
        name - the name of the user or role
        Returns:
        the user, the role, or null
      • removeSession

        public void removeSession​(SessionLocal 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
      • getSystemUser

        public User getSystemUser()
        Returns system user.
        Returns:
        system user
      • getMainSchema

        public org.h2.schema.Schema getMainSchema()
        Returns main schema (usually PUBLIC).
        Returns:
        main schema (usually PUBLIC)
      • getAllComments

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

        public int getAllowLiterals()
      • getAllRights

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

        public java.util.ArrayList<org.h2.table.Table> getAllTablesAndViews()
        Get all tables and views. Meta data tables may be excluded.
        Returns:
        all objects of that type
      • getAllSynonyms

        public java.util.ArrayList<org.h2.table.TableSynonym> getAllSynonyms()
        Get all synonyms.
        Returns:
        all objects of that type
      • getAllSchemas

        public java.util.Collection<org.h2.schema.Schema> getAllSchemas()
      • getAllSchemasNoMeta

        public java.util.Collection<org.h2.schema.Schema> getAllSchemasNoMeta()
      • getAllSettings

        public java.util.Collection<Setting> getAllSettings()
      • getAllUsersAndRoles

        public java.util.Collection<RightOwner> getAllUsersAndRoles()
      • getCacheType

        public java.lang.String getCacheType()
      • getCluster

        public java.lang.String getCluster()
      • getCompareMode

        public org.h2.value.CompareMode getCompareMode()
        Description copied from interface: org.h2.store.DataHandler
        Return compare mode.
        Specified by:
        getCompareMode in interface org.h2.store.DataHandler
        Returns:
        Compare mode.
      • getDatabasePath

        public java.lang.String getDatabasePath()
        Description copied from interface: org.h2.store.DataHandler
        Get the database path.
        Specified by:
        getDatabasePath in interface org.h2.store.DataHandler
        Returns:
        the database path
      • getShortName

        public java.lang.String getShortName()
      • getName

        public java.lang.String getName()
      • getSessions

        public SessionLocal[] 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
      • updateMeta

        public void updateMeta​(SessionLocal session,
                               DbObject obj)
        Update an object in the system table.
        Parameters:
        session - the session
        obj - the database object
      • renameSchemaObject

        public void renameSchemaObject​(SessionLocal session,
                                       org.h2.schema.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​(SessionLocal session,
                                         DbObject obj,
                                         java.lang.String newName)
        Rename a database object.
        Parameters:
        session - the session
        obj - the object
        newName - the new name
      • getSchema

        public org.h2.schema.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:
        org.h2.message.DbException - no schema with that name exists
      • removeDatabaseObject

        public void removeDatabaseObject​(SessionLocal session,
                                         DbObject obj)
        Remove the object from the database.
        Parameters:
        session - the session
        obj - the object to remove
      • getDependentTable

        public org.h2.table.Table getDependentTable​(org.h2.schema.SchemaObject obj,
                                                    org.h2.table.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​(SessionLocal session,
                                       org.h2.schema.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 is disk-based.
        Returns:
        true if it is disk-based, false if it is in-memory only.
      • getTraceSystem

        public org.h2.message.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,
                                                 SessionLocal 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​(org.h2.value.CompareMode compareMode)
      • setCluster

        public void setCluster​(java.lang.String cluster)
      • checkWritingAllowed

        public void checkWritingAllowed()
        Description copied from interface: org.h2.store.DataHandler
        Check if writing is allowed.
        Specified by:
        checkWritingAllowed in interface org.h2.store.DataHandler
      • isReadOnly

        public boolean isReadOnly()
      • setWriteDelay

        public void setWriteDelay​(int value)
      • getRetentionTime

        public int getRetentionTime()
      • setRetentionTime

        public void setRetentionTime​(int value)
      • setAllowBuiltinAliasOverride

        public void setAllowBuiltinAliasOverride​(boolean b)
      • isAllowBuiltinAliasOverride

        public boolean isAllowBuiltinAliasOverride()
      • getInDoubtTransactions

        public java.util.ArrayList<org.h2.store.InDoubtTransaction> getInDoubtTransactions()
        Get the list of in-doubt transactions.
        Returns:
        the list
      • setBackgroundException

        public void setBackgroundException​(org.h2.message.DbException e)
      • getBackgroundException

        public java.lang.Throwable getBackgroundException()
      • flush

        public void flush()
        Flush all pending changes to the transaction log.
      • setEventListenerClass

        public void setEventListenerClass​(java.lang.String className)
      • setProgress

        public void setProgress​(int state,
                                java.lang.String name,
                                long x,
                                long 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 or 0 if unknown
      • 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)
      • setLockMode

        public void setLockMode​(int lockMode)
      • getLockMode

        public int getLockMode()
      • setCloseDelay

        public void setCloseDelay​(int value)
      • 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: org.h2.store.DataHandler
        Get the maximum length of a in-place large object
        Specified by:
        getMaxLengthInplaceLob in interface org.h2.store.DataHandler
        Returns:
        the maximum size
      • setIgnoreCase

        public void setIgnoreCase​(boolean b)
      • getIgnoreCase

        public boolean getIgnoreCase()
      • setIgnoreCatalogs

        public void setIgnoreCatalogs​(boolean b)
      • getIgnoreCatalogs

        public boolean getIgnoreCatalogs()
      • setDeleteFilesOnDisconnect

        public void setDeleteFilesOnDisconnect​(boolean b)
      • 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: org.h2.store.DataHandler
        Get the synchronization object for lob operations.
        Specified by:
        getLobSyncObject in interface org.h2.store.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()
      • setQueryStatisticsMaxEntries

        public void setQueryStatisticsMaxEntries​(int n)
      • 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
      • setMode

        public void setMode​(Mode mode)
      • setDefaultNullOrdering

        public void setDefaultNullOrdering​(org.h2.mode.DefaultNullOrdering defaultNullOrdering)
      • getDefaultNullOrdering

        public org.h2.mode.DefaultNullOrdering getDefaultNullOrdering()
      • setMaxOperationMemory

        public void setMaxOperationMemory​(int maxOperationMemory)
      • getMaxOperationMemory

        public int getMaxOperationMemory()
      • getExclusiveSession

        public SessionLocal getExclusiveSession()
      • setExclusiveSession

        public boolean setExclusiveSession​(SessionLocal session,
                                           boolean closeOthers)
        Set the session that can exclusively access the database.
        Parameters:
        session - the session
        closeOthers - whether other sessions are closed
        Returns:
        true if success or if database is in exclusive mode set by this session already, false otherwise
      • unsetExclusiveSession

        public boolean unsetExclusiveSession​(SessionLocal session)
        Stop exclusive access the database by provided session.
        Parameters:
        session - the session
        Returns:
        true if success or if database is in non-exclusive mode already, false otherwise
      • getLobFileListCache

        public org.h2.util.SmallLRUCache<java.lang.String,​java.lang.String[]> getLobFileListCache()
        Description copied from interface: org.h2.store.DataHandler
        Get the lob file list cache if it is used.
        Specified by:
        getLobFileListCache in interface org.h2.store.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
      • isSysTableLockedBy

        public boolean isSysTableLockedBy​(SessionLocal session)
        Checks if the system table (containing the catalog) is locked by the given session.
        Parameters:
        session - the session
        Returns:
        true if it is currently locked
      • getLinkConnection

        public org.h2.table.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 org.h2.util.TempFileDeleter getTempFileDeleter()
        Description copied from interface: org.h2.store.DataHandler
        Get the temp file deleter mechanism.
        Specified by:
        getTempFileDeleter in interface org.h2.store.DataHandler
        Returns:
        the temp file deleter
      • getFirstUserTable

        public org.h2.table.Table getFirstUserTable()
        Get the first user defined table, excluding the LOB_BLOCKS table that the Recover tool creates.
        Returns:
        the table or null if no table is defined
      • checkpoint

        public void checkpoint()
        Flush all changes and open a new transaction log.
      • 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 org.h2.util.SourceCompiler getCompiler()
      • getLobStorage

        public org.h2.store.LobStorageInterface getLobStorage()
        Description copied from interface: org.h2.store.DataHandler
        Get the lob storage mechanism to use.
        Specified by:
        getLobStorage in interface org.h2.store.DataHandler
        Returns:
        the lob storage mechanism
      • getDefaultTableType

        public int getDefaultTableType()
      • setDefaultTableType

        public void setDefaultTableType​(int defaultTableType)
      • 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
      • newStringMap

        public <V> java.util.HashMap<java.lang.String,​V> newStringMap​(int initialCapacity)
        Create a new hash map. Depending on the configuration, the key is case sensitive or case insensitive.
        Type Parameters:
        V - the value type
        Parameters:
        initialCapacity - the initial capacity
        Returns:
        the hash map
      • newConcurrentStringMap

        public <V> java.util.concurrent.ConcurrentHashMap<java.lang.String,​V> newConcurrentStringMap()
        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
      • sysIdentifier

        public java.lang.String sysIdentifier​(java.lang.String upperName)
        Returns identifier in upper or lower case depending on database settings.
        Parameters:
        upperName - identifier in the upper case
        Returns:
        identifier in upper or lower case
      • readLob

        public int readLob​(long lobId,
                           byte[] hmac,
                           long offset,
                           byte[] buff,
                           int off,
                           int length)
        Description copied from interface: org.h2.store.DataHandler
        Read from a lob.
        Specified by:
        readLob in interface org.h2.store.DataHandler
        Parameters:
        lobId - the lob id
        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()
      • getPageSize

        public int getPageSize()
      • setJavaObjectSerializerName

        public void setJavaObjectSerializerName​(java.lang.String serializerName)
      • getTableEngine

        public TableEngine getTableEngine​(java.lang.String tableEngine)
        Get the table engine class, loading it if needed.
        Parameters:
        tableEngine - the table engine name
        Returns:
        the class
      • getAuthenticator

        public org.h2.security.auth.Authenticator getAuthenticator()
        get authenticator for database users
        Returns:
        authenticator set for database
      • setAuthenticator

        public void setAuthenticator​(org.h2.security.auth.Authenticator authenticator)
        Set current database authenticator
        Parameters:
        authenticator - = authenticator to set, null to revert to the Internal authenticator
      • currentTimestamp

        public org.h2.value.ValueTimestampTimeZone currentTimestamp()
        Description copied from interface: CastDataProvider
        Returns the current timestamp with maximum resolution. The value must be the same within a transaction or within execution of a command.
        Specified by:
        currentTimestamp in interface CastDataProvider
        Returns:
        the current timestamp for CURRENT_TIMESTAMP(9)
      • currentTimeZone

        public org.h2.util.TimeZoneProvider currentTimeZone()
        Description copied from interface: CastDataProvider
        Returns the current time zone.
        Specified by:
        currentTimeZone in interface CastDataProvider
        Returns:
        the current time zone
      • zeroBasedEnums

        public boolean zeroBasedEnums()
        Description copied from interface: CastDataProvider
        Returns are ENUM values 0-based.
        Specified by:
        zeroBasedEnums in interface CastDataProvider
        Returns:
        are ENUM values 0-based