Package org.h2.engine

Class SessionLocal

java.lang.Object
org.h2.engine.Session
org.h2.engine.SessionLocal
All Implemented Interfaces:
AutoCloseable, CastDataProvider, TransactionStore.RollbackListener

public final class SessionLocal extends Session implements 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.
  • Field Details

    • SYSTEM_IDENTIFIER_PREFIX

      private static final String SYSTEM_IDENTIFIER_PREFIX
      The prefix of generated identifiers. It may not have letters, because they are case sensitive.
      See Also:
    • nextSerialId

      private static int nextSerialId
    • THREAD_LOCAL_SESSION

      private static final ThreadLocal<Session> THREAD_LOCAL_SESSION
      Thread local session for comparison operations between different data types.
    • serialId

      private final int serialId
    • database

      private final Database database
    • user

      private final User user
    • id

      private final int id
    • networkConnectionInfo

      private NetworkConnectionInfo networkConnectionInfo
    • locks

      private final ArrayList<Table> locks
    • autoCommit

      private boolean autoCommit
    • random

      private Random random
    • lockTimeout

      private int lockTimeout
    • nextValueFor

    • currentValueFor

      private WeakHashMap<Sequence,Value> currentValueFor
    • lastIdentity

      private Value lastIdentity
    • savepoints

      private HashMap<String,SessionLocal.Savepoint> savepoints
    • localTempTables

      private HashMap<String,Table> localTempTables
    • localTempTableIndexes

      private HashMap<String,Index> localTempTableIndexes
    • localTempTableConstraints

      private HashMap<String,Constraint> localTempTableConstraints
    • throttleMs

      private int throttleMs
    • lastThrottleNs

      private long lastThrottleNs
    • currentCommand

      private Command currentCommand
    • allowLiterals

      private boolean allowLiterals
    • currentSchemaName

      private String currentSchemaName
    • schemaSearchPath

      private String[] schemaSearchPath
    • trace

      private Trace trace
    • removeLobMap

      private HashMap<String,ValueLob> removeLobMap
    • systemIdentifier

      private int systemIdentifier
    • procedures

      private HashMap<String,Procedure> procedures
    • autoCommitAtTransactionEnd

      private boolean autoCommitAtTransactionEnd
    • currentTransactionName

      private String currentTransactionName
    • cancelAtNs

      private volatile long cancelAtNs
    • sessionStart

      private final ValueTimestampTimeZone sessionStart
    • commandStartOrEnd

      private Instant commandStartOrEnd
    • currentTimestamp

      private ValueTimestampTimeZone currentTimestamp
    • variables

      private HashMap<String,Value> variables
    • queryTimeout

      private int queryTimeout
    • commitOrRollbackDisabled

      private boolean commitOrRollbackDisabled
    • waitForLock

      private Table waitForLock
    • waitForLockThread

      private Thread waitForLockThread
    • modificationId

      private int modificationId
    • objectId

      private int objectId
    • queryCacheSize

      private final int queryCacheSize
    • queryCache

      private SmallLRUCache<String,Command> queryCache
    • modificationMetaID

      private long modificationMetaID
    • createViewLevel

      private int createViewLevel
    • viewIndexCache

      private volatile SmallLRUCache<Object,ViewIndex> viewIndexCache
    • subQueryIndexCache

      private HashMap<Object,ViewIndex> subQueryIndexCache
    • lazyQueryExecution

      private boolean lazyQueryExecution
    • nonKeywords

      private BitSet nonKeywords
    • timeZone

      private TimeZoneProvider timeZone
    • tablesToAnalyze

      private HashSet<Table> tablesToAnalyze
      Tables marked for ANALYZE after the current transaction is committed. Prevents us calling ANALYZE repeatedly in large transactions.
    • temporaryResultLobs

      private LinkedList<SessionLocal.TimeoutValue> temporaryResultLobs
      Temporary LOBs from result sets. Those are kept for some time. The problem is that transactions are committed before the result is returned, and in some cases the next transaction is already started before the result is read (for example when using the server mode, when accessing metadata methods). We can't simply free those values up when starting the next transaction, because they would be removed too early.
    • temporaryLobs

      private ArrayList<ValueLob> temporaryLobs
      The temporary LOBs that need to be removed on commit.
    • transaction

      private Transaction transaction
    • state

      private final AtomicReference<SessionLocal.State> state
    • startStatement

      private long startStatement
    • isolationLevel

      private IsolationLevel isolationLevel
      Isolation level.
    • snapshotDataModificationId

      private long snapshotDataModificationId
      The snapshot data modification id. If isolation level doesn't allow non-repeatable reads the session uses a snapshot versions of data. After commit or rollback these snapshots are discarded and cached results of queries may became invalid. Commit and rollback allocate a new data modification id and store it here to forbid usage of older results.
    • idsToRelease

      private BitSet idsToRelease
      Set of database object ids to be released at the end of transaction
    • truncateLargeLength

      private boolean truncateLargeLength
      Whether length in definitions of data types is truncated.
    • variableBinary

      private boolean variableBinary
      Whether BINARY is parsed as VARBINARY.
    • oldInformationSchema

      private boolean oldInformationSchema
      Whether INFORMATION_SCHEMA contains old-style tables.
    • quirksMode

      private boolean quirksMode
      Whether commands are executed in quirks mode to support scripts from older versions of H2.
  • Constructor Details

    • SessionLocal

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

    • getThreadLocalSession

      static Session getThreadLocalSession()
    • 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)
    • initVariables

      private void initVariables()
    • setVariable

      public void setVariable(String name, 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 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 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<Table> getLocalTempTables()
    • addLocalTempTable

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

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

      public 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,Index> getLocalTempTableIndexes()
    • addLocalTempTableIndex

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

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

      public 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,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(Constraint constraint)
      Add a local temporary constraint to this session.
      Parameters:
      constraint - the constraint to add
      Throws:
      DbException - if a constraint with the same name already exists
    • removeLocalTempTableConstraint

      void removeLocalTempTableConstraint(Constraint constraint)
      Drop and remove the given local temporary constraint from this session.
      Parameters:
      constraint - the constraint
    • 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 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 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 Prepared prepare(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 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
    • 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
    • markUsedTablesAsUpdated

      private void markUsedTablesAsUpdated()
    • analyzeTables

      private void analyzeTables()
    • removeTemporaryLobs

      private void removeTemporaryLobs(boolean onTimeout)
    • beforeCommitOrRollback

      private void beforeCommitOrRollback()
    • endTransaction

      private void endTransaction()
    • 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
    • suspend

      void suspend()
      Cancel the transaction and close the session if needed.
    • 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(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(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
    • unlock

      void unlock(Table t)
      Unlock just this table.
      Parameters:
      t - the table to unlock
    • hasTransaction

      private boolean hasTransaction()
    • unlockAll

      private void unlockAll()
    • cleanTempTables

      private void cleanTempTables(boolean closeSession)
    • getRandom

      public Random getRandom()
    • getTrace

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

      public Value getNextValueFor(Sequence sequence, 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 Value getCurrentValueFor(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:
      DbException - if current value is not defined
    • setLastIdentity

      public void setLastIdentity(Value last)
    • getLastIdentity

      public 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).
    • setCurrentCommand

      private void setCurrentCommand(Command command)
      Set the current command of this session. This is done just before executing the statement.
      Parameters:
      command - the command
    • transitionToState

      private SessionLocal.State transitionToState(SessionLocal.State targetState, boolean checkSuspended)
    • checkSuspended

      private boolean checkSuspended(SessionLocal.State currentState)
    • 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:
      DbException - if the transaction is canceled
    • getCancel

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

      public Command getCurrentCommand()
    • getCommandStartOrEnd

      public ValueTimestampTimeZone getCommandStartOrEnd()
    • getAllowLiterals

      public boolean getAllowLiterals()
    • setAllowLiterals

      public void setAllowLiterals(boolean b)
    • setCurrentSchema

      public void setCurrentSchema(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 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(ValueLob v)
      Remember that the given LOB value must be removed at commit.
      Parameters:
      v - the value
    • removeAtCommitStop

      public void removeAtCommitStop(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 ValueTimestampTimeZone getSessionStart()
    • getLocks

      public Set<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,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(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 Table getWaitForLock()
    • getWaitForLockThread

      public Thread getWaitForLockThread()
    • getModificationId

      public int getModificationId()
    • getTransactionId

      public Value getTransactionId()
    • nextObjectId

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

      public Transaction getTransaction()
      Get the transaction to use for this session.
      Returns:
      the transaction
    • getStatementSavepoint

      private long getStatementSavepoint()
    • startStatementWithinTransaction

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

      private static void addTableToDependencies(MVTable table, HashSet<MVMap<Object,VersionedValue<Object>>> maps)
    • addTableToDependencies

      private static void addTableToDependencies(MVTable table, HashSet<MVMap<Object,VersionedValue<Object>>> maps, HashSet<MVTable> processed)
    • 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 ValueLob addTemporaryLob(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(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(MVMap<Object,VersionedValue<Object>> map, Object key, VersionedValue<Object> existingValue, VersionedValue<Object> restoredValue)
      Description copied from interface: TransactionStore.RollbackListener
      Notified of a single map change (add/update/remove)
      Specified by:
      onRollback in interface 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 NetworkConnectionInfo getNetworkConnectionInfo()
      Returns the network connection information, or null.
      Returns:
      the network connection information, or null
    • setNetworkConnectionInfo

      public void setNetworkConnectionInfo(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 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 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(TimeZoneProvider timeZone)
      Sets current time zone.
      Parameters:
      timeZone - time zone
    • 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 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(Value a, 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(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
    • 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 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