public abstract class AbstractConnectProtocol extends java.lang.Object implements Protocol
| Modifier and Type | Field and Description |
|---|---|
Results |
activeStreamingResult |
protected int |
autoIncrementIncrement |
protected static java.lang.String |
CHECK_GALERA_STATE_QUERY |
protected boolean |
connected |
private HostAddress |
currentHost |
protected java.lang.String |
database |
protected boolean |
eofDeprecated |
protected ExceptionFactory |
exceptionFactory |
protected boolean |
explicitClosed |
protected java.util.List<java.lang.String> |
galeraAllowedStates |
private GlobalStateInfo |
globalInfo |
boolean |
hasWarnings |
private boolean |
hostFailed |
private static byte[] |
IS_MASTER_QUERY |
protected java.util.concurrent.locks.ReentrantLock |
lock |
private static Logger |
logger |
private int |
majorVersion |
private int |
minorVersion |
protected Options |
options |
private int |
patchVersion |
protected FailoverProxy |
proxy |
protected PacketInputStream |
reader |
protected boolean |
readOnly |
protected long |
serverCapabilities |
private boolean |
serverMariaDb |
protected ServerPrepareStatementCache |
serverPrepareStatementCache |
short |
serverStatus |
protected long |
serverThreadId |
private java.lang.String |
serverVersion |
private static byte[] |
SESSION_QUERY |
protected java.net.Socket |
socket |
protected int |
socketTimeout |
private java.util.TimeZone |
timeZone |
protected LruTraceCache |
traceCache |
protected UrlParser |
urlParser |
private java.lang.String |
username |
protected PacketOutputStream |
writer |
| Constructor and Description |
|---|
AbstractConnectProtocol(UrlParser urlParser,
GlobalStateInfo globalInfo,
java.util.concurrent.locks.ReentrantLock lock,
LruTraceCache traceCache)
Get a protocol instance.
|
| Modifier and Type | Method and Description |
|---|---|
void |
abort()
Force closes socket and stream readers/writers.
|
private void |
abortActiveStream() |
private void |
additionalData(java.util.Map<java.lang.String,java.lang.String> serverData) |
private void |
assignStream(java.net.Socket socket,
Options options) |
private void |
authenticationHandler(byte exchangeCharset,
long clientCapabilities,
java.lang.String authenticationPluginType,
byte[] seed,
Options options,
java.lang.String database,
Credential credential,
java.lang.String host) |
void |
changeSocketSoTimeout(int setSoTimeout) |
void |
changeSocketTcpNoDelay(boolean setTcpNoDelay)
Change Socket TcpNoDelay option.
|
boolean |
checkIfMaster()
Check that current connection is a master connection (not read-only).
|
private void |
cleanMemory() |
void |
close()
Closes socket and stream readers/writers Attempts graceful shutdown.
|
private static void |
closeSocket(PacketInputStream packetInputStream,
PacketOutputStream packetOutputStream,
java.net.Socket socket) |
private void |
compressionHandler(Options options) |
void |
connect()
Connect to currentHost.
|
void |
connectWithoutProxy()
Connect without proxy.
|
private void |
createConnection(HostAddress hostAddress,
java.lang.String username) |
private static java.net.Socket |
createSocket(java.lang.String host,
int port,
Options options) |
private byte |
decideLanguage(int serverLanguage)
Default collation used for string exchanges with server.
|
void |
destroySocket()
Closing socket in case of Connection error after socket creation.
|
private static void |
enabledSslCipherSuites(javax.net.ssl.SSLSocket sslSocket,
Options options)
Set ssl socket cipher according to options.
|
private static void |
enabledSslProtocolSuites(javax.net.ssl.SSLSocket sslSocket,
Options options)
Return possible protocols : values of option enabledSslProtocolSuites is set, or default to
"TLSv1,TLSv1.1".
|
abstract void |
executeQuery(java.lang.String sql) |
private void |
forceAbort() |
private void |
galeraStateValidation() |
Results |
getActiveStreamingResult() |
java.lang.String |
getDatabase() |
java.lang.String |
getHost() |
HostAddress |
getHostAddress() |
java.util.concurrent.locks.ReentrantLock |
getLock() |
int |
getMajorServerVersion() |
int |
getMinorServerVersion() |
Options |
getOptions() |
boolean |
getPinGlobalTxToPhysicalConnection() |
int |
getPort() |
FailoverProxy |
getProxy() |
PacketInputStream |
getReader() |
boolean |
getReadonly() |
long |
getServerThreadId() |
java.lang.String |
getServerVersion() |
java.net.Socket |
getSocket() |
java.util.TimeZone |
getTimeZone() |
java.lang.String |
getTraces()
Get a String containing readable information about last 10 send/received packets.
|
UrlParser |
getUrlParser() |
java.lang.String |
getUsername() |
boolean |
hasMoreResults() |
boolean |
hasWarnings()
Has warnings.
|
private static long |
initializeClientCapabilities(Options options,
long serverCapabilities,
java.lang.String database) |
boolean |
isClosed()
Is the connection closed.
|
boolean |
isConnected()
Is connected.
|
boolean |
isEofDeprecated() |
boolean |
isExplicitClosed() |
boolean |
isMasterConnection()
Indicate if current protocol is a master protocol.
|
boolean |
isServerMariaDb() |
private void |
loadCalendar(java.lang.String srvTimeZone,
java.lang.String srvSystemTimeZone) |
boolean |
mustBeMasterConnection() |
boolean |
noBackslashEscapes() |
private void |
parseVersion(java.lang.String serverVersion) |
private void |
postConnectionQueries() |
ServerPrepareStatementCache |
prepareStatementCache() |
void |
readEofPacket()
Check that next read packet is a End-of-file packet.
|
private void |
readPipelineAdditionalData(java.util.Map<java.lang.String,java.lang.String> serverData) |
void |
readPipelineCheckMaster() |
private void |
readRequestSessionVariables(java.util.Map<java.lang.String,java.lang.String> serverData) |
void |
removeActiveStreamingResult()
Remove exception result and since totally fetched, set fetch size to 0.
|
void |
removeHasMoreResults()
Remove flag has more results.
|
private void |
requestSessionDataWithShow(java.util.Map<java.lang.String,java.lang.String> serverData) |
private void |
sendCreateDatabaseIfNotExist(java.lang.String quotedDb) |
private void |
sendPipelineAdditionalData()
Send all additional needed values.
|
private void |
sendPipelineCheckMaster()
Send query to identify if server is master.
|
private void |
sendRequestSessionVariables() |
private void |
sendSessionInfos() |
private void |
sendUseDatabaseIfNotExist(java.lang.String quotedDb) |
boolean |
sessionStateAware() |
void |
setActiveStreamingResult(Results activeStreamingResult) |
void |
setHasWarnings(boolean hasWarnings) |
void |
setHostAddress(HostAddress host) |
void |
setHostFailedWithoutProxy() |
void |
setProxy(FailoverProxy proxy) |
void |
setServerStatus(short serverStatus) |
boolean |
shouldReconnectWithoutProxy()
Indicate for Old reconnection if can reconnect without throwing exception.
|
void |
skip()
Skip packets not read that are not needed.
|
void |
skipEofPacket()
Check that next read packet is a End-of-file packet.
|
private void |
sslWrapper(java.lang.String host,
java.net.Socket socket,
Options options,
long serverCapabilities,
long clientCapabilities,
byte exchangeCharset,
long serverThreadId) |
boolean |
versionGreaterOrEqual(int major,
int minor,
int patch)
Utility method to check if database version is greater than parameters.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcancelCurrentQuery, closeExplicit, executeBatchClient, executeBatchServer, executeBatchStmt, executePreparedQuery, executeQuery, executeQuery, executeQuery, executeQuery, forceReleasePrepareStatement, forceReleaseWaitingPrepareStatement, getAutocommit, getAutoIncrementIncrement, getCatalog, getMaxRows, getResult, getTimeout, getTransactionIsolationLevel, handleIoException, interrupt, inTransaction, isInterrupted, isValid, ping, prepare, prolog, prologProxy, putInCache, releasePrepareStatement, reset, resetDatabase, resetStateAfterFailover, rollback, setActiveFutureTask, setCatalog, setLocalInfileInputStream, setMaxRows, setReadonly, setTimeout, setTransactionIsolation, stopIfInterruptedprivate static final byte[] SESSION_QUERY
private static final byte[] IS_MASTER_QUERY
protected static final java.lang.String CHECK_GALERA_STATE_QUERY
private static final Logger logger
protected final java.util.concurrent.locks.ReentrantLock lock
protected final UrlParser urlParser
protected final Options options
protected final LruTraceCache traceCache
private final java.lang.String username
private final GlobalStateInfo globalInfo
public boolean hasWarnings
public Results activeStreamingResult
public short serverStatus
protected int autoIncrementIncrement
protected java.net.Socket socket
protected PacketOutputStream writer
protected boolean readOnly
protected PacketInputStream reader
protected FailoverProxy proxy
protected volatile boolean connected
protected boolean explicitClosed
protected java.lang.String database
protected long serverThreadId
protected ServerPrepareStatementCache serverPrepareStatementCache
protected boolean eofDeprecated
protected long serverCapabilities
protected int socketTimeout
protected ExceptionFactory exceptionFactory
protected final java.util.List<java.lang.String> galeraAllowedStates
private HostAddress currentHost
private boolean hostFailed
private java.lang.String serverVersion
private boolean serverMariaDb
private int majorVersion
private int minorVersion
private int patchVersion
private java.util.TimeZone timeZone
public AbstractConnectProtocol(UrlParser urlParser, GlobalStateInfo globalInfo, java.util.concurrent.locks.ReentrantLock lock, LruTraceCache traceCache)
urlParser - connection URL informationglobalInfo - server global variables informationlock - the lock for thread synchronisationtraceCache - trace cacheprivate static void closeSocket(PacketInputStream packetInputStream, PacketOutputStream packetOutputStream, java.net.Socket socket)
private static java.net.Socket createSocket(java.lang.String host,
int port,
Options options)
throws java.sql.SQLException
java.sql.SQLExceptionprivate static long initializeClientCapabilities(Options options, long serverCapabilities, java.lang.String database)
private static void enabledSslProtocolSuites(javax.net.ssl.SSLSocket sslSocket,
Options options)
throws java.sql.SQLException
sslSocket - current sslSocketjava.sql.SQLException - if protocol isn't a supported protocolprivate static void enabledSslCipherSuites(javax.net.ssl.SSLSocket sslSocket,
Options options)
throws java.sql.SQLException
sslSocket - current ssl socketjava.sql.SQLException - if a cipher isn't knownpublic void close()
public void abort()
private void forceAbort()
private void abortActiveStream()
public void skip()
throws java.sql.SQLException
private void cleanMemory()
public void setServerStatus(short serverStatus)
setServerStatus in interface Protocolpublic void removeHasMoreResults()
removeHasMoreResults in interface Protocolpublic void connect()
throws java.sql.SQLException
private void createConnection(HostAddress hostAddress, java.lang.String username) throws java.sql.SQLException
java.sql.SQLExceptionpublic void destroySocket()
private void sslWrapper(java.lang.String host,
java.net.Socket socket,
Options options,
long serverCapabilities,
long clientCapabilities,
byte exchangeCharset,
long serverThreadId)
throws java.sql.SQLException,
java.io.IOException
java.sql.SQLExceptionjava.io.IOExceptionprivate void authenticationHandler(byte exchangeCharset,
long clientCapabilities,
java.lang.String authenticationPluginType,
byte[] seed,
Options options,
java.lang.String database,
Credential credential,
java.lang.String host)
throws java.sql.SQLException,
java.io.IOException
java.sql.SQLExceptionjava.io.IOExceptionprivate void compressionHandler(Options options)
private void assignStream(java.net.Socket socket,
Options options)
throws java.sql.SQLException
java.sql.SQLExceptionprivate void galeraStateValidation()
throws java.sql.SQLException
java.sql.SQLExceptionprivate void postConnectionQueries()
throws java.sql.SQLException
java.sql.SQLExceptionprivate void sendPipelineAdditionalData()
throws java.io.IOException
java.io.IOException - if socket exception occurprivate void sendSessionInfos()
throws java.io.IOException
java.io.IOExceptionprivate void sendRequestSessionVariables()
throws java.io.IOException
java.io.IOExceptionprivate void readRequestSessionVariables(java.util.Map<java.lang.String,java.lang.String> serverData)
throws java.sql.SQLException
java.sql.SQLExceptionprivate void sendCreateDatabaseIfNotExist(java.lang.String quotedDb)
throws java.io.IOException
java.io.IOExceptionprivate void sendUseDatabaseIfNotExist(java.lang.String quotedDb)
throws java.io.IOException
java.io.IOExceptionprivate void readPipelineAdditionalData(java.util.Map<java.lang.String,java.lang.String> serverData)
throws java.sql.SQLException
java.sql.SQLExceptionprivate void requestSessionDataWithShow(java.util.Map<java.lang.String,java.lang.String> serverData)
throws java.sql.SQLException
java.sql.SQLExceptionprivate void additionalData(java.util.Map<java.lang.String,java.lang.String> serverData)
throws java.io.IOException,
java.sql.SQLException
java.io.IOExceptionjava.sql.SQLExceptionpublic boolean isClosed()
private void loadCalendar(java.lang.String srvTimeZone,
java.lang.String srvSystemTimeZone)
throws java.sql.SQLException
java.sql.SQLExceptionpublic boolean checkIfMaster()
throws java.sql.SQLException
checkIfMaster in interface Protocoljava.sql.SQLException - if requesting infos for server fail.private byte decideLanguage(int serverLanguage)
serverLanguage - server default collationpublic void readEofPacket()
throws java.sql.SQLException,
java.io.IOException
readEofPacket in interface Protocoljava.sql.SQLException - if not a End-of-file packetjava.io.IOException - if connection error occurpublic void skipEofPacket()
throws java.sql.SQLException,
java.io.IOException
skipEofPacket in interface Protocoljava.sql.SQLException - if not a End-of-file packetjava.io.IOException - if connection error occurpublic void setHostFailedWithoutProxy()
setHostFailedWithoutProxy in interface Protocolpublic UrlParser getUrlParser()
getUrlParser in interface Protocolpublic boolean isMasterConnection()
isMasterConnection in interface Protocolprivate void sendPipelineCheckMaster()
throws java.io.IOException
java.io.IOException - in case of socket error.public void readPipelineCheckMaster()
throws java.sql.SQLException
java.sql.SQLExceptionpublic boolean mustBeMasterConnection()
mustBeMasterConnection in interface Protocolpublic boolean noBackslashEscapes()
noBackslashEscapes in interface Protocolpublic void connectWithoutProxy()
throws java.sql.SQLException
connectWithoutProxy in interface Protocoljava.sql.SQLException - exceptionpublic boolean shouldReconnectWithoutProxy()
shouldReconnectWithoutProxy in interface Protocolpublic java.lang.String getServerVersion()
getServerVersion in interface Protocolpublic boolean getReadonly()
getReadonly in interface Protocolpublic HostAddress getHostAddress()
getHostAddress in interface Protocolpublic void setHostAddress(HostAddress host)
setHostAddress in interface Protocolpublic FailoverProxy getProxy()
public void setProxy(FailoverProxy proxy)
public java.lang.String getDatabase()
getDatabase in interface Protocolpublic java.lang.String getUsername()
getUsername in interface Protocolprivate void parseVersion(java.lang.String serverVersion)
public int getMajorServerVersion()
getMajorServerVersion in interface Protocolpublic int getMinorServerVersion()
getMinorServerVersion in interface Protocolpublic boolean versionGreaterOrEqual(int major,
int minor,
int patch)
versionGreaterOrEqual in interface Protocolmajor - major versionminor - minor versionpatch - patch versionpublic boolean getPinGlobalTxToPhysicalConnection()
getPinGlobalTxToPhysicalConnection in interface Protocolpublic boolean hasWarnings()
hasWarnings in interface Protocolpublic boolean isConnected()
isConnected in interface Protocolpublic long getServerThreadId()
getServerThreadId in interface Protocolpublic boolean isExplicitClosed()
isExplicitClosed in interface Protocolpublic java.util.TimeZone getTimeZone()
getTimeZone in interface Protocolpublic Options getOptions()
getOptions in interface Protocolpublic void setHasWarnings(boolean hasWarnings)
setHasWarnings in interface Protocolpublic Results getActiveStreamingResult()
getActiveStreamingResult in interface Protocolpublic void setActiveStreamingResult(Results activeStreamingResult)
setActiveStreamingResult in interface Protocolpublic void removeActiveStreamingResult()
removeActiveStreamingResult in interface Protocolpublic java.util.concurrent.locks.ReentrantLock getLock()
public boolean hasMoreResults()
hasMoreResults in interface Protocolpublic ServerPrepareStatementCache prepareStatementCache()
prepareStatementCache in interface Protocolpublic abstract void executeQuery(java.lang.String sql)
throws java.sql.SQLException
executeQuery in interface Protocoljava.sql.SQLExceptionpublic void changeSocketTcpNoDelay(boolean setTcpNoDelay)
changeSocketTcpNoDelay in interface ProtocolsetTcpNoDelay - value to set.public void changeSocketSoTimeout(int setSoTimeout)
throws java.net.SocketException
changeSocketSoTimeout in interface Protocoljava.net.SocketExceptionpublic boolean isServerMariaDb()
isServerMariaDb in interface Protocolpublic PacketInputStream getReader()
public boolean isEofDeprecated()
isEofDeprecated in interface Protocolpublic boolean sessionStateAware()
sessionStateAware in interface Protocol