org.h2.engine
Class SessionRemote

java.lang.Object
  extended by org.h2.engine.SessionWithState
      extended by org.h2.engine.SessionRemote
All Implemented Interfaces:
SessionInterface, DataHandler

public class SessionRemote
extends SessionWithState
implements DataHandler

The client side part of a session when using the server mode. This object communicates with a Session on the server side.


Field Summary
static int CHANGE_ID
           
static int COMMAND_CLOSE
           
static int COMMAND_COMMIT
           
static int COMMAND_EXECUTE_QUERY
           
static int COMMAND_EXECUTE_UPDATE
           
static int COMMAND_GET_META_DATA
           
static int RESULT_CLOSE
           
static int RESULT_FETCH_ROWS
           
static int RESULT_RESET
           
static int SESSION_CANCEL_STATEMENT
           
static int SESSION_CHECK_KEY
           
static int SESSION_CLOSE
           
static int SESSION_PREPARE
           
static int SESSION_PREPARE_READ_PARAMS
           
static int SESSION_SET_AUTOCOMMIT
           
static int SESSION_SET_ID
           
static int STATUS_CLOSED
           
static int STATUS_ERROR
           
static int STATUS_OK
           
static int STATUS_OK_STATE_CHANGED
           
 
Fields inherited from class org.h2.engine.SessionWithState
sessionState, sessionStateChanged
 
Constructor Summary
SessionRemote(ConnectionInfo ci)
           
 
Method Summary
 void afterWriting()
          Called after writing has ended.
 void autoCommitIfCluster()
          Calls COMMIT if the session is in cluster mode.
 boolean autoReconnect(int count)
          Automatically re-connect if necessary and if configured to do so.
 void cancel()
          Cancel the current or next command (called when closing a connection).
 void cancelStatement(int id)
          Cancel the statement with the given id.
 void checkClosed()
          Check if this session is closed and throws an exception if so.
 void checkPowerOff()
          Check if the simulated power failure occurred.
 void checkWritingAllowed()
          Check if writing is allowed.
 void close()
          Roll back pending transactions and close the session.
 SessionInterface createSession(ConnectionInfo ci)
          Open a new (remote or embedded) session.
 void done(Transfer transfer)
          Called to flush the output after data has been sent to the server and just before receiving data.
 void freeUpDiskSpace()
          Free up disk space if possible.
 boolean getAutoCommit()
          Check if this session is in auto-commit mode.
 int getClientVersion()
           
 int getCurrentId()
           
 java.lang.String getDatabasePath()
          Get the database path.
 DataHandler getDataHandler()
          Get the data handler object.
 int getLastReconnect()
           
 java.lang.String getLobCompressionAlgorithm(int type)
          Get the compression algorithm used for large objects.
 java.sql.Connection getLobConnection()
          Get a database connection to be used for LOB access.
 SmallLRUCache<java.lang.String,java.lang.String[]> getLobFileListCache()
          Get the lob file list cache if it is used.
 LobStorage getLobStorage()
          Get the lob storage mechanism to use.
 java.lang.Object getLobSyncObject()
          Get the synchronization object for lob operations.
 int getMaxLengthInplaceLob()
          Get the maximum length of a in-place large object
 int getNextId()
           
 int getPowerOffCount()
          Get the number of disk operations before power failure is simulated.
 TempFileDeleter getTempFileDeleter()
          Get the temp file deleter mechanism.
 Trace getTrace()
          Get the trace object
 boolean isClosed()
          Check if close was called.
 boolean isClustered()
          Returns true if the connection is in cluster mode.
 boolean isReconnectNeeded(boolean write)
          Check if the database changed and therefore reconnecting is required.
 FileStore openFile(java.lang.String name, java.lang.String mode, boolean mustExist)
          Open a file at the given location.
 CommandInterface prepareCommand(java.lang.String sql, int fetchSize)
          Parse a command and prepare it for execution.
 SessionInterface reconnect(boolean write)
          Close the connection and open a new connection.
 void removeServer(java.io.IOException e, int i, int count)
          Remove a server from the list of cluster nodes and disables the cluster mode.
 void setAutoCommit(boolean autoCommit)
          Set the auto-commit mode.
 void setAutoCommitFromServer(boolean autoCommit)
           
 void setPowerOffCount(int count)
          Set the number of disk operations before power failure is simulated.
 void traceOperation(java.lang.String operation, int id)
          Write the operation to the trace system if debug trace is enabled.
 
Methods inherited from class org.h2.engine.SessionWithState
readSessionState, recreateSessionState
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SESSION_PREPARE

