public class AbstractQueryProtocol extends AbstractConnectProtocol implements Protocol
| Modifier and Type | Field and Description |
|---|---|
protected static ThreadPoolExecutor |
readScheduler |
activeStreamingResult, autoIncrementIncrement, connected, database, eofDeprecated, explicitClosed, hasWarnings, lock, options, proxy, reader, readOnly, serverCapabilities, serverPrepareStatementCache, serverStatus, serverThreadId, socket, socketTimeout, urlParser, writer| Modifier and Type | Method and Description |
|---|---|
ServerPrepareResult |
addPrepareInCache(String key,
ServerPrepareResult serverPrepareResult) |
void |
cancelCurrentQuery()
Cancels the current query - clones the current protocol and executes a query using the new
connection.
|
void |
closeExplicit() |
boolean |
executeBatchClient(boolean mustExecuteOnMaster,
Results results,
ClientPrepareResult prepareResult,
List<ParameterHolder[]> parametersList,
boolean hasLongData)
Execute clientPrepareQuery batch.
|
boolean |
executeBatchServer(boolean mustExecuteOnMaster,
ServerPrepareResult serverPrepareResult,
Results results,
String sql,
List<ParameterHolder[]> parametersList,
boolean hasLongData)
Execute Prepare if needed, and execute COM_STMT_EXECUTE queries in batch.
|
void |
executeBatchStmt(boolean mustExecuteOnMaster,
Results results,
List<String> queries)
Execute batch from Statement.executeBatch().
|
void |
executePreparedQuery(boolean mustExecuteOnMaster,
ServerPrepareResult serverPrepareResult,
Results results,
ParameterHolder[] parameters)
Execute a query that is already prepared.
|
void |
executeQuery(boolean mustExecuteOnMaster,
Results results,
ClientPrepareResult clientPrepareResult,
ParameterHolder[] parameters)
Execute a unique clientPrepareQuery.
|
void |
executeQuery(boolean mustExecuteOnMaster,
Results results,
ClientPrepareResult clientPrepareResult,
ParameterHolder[] parameters,
int queryTimeout)
Execute a unique clientPrepareQuery.
|
void |
executeQuery(boolean mustExecuteOnMaster,
Results results,
String sql)
Execute query directly to outputStream.
|
void |
executeQuery(boolean mustExecuteOnMaster,
Results results,
String sql,
Charset charset) |
void |
executeQuery(String sql)
Execute internal query.
|
boolean |
forceReleasePrepareStatement(int statementId)
Force release of prepare statement that are not used.
|
void |
forceReleaseWaitingPrepareStatement()
Force release of prepare statement that are not used.
|
boolean |
getAutocommit()
Get current autocommit status.
|
int |
getAutoIncrementIncrement()
Get current auto increment increment. *** no lock needed ****
|
String |
getCatalog() |
long |
getMaxRows() |
void |
getResult(Results results) |
int |
getTimeout()
Returns the connection timeout in milliseconds.
|
int |
getTransactionIsolationLevel() |
SQLException |
handleIoException(Exception initialException)
Handle IoException (reconnect if Exception is due to having send too much data, making server
close the connection.
|
void |
interrupt() |
boolean |
inTransaction() |
boolean |
isInterrupted() |
boolean |
isValid(int timeout)
Check that connection is valid. !!
|
boolean |
ping() |
ServerPrepareResult |
prepare(String sql,
boolean executeOnMaster)
Prepare query on server side.
|
void |
prolog(long maxRows,
boolean hasProxy,
MariaDbConnection connection,
MariaDbStatement statement)
Preparation before command.
|
void |
prologProxy(ServerPrepareResult serverPrepareResult,
long maxRows,
boolean hasProxy,
MariaDbConnection connection,
MariaDbStatement statement) |
void |
releasePrepareStatement(ServerPrepareResult serverPrepareResult)
Deallocate prepare statement if not used anymore.
|
void |
reset()
Reset connection state.
|
void |
resetDatabase() |
void |
resetStateAfterFailover(long maxRows,
int transactionIsolationLevel,
String database,
boolean autocommit)
Set current state after a failover.
|
void |
rollback()
Rollback transaction.
|
void |
setActiveFutureTask(FutureTask activeFutureTask) |
void |
setCatalog(String database) |
void |
setLocalInfileInputStream(InputStream inputStream) |
void |
setMaxRows(long max) |
void |
setTimeout(int timeout)
Sets the connection timeout.
|
void |
setTransactionIsolation(int level)
Set transaction isolation.
|
void |
stopIfInterrupted()
Throw TimeoutException if timeout has been reached.
|
abort, changeSocketSoTimeout, changeSocketTcpNoDelay, checkIfMaster, close, connect, connectWithoutProxy, getActiveStreamingResult, getDatabase, getHost, getHostAddress, getLock, getMajorServerVersion, getMinorServerVersion, getOptions, getPinGlobalTxToPhysicalConnection, getPort, getProxy, getReader, getReadonly, getServerThreadId, getServerVersion, getSocket, getTimeZone, getTraces, getUrlParser, getUsername, getWriter, hasMoreResults, hasWarnings, isClosed, isConnected, isEofDeprecated, isExplicitClosed, isMasterConnection, isServerMariaDb, mustBeMasterConnection, noBackslashEscapes, prepareStatementCache, readEofPacket, readPipelineCheckMaster, removeActiveStreamingResult, removeHasMoreResults, sessionStateAware, setActiveStreamingResult, setHasWarnings, setHostAddress, setHostFailedWithoutProxy, setProxy, setReadonly, setServerStatus, shouldReconnectWithoutProxy, skip, skipEofPacket, versionGreaterOrEqualclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitabort, changeSocketSoTimeout, changeSocketTcpNoDelay, checkIfMaster, close, connect, connectWithoutProxy, getActiveStreamingResult, getDatabase, getHost, getHostAddress, getLock, getMajorServerVersion, getMinorServerVersion, getOptions, getPinGlobalTxToPhysicalConnection, getPort, getProxy, getReader, getReadonly, getServerThreadId, getServerVersion, getSocket, getTimeZone, getTraces, getUrlParser, getUsername, getWriter, hasMoreResults, hasWarnings, isClosed, isConnected, isEofDeprecated, isExplicitClosed, isMasterConnection, isServerMariaDb, mustBeMasterConnection, noBackslashEscapes, prepareStatementCache, readEofPacket, removeActiveStreamingResult, removeHasMoreResults, sessionStateAware, setActiveStreamingResult, setHasWarnings, setHostAddress, setHostFailedWithoutProxy, setProxy, setReadonly, setServerStatus, shouldReconnectWithoutProxy, skip, skipEofPacket, versionGreaterOrEqualprotected static ThreadPoolExecutor readScheduler
public void reset()
throws SQLException
reset in interface ProtocolSQLException - if command failedpublic void executeQuery(String sql) throws SQLException
!! will not support multi values queries !!
executeQuery in interface ProtocolexecuteQuery in class AbstractConnectProtocolsql - sqlSQLException - in any exception occurpublic void executeQuery(boolean mustExecuteOnMaster,
Results results,
String sql)
throws SQLException
executeQuery in interface ProtocolmustExecuteOnMaster - was intended to be launched on master connectionresults - resultsql - the query to executeInternalSQLException - exceptionpublic void executeQuery(boolean mustExecuteOnMaster,
Results results,
String sql,
Charset charset)
throws SQLException
executeQuery in interface ProtocolSQLExceptionpublic void executeQuery(boolean mustExecuteOnMaster,
Results results,
ClientPrepareResult clientPrepareResult,
ParameterHolder[] parameters)
throws SQLException
executeQuery in interface ProtocolmustExecuteOnMaster - was intended to be launched on master connectionresults - resultsclientPrepareResult - clientPrepareResultparameters - parametersSQLException - exceptionpublic void executeQuery(boolean mustExecuteOnMaster,
Results results,
ClientPrepareResult clientPrepareResult,
ParameterHolder[] parameters,
int queryTimeout)
throws SQLException
executeQuery in interface ProtocolmustExecuteOnMaster - was intended to be launched on master connectionresults - resultsclientPrepareResult - clientPrepareResultparameters - parametersqueryTimeout - if timeout is set and must use max_statement_timeSQLException - exceptionpublic boolean executeBatchClient(boolean mustExecuteOnMaster,
Results results,
ClientPrepareResult prepareResult,
List<ParameterHolder[]> parametersList,
boolean hasLongData)
throws SQLException
executeBatchClient in interface ProtocolmustExecuteOnMaster - was intended to be launched on master connectionresults - resultsprepareResult - ClientPrepareResultparametersList - List of parametershasLongData - has parameter with long data (stream)SQLException - exceptionpublic void executeBatchStmt(boolean mustExecuteOnMaster,
Results results,
List<String> queries)
throws SQLException
executeBatchStmt in interface ProtocolmustExecuteOnMaster - was intended to be launched on master connectionresults - resultsqueries - queriesSQLException - if any exception occurpublic ServerPrepareResult prepare(String sql, boolean executeOnMaster) throws SQLException
For failover, two additional information are in the result-set object : - current connection : Since server maintain a state of this prepare statement, all query will be executed on this particular connection. - executeOnMaster : state of current connection when creating this prepareStatement (if was on master, will only be executed on master. If was on a slave, can be execute temporary on master, but we keep this flag, so when a slave is connected back to relaunch this query on slave)
prepare in interface Protocolsql - the queryexecuteOnMaster - state of current connection when creating this prepareStatementSQLException - if any error occur on connection.public boolean executeBatchServer(boolean mustExecuteOnMaster,
ServerPrepareResult serverPrepareResult,
Results results,
String sql,
List<ParameterHolder[]> parametersList,
boolean hasLongData)
throws SQLException
executeBatchServer in interface ProtocolmustExecuteOnMaster - must normally be executed on master connectionserverPrepareResult - prepare result. can be null if not prepared.results - execution resultssql - sql query if needed to be preparedparametersList - parameter listhasLongData - has long data (stream)SQLException - if parameter error or connection error occur.public void executePreparedQuery(boolean mustExecuteOnMaster,
ServerPrepareResult serverPrepareResult,
Results results,
ParameterHolder[] parameters)
throws SQLException
executePreparedQuery in interface ProtocolmustExecuteOnMaster - must execute on masterserverPrepareResult - prepare resultresults - execution resultparameters - parametersSQLException - exceptionpublic void rollback()
throws SQLException
rollback in interface ProtocolSQLExceptionpublic boolean forceReleasePrepareStatement(int statementId)
throws SQLException
forceReleasePrepareStatement in interface ProtocolstatementId - prepared statement Id to remove.SQLException - if connection exception.public void forceReleaseWaitingPrepareStatement()
throws SQLException
forceReleaseWaitingPrepareStatement in interface ProtocolSQLException - if connection occurpublic boolean ping()
throws SQLException
ping in interface ProtocolSQLExceptionpublic boolean isValid(int timeout)
throws SQLException
isValid in interface Protocoltimeout - timeout in millisecondsSQLException - if any error occurpublic String getCatalog() throws SQLException
getCatalog in interface ProtocolSQLExceptionpublic void setCatalog(String database) throws SQLException
setCatalog in interface ProtocolSQLExceptionpublic void resetDatabase()
throws SQLException
resetDatabase in interface ProtocolSQLExceptionpublic void cancelCurrentQuery()
throws SQLException
cancelCurrentQuery in interface ProtocolSQLException - never thrownpublic boolean getAutocommit()
getAutocommit in interface Protocolpublic boolean inTransaction()
inTransaction in interface Protocolpublic void closeExplicit()
closeExplicit in interface Protocolpublic void releasePrepareStatement(ServerPrepareResult serverPrepareResult) throws SQLException
releasePrepareStatement in interface ProtocolserverPrepareResult - allocation resultSQLException - if de-allocation failed.public long getMaxRows()
getMaxRows in interface Protocolpublic void setMaxRows(long max)
throws SQLException
setMaxRows in interface ProtocolSQLExceptionpublic void setLocalInfileInputStream(InputStream inputStream)
setLocalInfileInputStream in interface Protocolpublic int getTimeout()
getTimeout in interface Protocolpublic void setTimeout(int timeout)
throws SocketException
setTimeout in interface Protocoltimeout - the timeout, in millisecondsSocketException - if there is an error in the underlying protocol, such as a TCP error.public void setTransactionIsolation(int level)
throws SQLException
setTransactionIsolation in interface Protocollevel - transaction level.SQLException - if transaction level is unknownpublic int getTransactionIsolationLevel()
getTransactionIsolationLevel in interface Protocolpublic void getResult(Results results) throws SQLException
getResult in interface ProtocolSQLExceptionpublic int getAutoIncrementIncrement()
throws SQLException
getAutoIncrementIncrement in interface ProtocolSQLException - if cannot retrieve auto increment valuepublic void prologProxy(ServerPrepareResult serverPrepareResult, long maxRows, boolean hasProxy, MariaDbConnection connection, MariaDbStatement statement) throws SQLException
prologProxy in interface ProtocolSQLExceptionpublic void prolog(long maxRows,
boolean hasProxy,
MariaDbConnection connection,
MariaDbStatement statement)
throws SQLException
prolog in interface ProtocolmaxRows - query max rowshasProxy - has proxyconnection - current connectionstatement - current statementSQLException - if any error occur.public ServerPrepareResult addPrepareInCache(String key, ServerPrepareResult serverPrepareResult)
addPrepareInCache in interface Protocolpublic void resetStateAfterFailover(long maxRows,
int transactionIsolationLevel,
String database,
boolean autocommit)
throws SQLException
resetStateAfterFailover in interface ProtocolmaxRows - current Max rowstransactionIsolationLevel - current transactionIsolationLeveldatabase - current databaseautocommit - current autocommit stateSQLException - if any error occur.public SQLException handleIoException(Exception initialException)
There is 3 kind of IOException :
handleIoException in interface ProtocolinitialException - initial Io errorpublic void setActiveFutureTask(FutureTask activeFutureTask)
setActiveFutureTask in interface Protocolpublic boolean isInterrupted()
isInterrupted in interface Protocolpublic void stopIfInterrupted()
throws SQLTimeoutException
stopIfInterrupted in interface ProtocolSQLTimeoutException - to indicate timeout exception.Copyright © 2019 mariadb.org. All rights reserved.