Package org.h2.engine

Class SessionLocal

  • All Implemented Interfaces:
    java.lang.AutoCloseable, CastDataProvider, org.h2.mvstore.tx.TransactionStore.RollbackListener

    public final class SessionLocal
    extends Session
    implements org.h2.mvstore.tx.TransactionStore.RollbackListener
    A session represents an embedded database connection. When using the server mode, this object resides on the server side and communicates with a SessionRemote object on the client side.
    • Constructor Detail

      • SessionLocal

        public SessionLocal​(Database database,
                            User user,
                            int id)
    • Method Detail

      • setLazyQueryExecution

        public void setLazyQueryExecution​(boolean lazyQueryExecution)
      • isLazyQueryExecution

        public boolean isLazyQueryExecution()
      • setParsingCreateView

        public void setParsingCreateView​(boolean parsingView)
        This method is called before and after parsing of view definition and may be called recursively.
        Parameters:
        parsingView - true if this method is called before parsing of view definition, false if it is called after it.
      • isParsingCreateView

        public boolean isParsingCreateView()
      • getClusterServers

        public java.util.ArrayList<java.lang.String> getClusterServers()
        Description copied from class: Session
        Get the list of the cluster servers for this session.
        Specified by:
        getClusterServers in class Session
        Returns:
        A list of "ip:port" strings for the cluster servers in this session.
      • setCommitOrRollbackDisabled

        public boolean setCommitOrRollbackDisabled​(boolean x)
      • setVariable

        public void setVariable​(java.lang.String name,
                                org.h2.value.Value value)
        Set the value of the given variable for this session.
        Parameters:
        name - the name of the variable (may not be null)
        value - the new value (may not be null)
      • getVariable

        public org.h2.value.Value getVariable​(java.lang.String name)
        Get the value of the specified user defined variable. This method always returns a value; it returns ValueNull.INSTANCE if the variable doesn't exist.
        Parameters:
        name - the variable name
        Returns:
        the value, or NULL
      • getVariableNames

        public java.lang.String[] getVariableNames()
        Get the list of variable names that are set for this session.
        Returns:
        the list of names
      • findLocalTempTable

        public org.h2.table.Table findLocalTempTable​(java.lang.String name)
        Get the local temporary table if one exists with that name, or null if not.
        Parameters:
        name - the table name
        Returns:
        the table, or null
      • getLocalTempTables

        public java.util.List<org.h2.table.Table> getLocalTempTables()
      • addLocalTempTable

        public void addLocalTempTable​(org.h2.table.Table table)
        Add a local temporary table to this session.
        Parameters:
        table - the table to add
        Throws:
        org.h2.message.DbException - if a table with this name already exists
      • removeLocalTempTable

        public void removeLocalTempTable​(org.h2.table.Table table)
        Drop and remove the given local temporary table from this session.
        Parameters:
        table - the table
      • findLocalTempTableIndex

        public org.h2.index.Index findLocalTempTableIndex​(java.lang.String name)
        Get the local temporary index if one exists with that name, or null if not.
        Parameters:
        name - the table name
        Returns:
        the table, or null
      • getLocalTempTableIndexes

        public java.util.HashMap<java.lang.String,​org.h2.index.Index> getLocalTempTableIndexes()
      • addLocalTempTableIndex

        public void addLocalTempTableIndex​(org.h2.index.Index index)
        Add a local temporary index to this session.
        Parameters:
        index - the index to add
        Throws:
        org.h2.message.DbException - if a index with this name already exists
      • removeLocalTempTableIndex

        public void removeLocalTempTableIndex​(org.h2.index.Index index)
        Drop and remove the given local temporary index from this session.
        Parameters:
        index - the index
      • findLocalTempTableConstraint

        public org.h2.constraint.Constraint findLocalTempTableConstraint​(java.lang.String name)
        Get the local temporary constraint if one exists with that name, or null if not.
        Parameters:
        name - the constraint name
        Returns:
        the constraint, or null
      • getLocalTempTableConstraints

        public java.util.HashMap<java.lang.String,​org.h2.constraint.Constraint> getLocalTempTableConstraints()
        Get the map of constraints for all constraints on local, temporary tables, if any. The map's keys are the constraints' names.
        Returns:
        the map of constraints, or null
      • addLocalTempTableConstraint

        public void addLocalTempTableConstraint​(org.h2.constraint.Constraint constraint)
        Add a local temporary constraint to this session.
        Parameters:
        constraint - the constraint to add
        Throws:
        org.h2.message.DbException - if a constraint with the same name already exists
      • getAutoCommit

        public boolean getAutoCommit()
        Description copied from class: Session
        Check if this session is in auto-commit mode.
        Specified by:
        getAutoCommit in class Session
        Returns:
        true if the session is in auto-commit mode
      • getUser

        public User getUser()
      • setAutoCommit

        public void setAutoCommit​(boolean b)
        Description copied from class: Session
        Set the auto-commit mode. This call doesn't commit the current transaction.
        Specified by:
        setAutoCommit in class Session
        Parameters:
        b - the new value
      • getLockTimeout

        public int getLockTimeout()
      • setLockTimeout

        public void setLockTimeout​(int lockTimeout)
      • prepareCommand

        public org.h2.command.CommandInterface prepareCommand​(java.lang.String sql,
                                                              int fetchSize)
        Description copied from class: Session
        Parse a command and prepare it for execution.
        Specified by:
        prepareCommand in class Session
        Parameters:
        sql - the SQL statement
        fetchSize - the number of rows to fetch in one step
        Returns:
        the prepared command
      • prepare

        public org.h2.command.Prepared prepare​(java.lang.String sql)
        Parse and prepare the given SQL statement. This method also checks the rights.
        Parameters:
        sql - the SQL statement
        Returns:
        the prepared statement
      • prepare

        public org.h2.command.Prepared prepare​(java.lang.String sql,
                                               boolean rightsChecked,
                                               boolean literalsChecked)
        Parse and prepare the given SQL statement.
        Parameters:
        sql - the SQL statement
        rightsChecked - true if the rights have already been checked
        literalsChecked - true if the sql string has already been checked for literals (only used if ALLOW_LITERALS NONE is set).
        Returns:
        the prepared statement
      • prepareLocal

        public org.h2.command.Command prepareLocal​(java.lang.String sql)
        Parse and prepare the given SQL statement. This method also checks if the connection has been closed.
        Parameters:
        sql - the SQL statement
        Returns:
        the prepared statement
      • scheduleDatabaseObjectIdForRelease

        protected void scheduleDatabaseObjectIdForRelease​(int id)
        Arranges for the specified database object id to be released at the end of the current transaction.
        Parameters:
        id - to be scheduled
      • getDatabase

        public Database getDatabase()
      • commit

        public void commit​(boolean ddl)
        Commit the current transaction. If the statement was not a data definition statement, and if there are temporary tables that should be dropped or truncated at commit, this is done as well.
        Parameters:
        ddl - if the statement was a data definition statement
      • getSnapshotDataModificationId

        public long getSnapshotDataModificationId()
        Returns the data modification id of transaction's snapshot, or 0 if isolation level doesn't use snapshots.
        Returns:
        the data modification id of transaction's snapshot, or 0
      • rollback

        public void rollback()
        Fully roll back the current transaction.
      • rollbackTo

        public void rollbackTo​(SessionLocal.Savepoint savepoint)
        Partially roll back the current transaction.
        Parameters:
        savepoint - the savepoint to which should be rolled back
      • hasPendingTransaction

        public boolean hasPendingTransaction()
        Description copied from class: Session
        Check whether this session has a pending transaction.
        Specified by:
        hasPendingTransaction in class Session
        Returns:
        true if it has
      • setSavepoint

        public SessionLocal.Savepoint setSavepoint()
        Create a savepoint to allow rolling back to this state.
        Returns:
        the savepoint
      • getId

        public int getId()
      • cancel

        public void cancel()
        Description copied from class: Session
        Cancel the current or next command (called when closing a connection).
        Specified by:
        cancel in class Session
      • close

        public void close()
        Description copied from class: Session
        Roll back pending transactions and close the session.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in class Session
      • registerTableAsLocked

        public void registerTableAsLocked​(org.h2.table.Table table)
        Register table as locked within current transaction. Table is unlocked on commit or rollback. It also assumes that table will be modified by transaction.
        Parameters:
        table - the table that is locked
      • registerTableAsUpdated

        public void registerTableAsUpdated​(org.h2.table.Table table)
        Register table as updated within current transaction. This is used instead of table locking when lock mode is LOCK_MODE_OFF.
        Parameters:
        table - to register
      • getRandom

        public java.util.Random getRandom()
      • getTrace

        public org.h2.message.Trace getTrace()
        Description copied from class: Session
        Get the trace object
        Specified by:
        getTrace in class Session
        Returns:
        the trace object
      • getNextValueFor

        public org.h2.value.Value getNextValueFor​(org.h2.schema.Sequence sequence,
                                                  org.h2.command.Prepared prepared)
        Returns the next value of the sequence in this session.
        Parameters:
        sequence - the sequence
        prepared - current prepared command, select, or null
        Returns:
        the next value of the sequence in this session
      • getCurrentValueFor

        public org.h2.value.Value getCurrentValueFor​(org.h2.schema.Sequence sequence)
        Returns the current value of the sequence in this session.
        Parameters:
        sequence - the sequence
        Returns:
        the current value of the sequence in this session
        Throws:
        org.h2.message.DbException - if current value is not defined
      • setLastIdentity

        public void setLastIdentity​(org.h2.value.Value last)
      • getLastIdentity

        public org.h2.value.Value getLastIdentity()
      • containsUncommitted

        public boolean containsUncommitted()
        Whether the session contains any uncommitted changes.
        Returns:
        true if yes
      • addSavepoint

        public void addSavepoint​(java.lang.String name)
        Create a savepoint that is linked to the current log position.
        Parameters:
        name - the savepoint name
      • rollbackToSavepoint

        public void rollbackToSavepoint​(java.lang.String name)
        Undo all operations back to the log position of the given savepoint.
        Parameters:
        name - the savepoint name
      • prepareCommit

        public void prepareCommit​(java.lang.String transactionName)
        Prepare the given transaction.
        Parameters:
        transactionName - the name of the transaction
      • hasPreparedTransaction

        public boolean hasPreparedTransaction()
        Checks presence of prepared transaction in this session.
        Returns:
        true if there is a prepared transaction, false otherwise
      • setPreparedTransaction

        public void setPreparedTransaction​(java.lang.String transactionName,
                                           boolean commit)
        Commit or roll back the given transaction.
        Parameters:
        transactionName - the name of the transaction
        commit - true for commit, false for rollback
      • isClosed

        public boolean isClosed()
        Description copied from class: Session
        Check if close was called.
        Specified by:
        isClosed in class Session
        Returns:
        if the session has been closed
      • isOpen

        public boolean isOpen()
      • setThrottle

        public void setThrottle​(int throttle)
      • throttle

        public void throttle()
        Wait for some time if this session is throttled (slowed down).
      • checkCanceled

        public void checkCanceled()
        Check if the current transaction is canceled by calling Statement.cancel() or because a session timeout was set and expired.
        Throws:
        org.h2.message.DbException - if the transaction is canceled
      • getCancel

        public long getCancel()
        Get the cancel time.
        Returns:
        the time or 0 if not set
      • getCurrentCommand

        public org.h2.command.Command getCurrentCommand()
      • getCommandStartOrEnd

        public org.h2.value.ValueTimestampTimeZone getCommandStartOrEnd()
      • getAllowLiterals

        public boolean getAllowLiterals()
      • setAllowLiterals

        public void setAllowLiterals​(boolean b)
      • setCurrentSchema

        public void setCurrentSchema​(org.h2.schema.Schema schema)
      • getCurrentSchemaName

        public java.lang.String getCurrentSchemaName()
        Description copied from class: Session
        Get current schema.
        Specified by:
        getCurrentSchemaName in class Session
        Returns:
        the current schema name
      • setCurrentSchemaName

        public void setCurrentSchemaName​(java.lang.String schemaName)
        Description copied from class: Session
        Set current schema.
        Specified by:
        setCurrentSchemaName in class Session
        Parameters:
        schemaName - the schema name
      • createConnection

        public JdbcConnection createConnection​(boolean columnList)
        Create an internal connection. This connection is used when initializing triggers, and when calling user defined functions.
        Parameters:
        columnList - if the url should be 'jdbc:columnlist:connection'
        Returns:
        the internal connection
      • getDataHandler

        public org.h2.store.DataHandler getDataHandler()
        Description copied from class: Session
        Get the data handler object.
        Specified by:
        getDataHandler in class Session
        Returns:
        the data handler
      • removeAtCommit

        public void removeAtCommit​(org.h2.value.ValueLob v)
        Remember that the given LOB value must be removed at commit.
        Parameters:
        v - the value
      • removeAtCommitStop

        public void removeAtCommitStop​(org.h2.value.ValueLob v)
        Do not remove this LOB value at commit any longer.
        Parameters:
        v - the value
      • getNextSystemIdentifier

        public java.lang.String getNextSystemIdentifier​(java.lang.String sql)
        Get the next system generated identifiers. The identifier returned does not occur within the given SQL statement.
        Parameters:
        sql - the SQL statement
        Returns:
        the new identifier
      • addProcedure

        public void addProcedure​(Procedure procedure)
        Add a procedure to this session.
        Parameters:
        procedure - the procedure to add
      • removeProcedure

        public void removeProcedure​(java.lang.String name)
        Remove a procedure from this session.
        Parameters:
        name - the name of the procedure to remove
      • getProcedure

        public Procedure getProcedure​(java.lang.String name)
        Get the procedure with the given name, or null if none exists.
        Parameters:
        name - the procedure name
        Returns:
        the procedure or null
      • setSchemaSearchPath

        public void setSchemaSearchPath​(java.lang.String[] schemas)
      • getSchemaSearchPath

        public java.lang.String[] getSchemaSearchPath()
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • begin

        public void begin()
        Begin a transaction.
      • getSessionStart

        public org.h2.value.ValueTimestampTimeZone getSessionStart()
      • getLocks

        public java.util.Set<org.h2.table.Table> getLocks()
      • waitIfExclusiveModeEnabled

        public void waitIfExclusiveModeEnabled()
        Wait if the exclusive mode has been enabled for another session. This method returns as soon as the exclusive mode has been disabled.
      • getViewIndexCache

        public java.util.Map<java.lang.Object,​org.h2.index.ViewIndex> getViewIndexCache​(boolean subQuery)
        Get the view cache for this session. There are two caches: the subquery cache (which is only use for a single query, has no bounds, and is cleared after use), and the cache for regular views.
        Parameters:
        subQuery - true to get the subquery cache
        Returns:
        the view cache
      • setQueryTimeout

        public void setQueryTimeout​(int queryTimeout)
      • getQueryTimeout

        public int getQueryTimeout()
      • setWaitForLock

        public void setWaitForLock​(org.h2.table.Table waitForLock,
                                   java.lang.Thread waitForLockThread)
        Set the table this session is waiting for, and the thread that is waiting.
        Parameters:
        waitForLock - the table
        waitForLockThread - the current thread (the one that is waiting)
      • getWaitForLock

        public org.h2.table.Table getWaitForLock()
      • getWaitForLockThread

        public java.lang.Thread getWaitForLockThread()
      • getModificationId

        public int getModificationId()
      • getTransactionId

        public org.h2.value.Value getTransactionId()
      • nextObjectId

        public int nextObjectId()
        Get the next object id.
        Returns:
        the next object id
      • getTransaction

        public org.h2.mvstore.tx.Transaction getTransaction()
        Get the transaction to use for this session.
        Returns:
        the transaction
      • startStatementWithinTransaction

        public void startStatementWithinTransaction​(org.h2.command.Command command)
        Start a new statement within a transaction.
        Parameters:
        command - about to be started
      • endStatement

        public void endStatement()
        Mark the statement as completed. This also close all temporary result set, and deletes all temporary files held by the result sets.
      • clearViewIndexCache

        public void clearViewIndexCache()
        Clear the view cache for this session.
      • addTemporaryLob

        public org.h2.value.ValueLob addTemporaryLob​(org.h2.value.ValueLob v)
        Description copied from class: Session
        Add a temporary LOB, which is closed when the session commits.
        Specified by:
        addTemporaryLob in class Session
        Parameters:
        v - the value
        Returns:
        the specified value
      • isRemote

        public boolean isRemote()
        Description copied from class: Session
        Check if this session is remote or embedded.
        Specified by:
        isRemote in class Session
        Returns:
        true if this session is remote
      • markTableForAnalyze

        public void markTableForAnalyze​(org.h2.table.Table table)
        Mark that the given table needs to be analyzed on commit.
        Parameters:
        table - the table
      • getBlockingSessionId

        public int getBlockingSessionId()
      • onRollback

        public void onRollback​(org.h2.mvstore.MVMap<java.lang.Object,​org.h2.value.VersionedValue<java.lang.Object>> map,
                               java.lang.Object key,
                               org.h2.value.VersionedValue<java.lang.Object> existingValue,
                               org.h2.value.VersionedValue<java.lang.Object> restoredValue)
        Description copied from interface: org.h2.mvstore.tx.TransactionStore.RollbackListener
        Notified of a single map change (add/update/remove)
        Specified by:
        onRollback in interface org.h2.mvstore.tx.TransactionStore.RollbackListener
        Parameters:
        map - modified
        key - of the modified entry
        existingValue - value in the map (null if delete is rolled back)
        restoredValue - value to be restored (null if add is rolled back)
      • getNetworkConnectionInfo

        public org.h2.util.NetworkConnectionInfo getNetworkConnectionInfo()
        Returns the network connection information, or null.
        Returns:
        the network connection information, or null
      • setNetworkConnectionInfo

        public void setNetworkConnectionInfo​(org.h2.util.NetworkConnectionInfo networkConnectionInfo)
        Description copied from class: Session
        Sets the network connection information if possible.
        Specified by:
        setNetworkConnectionInfo in class Session
        Parameters:
        networkConnectionInfo - the network connection information
      • 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)
      • setIsolationLevel

        public void setIsolationLevel​(IsolationLevel isolationLevel)
        Description copied from class: Session
        Sets the isolation level.
        Specified by:
        setIsolationLevel in class Session
        Parameters:
        isolationLevel - the isolation level to set
      • getNonKeywords

        public java.util.BitSet getNonKeywords()
        Gets bit set of non-keywords.
        Returns:
        set of non-keywords, or null
      • setNonKeywords

        public void setNonKeywords​(java.util.BitSet nonKeywords)
        Sets bit set of non-keywords.
        Parameters:
        nonKeywords - set of non-keywords, or null
      • getStaticSettings

        public Session.StaticSettings getStaticSettings()
        Description copied from class: Session
        Returns static settings. These settings cannot be changed during lifecycle of session.
        Specified by:
        getStaticSettings in class Session
        Returns:
        static settings
      • getDynamicSettings

        public Session.DynamicSettings getDynamicSettings()
        Description copied from class: Session
        Returns dynamic settings. These settings can be changed during lifecycle of session.
        Specified by:
        getDynamicSettings in class Session
        Returns:
        dynamic settings
      • 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
      • setTimeZone

        public void setTimeZone​(org.h2.util.TimeZoneProvider timeZone)
        Sets current time zone.
        Parameters:
        timeZone - time zone
      • areEqual

        public boolean areEqual​(org.h2.value.Value a,
                                org.h2.value.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​(org.h2.value.Value a,
                           org.h2.value.Value b)
        Compare two values with the current comparison mode. The values may have different data types including NULL.
        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
      • compareWithNull

        public int compareWithNull​(org.h2.value.Value a,
                                   org.h2.value.Value b,
                                   boolean forEquality)
        Compare two values with the current comparison mode. The values may have different data types including NULL.
        Parameters:
        a - the first value
        b - the second value
        forEquality - perform only check for equality (= or <>)
        Returns:
        0 if both values are equal, -1 if the first value is smaller, 1 if the second value is larger, Integer.MIN_VALUE if order is not defined due to NULL comparison
      • compareTypeSafe

        public int compareTypeSafe​(org.h2.value.Value a,
                                   org.h2.value.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
      • setTruncateLargeLength

        public void setTruncateLargeLength​(boolean truncateLargeLength)
        Changes parsing mode of data types with too large length.
        Parameters:
        truncateLargeLength - true to truncate to valid bound, false to throw an exception
      • isTruncateLargeLength

        public boolean isTruncateLargeLength()
        Returns parsing mode of data types with too large length.
        Returns:
        true if large length is truncated, false if an exception is thrown
      • setVariableBinary

        public void setVariableBinary​(boolean variableBinary)
        Changes parsing of a BINARY data type.
        Parameters:
        variableBinary - true to parse BINARY as VARBINARY, false to parse it as is
      • isVariableBinary

        public boolean isVariableBinary()
        Returns BINARY data type parsing mode.
        Returns:
        true if BINARY should be parsed as VARBINARY, false if it should be parsed as is
      • setOldInformationSchema

        public void setOldInformationSchema​(boolean oldInformationSchema)
        Changes INFORMATION_SCHEMA content.
        Parameters:
        oldInformationSchema - true to have old-style tables in INFORMATION_SCHEMA, false to have modern tables
      • isOldInformationSchema

        public boolean isOldInformationSchema()
        Description copied from class: Session
        Returns whether INFORMATION_SCHEMA contains old-style tables.
        Specified by:
        isOldInformationSchema in class Session
        Returns:
        whether INFORMATION_SCHEMA contains old-style tables
      • getDatabaseMeta

        public org.h2.jdbc.meta.DatabaseMeta getDatabaseMeta()
        Description copied from class: Session
        Returns database meta information.
        Specified by:
        getDatabaseMeta in class Session
        Returns:
        database meta information
      • 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
      • setQuirksMode

        public void setQuirksMode​(boolean quirksMode)
        Enables or disables the quirks mode.
        Parameters:
        quirksMode - whether quirks mode should be enabled
      • isQuirksMode

        public boolean isQuirksMode()
        Returns whether quirks mode is enabled explicitly or implicitly.
        Returns:
        true if database is starting or quirks mode was enabled explicitly, false otherwise
      • setThreadLocalSession

        public Session setThreadLocalSession()
        Description copied from class: Session
        Sets this session as thread local session, if this session is a local session.
        Overrides:
        setThreadLocalSession in class Session
        Returns:
        old thread local session, or null
      • resetThreadLocalSession

        public void resetThreadLocalSession​(Session oldSession)
        Description copied from class: Session
        Resets old thread local session.
        Overrides:
        resetThreadLocalSession in class Session
        Parameters:
        oldSession - the old thread local session, or null