public static final int SESSION_PREPARE
See Also:
Constant Field Values

SESSION_CLOSE

public static final int SESSION_CLOSE
See Also:
Constant Field Values

COMMAND_EXECUTE_QUERY

public static final int COMMAND_EXECUTE_QUERY
See Also:
Constant Field Values

COMMAND_EXECUTE_UPDATE

public static final int COMMAND_EXECUTE_UPDATE
See Also:
Constant Field Values

COMMAND_CLOSE

public static final int COMMAND_CLOSE
See Also:
Constant Field Values

RESULT_FETCH_ROWS

public static final int RESULT_FETCH_ROWS
See Also:
Constant Field Values

RESULT_RESET

public static final int RESULT_RESET
See Also:
Constant Field Values

RESULT_CLOSE

public static final int RESULT_CLOSE
See Also:
Constant Field Values

COMMAND_COMMIT

public static final int COMMAND_COMMIT
See Also:
Constant Field Values

CHANGE_ID

public static final int CHANGE_ID
See Also:
Constant Field Values

COMMAND_GET_META_DATA

public static final int COMMAND_GET_META_DATA
See Also:
Constant Field Values

SESSION_PREPARE_READ_PARAMS

public static final int SESSION_PREPARE_READ_PARAMS
See Also:
Constant Field Values

SESSION_SET_ID

public static final int SESSION_SET_ID
See Also:
Constant Field Values

SESSION_CANCEL_STATEMENT

public static final int SESSION_CANCEL_STATEMENT
See Also:
Constant Field Values

SESSION_CHECK_KEY

public static final int SESSION_CHECK_KEY
See Also:
Constant Field Values

SESSION_SET_AUTOCOMMIT

public static final int SESSION_SET_AUTOCOMMIT
See Also:
Constant Field Values

STATUS_ERROR

public static final int STATUS_ERROR
See Also:
Constant Field Values

STATUS_OK

public static final int STATUS_OK
See Also:
Constant Field Values

STATUS_CLOSED

public static final int STATUS_CLOSED
See Also:
Constant Field Values

STATUS_OK_STATE_CHANGED

public static final int STATUS_OK_STATE_CHANGED
See Also:
Constant Field Values
Constructor Detail

SessionRemote

public SessionRemote(ConnectionInfo ci)
Method Detail

cancel

public void cancel()
Description copied from interface: SessionInterface
Cancel the current or next command (called when closing a connection).

Specified by:
cancel in interface SessionInterface

cancelStatement

public void cancelStatement(int id)
Cancel the statement with the given id.

Parameters:
id - the statement id

getAutoCommit

public boolean getAutoCommit()
Description copied from interface: SessionInterface
Check if this session is in auto-commit mode.

Specified by:
getAutoCommit in interface SessionInterface
Returns:
true if the session is in auto-commit mode

setAutoCommit

public void setAutoCommit(boolean autoCommit)
Description copied from interface: SessionInterface
Set the auto-commit mode.

Specified by:
setAutoCommit in interface SessionInterface
Parameters:
autoCommit - the new value

setAutoCommitFromServer

public void setAutoCommitFromServer(boolean autoCommit)

autoCommitIfCluster

public void autoCommitIfCluster()
Calls COMMIT if the session is in cluster mode.


getPowerOffCount

public int getPowerOffCount()
Description copied from interface: SessionInterface
Get the number of disk operations before power failure is simulated. This is used for testing. If not set, 0 is returned

Specified by:
getPowerOffCount in interface SessionInterface
Returns:
the number of operations, or 0

setPowerOffCount

public void setPowerOffCount(int count)
Description copied from interface: SessionInterface
Set the number of disk operations before power failure is simulated. To disable the countdown, use 0.

Specified by:
setPowerOffCount in interface SessionInterface
Parameters:
count - the number of operations

createSession

public SessionInterface createSession(ConnectionInfo ci)
Open a new (remote or embedded) session.

Parameters:
ci - the connection info
Returns:
the session

removeServer

public void removeServer(java.io.IOException e,
                         int i,
                         int count)
Remove a server from the list of cluster nodes and disables the cluster mode.

Parameters:
e - the exception (used for debugging)
i - the index of the server to remove
count - the retry count index

prepareCommand

public CommandInterface prepareCommand(java.lang.String sql,
                                       int fetchSize)
Description copied from interface: SessionInterface
Parse a command and prepare it for execution.

Specified by:
prepareCommand in interface SessionInterface
Parameters:
sql - the SQL statement
fetchSize - the number of rows to fetch in one step
Returns:
the prepared command

autoReconnect

