/*
 * Copyright 2004-2019 H2 Group. Multiple-Licensed under the MPL 2.0,
 * and the EPL 1.0 (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.engine;

import java.io.Closeable;
import java.util.ArrayList;
import org.h2.command.CommandInterface;
import org.h2.message.Trace;
import org.h2.store.DataHandler;
import org.h2.value.Value;

A local or remote session. A session represents a database connection.
/** * A local or remote session. A session represents a database connection. */
public interface SessionInterface extends Closeable {
Get the list of the cluster servers for this session.
Returns:A list of "ip:port" strings for the cluster servers in this session.
/** * Get the list of the cluster servers for this session. * * @return A list of "ip:port" strings for the cluster servers in this * session. */
ArrayList<String> getClusterServers();
Parse a command and prepare it for execution.
Params:
  • sql – the SQL statement
  • fetchSize – the number of rows to fetch in one step
Returns:the prepared command
/** * Parse a command and prepare it for execution. * * @param sql the SQL statement * @param fetchSize the number of rows to fetch in one step * @return the prepared command */
CommandInterface prepareCommand(String sql, int fetchSize);
Roll back pending transactions and close the session.
/** * Roll back pending transactions and close the session. */
@Override void close();
Get the trace object
Returns:the trace object
/** * Get the trace object * * @return the trace object */
Trace getTrace();
Check if close was called.
Returns:if the session has been closed
/** * Check if close was called. * * @return if the session has been closed */
boolean isClosed();
Get the number of disk operations before power failure is simulated. This is used for testing. If not set, 0 is returned
Returns:the number of operations, or 0
/** * Get the number of disk operations before power failure is simulated. * This is used for testing. If not set, 0 is returned * * @return the number of operations, or 0 */
int getPowerOffCount();
Set the number of disk operations before power failure is simulated. To disable the countdown, use 0.
Params:
  • i – the number of operations
/** * Set the number of disk operations before power failure is simulated. * To disable the countdown, use 0. * * @param i the number of operations */
void setPowerOffCount(int i);
Get the data handler object.
Returns:the data handler
/** * Get the data handler object. * * @return the data handler */
DataHandler getDataHandler();
Check whether this session has a pending transaction.
Returns:true if it has
/** * Check whether this session has a pending transaction. * * @return true if it has */
boolean hasPendingTransaction();
Cancel the current or next command (called when closing a connection).
/** * Cancel the current or next command (called when closing a connection). */
void cancel();
Check if the database changed and therefore reconnecting is required.
Params:
  • write – if the next operation may be writing
Returns:true if reconnecting is required
/** * Check if the database changed and therefore reconnecting is required. * * @param write if the next operation may be writing * @return true if reconnecting is required */
boolean isReconnectNeeded(boolean write);
Close the connection and open a new connection.
Params:
  • write – if the next operation may be writing
Returns:the new connection
/** * Close the connection and open a new connection. * * @param write if the next operation may be writing * @return the new connection */
SessionInterface reconnect(boolean write);
Called after writing has ended. It needs to be called after isReconnectNeeded(true) returned false.
/** * Called after writing has ended. It needs to be called after * isReconnectNeeded(true) returned false. */
void afterWriting();
Check if this session is in auto-commit mode.
Returns:true if the session is in auto-commit mode
/** * Check if this session is in auto-commit mode. * * @return true if the session is in auto-commit mode */
boolean getAutoCommit();
Set the auto-commit mode. This call doesn't commit the current transaction.
Params:
  • autoCommit – the new value
/** * Set the auto-commit mode. This call doesn't commit the current * transaction. * * @param autoCommit the new value */
void setAutoCommit(boolean autoCommit);
Add a temporary LOB, which is closed when the session commits.
Params:
  • v – the value
/** * Add a temporary LOB, which is closed when the session commits. * * @param v the value */
void addTemporaryLob(Value v);
Check if this session is remote or embedded.
Returns:true if this session is remote
/** * Check if this session is remote or embedded. * * @return true if this session is remote */
boolean isRemote();
Set current schema.
Params:
  • schema – the schema name
/** * Set current schema. * * @param schema the schema name */
void setCurrentSchemaName(String schema);
Get current schema.
Returns:the current schema name
/** * Get current schema. * * @return the current schema name */
String getCurrentSchemaName();
Returns is this session supports generated keys.
Returns:true if generated keys are supported, false if only SCOPE_IDENTITY() is supported
/** * Returns is this session supports generated keys. * * @return {@code true} if generated keys are supported, {@code false} if only * {@code SCOPE_IDENTITY()} is supported */
boolean isSupportsGeneratedKeys(); }