Package org.h2.engine

Class SessionLocal

java.lang.Object
org.h2.engine.Session
org.h2.engine.SessionLocal
All Implemented Interfaces:
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 Details

    • SessionLocal

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

    • 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 ArrayList<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(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(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 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(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 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(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 HashMap<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(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 HashMap<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(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(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(String sql, boolean rightsChecked, boolean literalsChecked, org.h2.command.QueryScope queryScope)
      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).
      queryScope - the scope of this query, or null
      Returns:
      the prepared statement
    • prepareQueryExpression

      public org.h2.command.query.Query prepareQueryExpression(String sql, org.h2.command.QueryScope queryScope)
      Parse a query and prepare its expressions. Rights and literals must be already checked.
      Parameters:
      sql - the SQL statement
      queryScope - the scope of this query, or null
      Returns:
      the prepared statement
    • prepareLocal

      public org.h2.command.Command prepareLocal(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
    • 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 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 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(String name)
      Create a savepoint that is linked to the current log position.
      Parameters:
      name - the savepoint name
    • rollbackToSavepoint

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

      public void prepareCommit(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(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 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(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 String getNextSystemIdentifier(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(String name)
      Remove a procedure from this session.
      Parameters:
      name - the name of the procedure to remove
    • getProcedure

      public Procedure getProcedure(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(String[] schemas)
    • getSchemaSearchPath

      public String[] getSchemaSearchPath()
    • hashCode

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

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

      public void begin()
      Begin a transaction.
    • getSessionStart

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

      public 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 Map<Object,org.h2.index.QueryExpressionIndex> getViewIndexCache(boolean derivedTable)
      Get the view cache for this session. There are two caches: the derived table cache (which is only use for a single query, has no bounds, and is cleared after use), and the cache for regular views.
      Parameters:
      derivedTable - true to get the cache of derived tables
      Returns:
      the view cache or derived table cache
    • setQueryTimeout

      public void setQueryTimeout(int queryTimeout)
    • getQueryTimeout

      public int getQueryTimeout()
    • setWaitForLock

      public void setWaitForLock(org.h2.table.Table waitForLock, 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 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.
    • getStatementModificationDataId

      public long getStatementModificationDataId()
      Returns database data modification id on start of the current command.
      Returns:
      database data modification id on start of the current command
    • 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
    • getState

      public SessionLocal.State getState()
    • getBlockingSessionId

      public int getBlockingSessionId()
    • onRollback

      public void onRollback(org.h2.mvstore.MVMap<Object,org.h2.value.VersionedValue<Object>> map, Object key, org.h2.value.VersionedValue<Object> existingValue, org.h2.value.VersionedValue<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)
    • getMode

      public Mode getMode()
      Description copied from interface: CastDataProvider
      Returns the database mode.
      Specified by:
      getMode in interface CastDataProvider
      Returns:
      the database mode
    • getJavaObjectSerializer

      public JavaObjectSerializer getJavaObjectSerializer()
      Description copied from interface: CastDataProvider
      Returns the custom Java object serializer, or null.
      Specified by:
      getJavaObjectSerializer in interface CastDataProvider
      Returns:
      the custom Java object serializer, or null
    • getIsolationLevel

      public IsolationLevel getIsolationLevel()
      Description copied from class: Session
      Returns the isolation level.
      Specified by:
      getIsolationLevel in class Session
      Returns:
      the isolation level
    • 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 BitSet getNonKeywords()
      Gets bit set of non-keywords.
      Returns:
      set of non-keywords, or null
    • setNonKeywords

      public void setNonKeywords(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