public boolean autoReconnect(int count)
Automatically re-connect if necessary and if configured to do so.

Parameters:
count - the retry count index
Returns:
true if reconnected

checkClosed

public void checkClosed()
Check if this session is closed and throws an exception if so.

Throws:
SQLException - if the session is closed

close

public void close()
Description copied from interface: SessionInterface
Roll back pending transactions and close the session.

Specified by:
close in interface SessionInterface

getTrace

public Trace getTrace()
Description copied from interface: SessionInterface
Get the trace object

Specified by:
getTrace in interface SessionInterface
Returns:
the trace object

getNextId

public int getNextId()

getCurrentId

public int getCurrentId()

done

public void done(Transfer transfer)
          throws java.io.IOException
Called to flush the output after data has been sent to the server and just before receiving data. This method also reads the status code from the server and throws any exception the server sent.

Parameters:
transfer - the transfer object
Throws:
SQLException - if the server sent an exception
java.io.IOException - if there is a communication problem between client and server

isClustered

public boolean isClustered()
Returns true if the connection is in cluster mode.

Returns:
true if it is

isClosed

public boolean isClosed()
Description copied from interface: SessionInterface
Check if close was called.

Specified by:
isClosed in interface SessionInterface
Returns:
if the session has been closed

traceOperation

public void traceOperation(java.lang.String operation,
                           int id)
Write the operation to the trace system if debug trace is enabled.

Parameters:
operation - the operation performed
id - the id of the operation

checkPowerOff

public void checkPowerOff()
Description copied from interface: DataHandler
Check if the simulated power failure occurred. This call will decrement the countdown.

Specified by:
checkPowerOff in interface DataHandler

checkWritingAllowed

public void checkWritingAllowed()
Description copied from interface: DataHandler
Check if writing is allowed.

Specified by:
checkWritingAllowed in interface DataHandler

freeUpDiskSpace

public void freeUpDiskSpace()
Description copied from interface: DataHandler
Free up disk space if possible. This method is called if more space is needed.

Specified by:
freeUpDiskSpace in interface DataHandler

getDatabasePath

public java.lang.String getDatabasePath()
Description copied from interface: DataHandler
Get the database path.

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

getLobCompressionAlgorithm

public java.lang.String getLobCompressionAlgorithm(int type)
Description copied from interface: DataHandler
Get the compression algorithm used for large objects.

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

getMaxLengthInplaceLob

public int getMaxLengthInplaceLob()
Description copied from interface: DataHandler
Get the maximum length of a in-place large object

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

openFile

public FileStore openFile(java.lang.String name,
                          java.lang.String mode,
                          boolean mustExist)
Description copied from interface: DataHandler
Open a file at the given location.

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

getDataHandler

public DataHandler getDataHandler()
Description copied from interface: SessionInterface
Get the data handler object.

Specified by:
getDataHandler in interface SessionInterface
Returns:
the data handler

getLobSyncObject

public java.lang.Object getLobSyncObject()
Description copied from interface: DataHandler
Get the synchronization object for lob operations.

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

getLobFileListCache

public SmallLRUCache<java.lang.String,java.lang.String[]> getLobFileListCache()
Description copied from interface: DataHandler
Get the lob file list cache if it is used.

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

getClientVersion

public int getClientVersion()

getLastReconnect

public int getLastReconnect()

getTempFileDeleter

public TempFileDeleter getTempFileDeleter()
Description copied from interface: DataHandler
Get the temp file deleter mechanism.

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

isReconnectNeeded

public boolean isReconnectNeeded(boolean write)
Description copied from interface: SessionInterface
Check if the database changed and therefore reconnecting is required.

Specified by:
isReconnectNeeded in interface SessionInterface
Parameters:
write - if the next operation may be writing
Returns:
true if reconnecting is required

reconnect

public SessionInterface reconnect(boolean write)
Description copied from interface: SessionInterface
Close the connection and open a new connection.

Specified by:
reconnect in interface SessionInterface
Parameters:
write - if the next operation may be writing
Returns:
the new connection

afterWriting

public void afterWriting()
Description copied from interface: SessionInterface
Called after writing has ended. It needs to be called after isReconnectNeeded(true) returned false.

Specified by:
afterWriting in interface SessionInterface

getLobStorage

public LobStorage getLobStorage()
Description copied from interface: DataHandler
Get the lob storage mechanism to use.

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

getLobConnection

public java.sql.Connection getLobConnection()
Description copied from interface: DataHandler
Get a database connection to be used for LOB access.

Specified by:
getLobConnection in interface DataHandler
Returns:
the connection or null