public class NativeProtocol extends AbstractProtocol<NativePacketPayload> implements Protocol<NativePacketPayload>, RuntimeProperty.RuntimePropertyListener
Protocol.ProtocolEventHandler, Protocol.ProtocolEventListener| Modifier and Type | Field and Description |
|---|---|
private boolean |
autoGenerateTestcaseScript |
private NativeMessageBuilder |
commandBuilder |
private int |
commandCount |
protected static int |
COMP_HEADER_LENGTH |
protected CompressedPacketSender |
compressedPacketSender
Track this to manually shut down.
|
(package private) static java.util.Map<java.lang.Class<?>,java.util.function.Supplier<ValueEncoder>> |
DEFAULT_ENCODERS |
private static java.lang.String |
EXPLAINABLE_STATEMENT |
private static java.lang.String[] |
EXPLAINABLE_STATEMENT_EXTENSION |
protected boolean |
hadWarnings |
protected static int |
INITIAL_PACKET_SIZE |
private java.lang.ref.SoftReference<NativePacketPayload> |
loadFileBufRef
Packet used for 'LOAD DATA LOCAL INFILE'
We use a SoftReference, so that we don't penalize intermittent use of this feature
|
private java.io.InputStream |
localInfileInputStream |
private boolean |
logSlowQueries
Does the server support long column info?
|
private RuntimeProperty<java.lang.Boolean> |
maintainTimeStats |
protected static int |
MAX_QUERY_SIZE_TO_EXPLAIN |
private RuntimeProperty<java.lang.Integer> |
maxAllowedPacket |
private RuntimeProperty<java.lang.Integer> |
maxQuerySizeToLog |
private BaseMetricsHolder |
metricsHolder |
protected MessageReader<NativePacketHeader,NativePacketPayload> |
packetReader |
protected MessageSender<NativePacketPayload> |
packetSender |
protected byte |
packetSequence |
private boolean |
profileSQL |
protected java.util.Map<java.lang.Class<? extends ProtocolEntity>,ProtocolEntityReader<? extends ProtocolEntity,? extends Message>> |
PROTOCOL_ENTITY_CLASS_TO_BINARY_READER |
protected java.util.Map<java.lang.Class<? extends ProtocolEntity>,ProtocolEntityReader<? extends ProtocolEntity,? extends Message>> |
PROTOCOL_ENTITY_CLASS_TO_TEXT_READER |
private java.lang.String |
queryComment
The comment (if any) that we'll prepend to all queries
sent to the server (to show up in "SHOW PROCESSLIST")
|
private java.util.List<QueryInterceptor> |
queryInterceptors |
protected NativePacketPayload |
reusablePacket
Use this when reading in rows to avoid thousands of new() calls, because the byte arrays just get copied out of the packet anyway
|
protected NativeServerSession |
serverSession |
protected NativePacketPayload |
sharedSendPacket |
private long |
slowQueryThreshold |
protected static int |
SSL_REQUEST_LENGTH |
private int |
statementExecutionDepth |
private ResultsetRows |
streamingData |
private boolean |
useAutoSlowLog |
protected boolean |
useCompression |
private RuntimeProperty<java.lang.Boolean> |
useServerPrepStmts |
private int |
warningCount |
authProvider, exceptionInterceptor, log, messageBuilder, packetDebugRingBuffer, propertySet, queryTimingUnits, session, socketConnection, transactionManager, useNanosForElapsedTime| Constructor and Description |
|---|
NativeProtocol(Log logger) |
| Modifier and Type | Method and Description |
|---|---|
void |
afterHandshake() |
private int |
alignPacketSize(int a,
int l) |
private void |
appendDeadlockStatusInformation(Session sess,
java.lang.String xOpen,
java.lang.StringBuilder errorBuf) |
private java.lang.StringBuilder |
appendResultSetSlashGStyle(java.lang.StringBuilder appendTo,
Resultset rs) |
void |
applyPacketDecorators(MessageSender<NativePacketPayload> sender,
MessageReader<NativePacketHeader,NativePacketPayload> messageReader)
Apply optional decorators to configured PacketSender and PacketReader.
|
void |
beforeHandshake() |
private void |
calculateSlowQueryThreshold() |
void |
changeDatabase(java.lang.String database) |
void |
changeUser(java.lang.String user,
java.lang.String password,
java.lang.String database)
Re-authenticates as the given user and password
|
NativePacketPayload |
checkErrorMessage()
Read one message from the MySQL server, checks for errors in it, and if none,
returns the message, ready for reading
|
private NativePacketPayload |
checkErrorMessage(int command)
Checks for errors in the reply packet, and if none, returns the reply
packet, ready for reading
|
void |
checkErrorMessage(NativePacketPayload resultPacket) |
void |
checkForOutstandingStreamingData() |
void |
checkTransactionState() |
void |
clearInputStream() |
void |
close() |
void |
configureTimeZone()
Configures the client's timezone if required.
|
void |
connect(java.lang.String user,
java.lang.String password,
java.lang.String database)
Create a new session.
|
java.sql.SQLWarning |
convertShowWarningsToSQLWarnings(boolean forTruncationOnly)
Turns output of 'SHOW WARNINGS' into JDBC SQLWarning instances.
|
void |
dumpPacketRingBuffer() |
void |
explainSlowQuery(java.lang.String query,
java.lang.String truncatedQuery)
Runs an 'EXPLAIN' on the given query and dumps the results to the log
|
static MysqlType |
findMysqlType(PropertySet propertySet,
int mysqlTypeId,
short colFlag,
long length,
LazyString tableName,
LazyString originalTableName,
int collationIndex,
java.lang.String encoding) |
java.lang.StringBuilder |
generateQueryCommentBlock(java.lang.StringBuilder buf) |
private NativeMessageBuilder |
getCommandBuilder() |
int |
getCommandCount() |
long |
getCurrentTimeNanosOrMillis() |
private java.io.BufferedInputStream |
getFileStream(java.lang.String fileName) |
static NativeProtocol |
getInstance(Session session,
SocketConnection socketConnection,
PropertySet propertySet,
Log log,
TransactionEventHandler transactionManager) |
java.io.InputStream |
getLocalInfileInputStream()
Returns the InputStream instance that will be used to send
data in response to a "LOAD DATA LOCAL INFILE" statement.
|
MessageBuilder<NativePacketPayload> |
getMessageBuilder() |
BaseMetricsHolder |
getMetricsHolder() |
MessageReader<NativePacketHeader,NativePacketPayload> |
getPacketReader() |
MessageSender<NativePacketPayload> |
getPacketSender() |
java.lang.String |
getQueryComment()
Returns the comment that will be prepended to all statements
sent to the server.
|
java.util.List<QueryInterceptor> |
getQueryInterceptors() |
NativePacketPayload |
getReusablePacket() |
NativeServerSession |
getServerSession() |
NativePacketPayload |
getSharedSendPacket()
Returns the packet used for sending data (used by PreparedStatement) with position set to 0.
|
long |
getSlowQueryThreshold() |
ResultsetRows |
getStreamingData() |
java.util.function.Supplier<ValueEncoder> |
getValueEncoderSupplier(java.lang.Object obj) |
int |
getWarningCount() |
boolean |
hadWarnings() |
void |
handlePropertyChange(RuntimeProperty<?> prop) |
void |
init(Session sess,
SocketConnection phConnection,
PropertySet propSet,
TransactionEventHandler trManager)
Init method takes the place of constructor.
|
void |
initServerSession() |
<M extends Message> |
invokeQueryInterceptorsPost(M queryPacket,
M originalResponsePacket,
boolean forceExecute) |
<T extends Resultset> |
invokeQueryInterceptorsPost(java.util.function.Supplier<java.lang.String> sql,
Query interceptedQuery,
T originalResultSet,
boolean forceExecute) |
<M extends Message> |
invokeQueryInterceptorsPre(M queryPacket,
boolean forceExecute) |
<T extends Resultset> |
invokeQueryInterceptorsPre(java.util.function.Supplier<java.lang.String> sql,
Query interceptedQuery,
boolean forceExecute) |
protected boolean |
isDataAvailable() |
void |
negotiateSSLConnection()
Negotiates the SSL communications channel used when connecting
to a MySQL server that understands SSL.
|
NativePacketPayload |
probeMessage(NativePacketPayload reuse) |
void |
quit()
Log-off of the MySQL server and close the socket.
|
<T extends ProtocolEntity> |
read(java.lang.Class<Resultset> requiredClass,
int maxRows,
boolean streamResults,
NativePacketPayload resultPacket,
boolean isBinaryEncoded,
ColumnDefinition metadata,
ProtocolEntityFactory<T,NativePacketPayload> protocolEntityFactory)
Read protocol entity.
|
<T extends ProtocolEntity> |
read(java.lang.Class<T> requiredClass,
ProtocolEntityFactory<T,NativePacketPayload> protocolEntityFactory) |
<T extends Resultset> |
readAllResults(int maxRows,
boolean streamResults,
NativePacketPayload resultPacket,
boolean isBinaryEncoded,
ColumnDefinition metadata,
ProtocolEntityFactory<T,NativePacketPayload> resultSetFactory) |
NativePacketPayload |
readMessage(NativePacketPayload reuse)
Read one message from the MySQL server into the reusable buffer if provided or into the new one.
|
ColumnDefinition |
readMetadata() |
<T extends ProtocolEntity> |
readNextResultset(T currentProtocolEntity,
int maxRows,
boolean streamResults,
boolean isBinaryEncoded,
ProtocolEntityFactory<T,NativePacketPayload> resultSetFactory)
Read next result set from multi-result chain.
|
<T extends QueryResult> |
readQueryResult(ResultBuilder<T> resultBuilder)
Read messages from server and deliver them to resultBuilder.
|
NativeCapabilities |
readServerCapabilities()
Retrieve ServerCapabilities from server.
|
<T> T |
readServerStatusForResultSets(NativePacketPayload rowPacket,
boolean saveOldStatus) |
void |
reclaimLargeReusablePacket()
Don't hold on to overly-large packets
|
private void |
reclaimLargeSharedSendPacket() |
void |
rejectProtocol(NativePacketPayload msg) |
void |
releaseResources() |
void |
scanForAndThrowDataTruncation() |
void |
send(Message packet,
int packetLen) |
NativePacketPayload |
sendCommand(Message queryPacket,
boolean skipCheck,
int timeoutMillis)
Send a command to the MySQL server.
|
NativePacketPayload |
sendFileToServer(java.lang.String fileName)
Reads and sends a file to the server for LOAD DATA LOCAL INFILE
|
<T extends Resultset> |
sendQueryPacket(Query callingQuery,
NativePacketPayload queryPacket,
int maxRows,
boolean streamResults,
ColumnDefinition cachedMetadata,
ProtocolEntityFactory<T,NativePacketPayload> resultSetFactory)
Send a query stored in a packet to the server.
|
<T extends Resultset> |
sendQueryString(Query callingQuery,
java.lang.String query,
java.lang.String characterEncoding,
int maxRows,
boolean streamResults,
ColumnDefinition cachedMetadata,
ProtocolEntityFactory<T,NativePacketPayload> resultSetFactory)
Build a query packet from the given string and send it to the server.
|
void |
setHadWarnings(boolean hadWarnings) |
void |
setLocalInfileInputStream(java.io.InputStream stream)
Sets an InputStream instance that will be used to send data
to the MySQL server for a "LOAD DATA LOCAL INFILE" statement
rather than a FileInputStream or URLInputStream that represents
the path given as an argument to the statement.
|
void |
setQueryComment(java.lang.String comment)
Sets the comment that will be prepended to all statements
sent to the server.
|
void |
setQueryInterceptors(java.util.List<QueryInterceptor> queryInterceptors) |
void |
setSocketTimeout(int milliseconds) |
void |
setStreamingData(ResultsetRows streamingData) |
void |
setWarningCount(int warningCount) |
void |
skipPacket()
Reads and discards a single MySQL packet.
|
void |
unsetStreamingData(ResultsetRows streamer) |
protected boolean |
useNanosForElapsedTime() |
boolean |
versionMeetsMinimum(int major,
int minor,
int subminor) |
addListener, getAuthenticationProvider, getExceptionInterceptor, getPacketReceivedTimeHolder, getPacketSentTimeHolder, getPropertySet, getQueryTimingUnits, getSocketConnection, invokeListeners, removeListener, reset, setPacketReceivedTimeHolder, setPacketSentTimeHolder, setPropertySetclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetAuthenticationProvider, getExceptionInterceptor, getPacketReceivedTimeHolder, getPacketSentTimeHolder, getPropertySet, getQueryTimingUnits, getSocketConnection, reset, setPacketReceivedTimeHolder, setPacketSentTimeHolder, setPropertySetprotected static final int INITIAL_PACKET_SIZE
protected static final int COMP_HEADER_LENGTH
protected static final int MAX_QUERY_SIZE_TO_EXPLAIN
protected static final int SSL_REQUEST_LENGTH
private static final java.lang.String EXPLAINABLE_STATEMENT
private static final java.lang.String[] EXPLAINABLE_STATEMENT_EXTENSION
protected MessageSender<NativePacketPayload> packetSender
protected MessageReader<NativePacketHeader,NativePacketPayload> packetReader
protected NativeServerSession serverSession
protected CompressedPacketSender compressedPacketSender
protected NativePacketPayload sharedSendPacket
protected NativePacketPayload reusablePacket
private java.lang.ref.SoftReference<NativePacketPayload> loadFileBufRef
protected byte packetSequence
protected boolean useCompression
private RuntimeProperty<java.lang.Integer> maxAllowedPacket
private RuntimeProperty<java.lang.Boolean> useServerPrepStmts
private boolean autoGenerateTestcaseScript
private boolean logSlowQueries
private boolean useAutoSlowLog
private boolean profileSQL
private long slowQueryThreshold
private int commandCount
protected boolean hadWarnings
private int warningCount
protected java.util.Map<java.lang.Class<? extends ProtocolEntity>,ProtocolEntityReader<? extends ProtocolEntity,? extends Message>> PROTOCOL_ENTITY_CLASS_TO_TEXT_READER
protected java.util.Map<java.lang.Class<? extends ProtocolEntity>,ProtocolEntityReader<? extends ProtocolEntity,? extends Message>> PROTOCOL_ENTITY_CLASS_TO_BINARY_READER
private int statementExecutionDepth
private java.util.List<QueryInterceptor> queryInterceptors
private RuntimeProperty<java.lang.Boolean> maintainTimeStats
private RuntimeProperty<java.lang.Integer> maxQuerySizeToLog
private java.io.InputStream localInfileInputStream
private BaseMetricsHolder metricsHolder
static java.util.Map<java.lang.Class<?>,java.util.function.Supplier<ValueEncoder>> DEFAULT_ENCODERS
private java.lang.String queryComment
private NativeMessageBuilder commandBuilder
private ResultsetRows streamingData
public NativeProtocol(Log logger)
public static NativeProtocol getInstance(Session session, SocketConnection socketConnection, PropertySet propertySet, Log log, TransactionEventHandler transactionManager)
public void init(Session sess, SocketConnection phConnection, PropertySet propSet, TransactionEventHandler trManager)
Protocolinit in interface Protocol<NativePacketPayload>init in class AbstractProtocol<NativePacketPayload>sess - SessionphConnection - SocketConnectionpropSet - PropertySettrManager - TransactionEventHandlerpublic MessageBuilder<NativePacketPayload> getMessageBuilder()
getMessageBuilder in interface Protocol<NativePacketPayload>getMessageBuilder in class AbstractProtocol<NativePacketPayload>public MessageSender<NativePacketPayload> getPacketSender()
public MessageReader<NativePacketHeader,NativePacketPayload> getPacketReader()
private NativeMessageBuilder getCommandBuilder()
public java.util.function.Supplier<ValueEncoder> getValueEncoderSupplier(java.lang.Object obj)
getValueEncoderSupplier in interface Protocol<NativePacketPayload>public void negotiateSSLConnection()
negotiateSSLConnection in interface Protocol<NativePacketPayload>public void rejectProtocol(NativePacketPayload msg)
public void beforeHandshake()
beforeHandshake in interface Protocol<NativePacketPayload>public void afterHandshake()
afterHandshake in interface Protocol<NativePacketPayload>public void handlePropertyChange(RuntimeProperty<?> prop)
handlePropertyChange in interface RuntimeProperty.RuntimePropertyListenerpublic void applyPacketDecorators(MessageSender<NativePacketPayload> sender, MessageReader<NativePacketHeader,NativePacketPayload> messageReader)
sender - MessageSendermessageReader - MessageReaderpublic NativeCapabilities readServerCapabilities()
ProtocolreadServerCapabilities in interface Protocol<NativePacketPayload>ServerCapabilitiespublic NativeServerSession getServerSession()
getServerSession in interface Protocol<NativePacketPayload>public void changeDatabase(java.lang.String database)
changeDatabase in interface Protocol<NativePacketPayload>public final NativePacketPayload readMessage(NativePacketPayload reuse)
ProtocolreadMessage in interface Protocol<NativePacketPayload>reuse - Message instance to read into, may be nullpublic final NativePacketPayload probeMessage(NativePacketPayload reuse)
public final void send(Message packet, int packetLen)
send in interface Protocol<NativePacketPayload>packet - MessagepacketLen - length of header + payloadpublic final NativePacketPayload sendCommand(Message queryPacket, boolean skipCheck, int timeoutMillis)
ProtocolsendCommand in interface Protocol<NativePacketPayload>queryPacket - a packet pre-loaded with data for the protocol (eg.
from a client-side prepared statement). The first byte of
this packet is the MySQL protocol 'command' from MysqlDefsskipCheck - do not call checkErrorPacket() if truetimeoutMillis - timeoutpublic void checkTransactionState()
public NativePacketPayload checkErrorMessage()
ProtocolcheckErrorMessage in interface Protocol<NativePacketPayload>private NativePacketPayload checkErrorMessage(int command)
command - the command being issued (if used)CJException - if an error packet was receivedCJCommunicationsException - if a database error occurspublic void checkErrorMessage(NativePacketPayload resultPacket)
private void reclaimLargeSharedSendPacket()
public void clearInputStream()
public void reclaimLargeReusablePacket()
public final <T extends Resultset> T sendQueryString(Query callingQuery, java.lang.String query, java.lang.String characterEncoding, int maxRows, boolean streamResults, ColumnDefinition cachedMetadata, ProtocolEntityFactory<T,NativePacketPayload> resultSetFactory) throws java.io.IOException
T - extends ResultsetcallingQuery - Queryquery - query stringcharacterEncoding - Java encoding namemaxRows - rows limitstreamResults - whether a stream result should be createdcachedMetadata - use this metadata instead of the one provided on wireresultSetFactory - ProtocolEntityFactoryjava.io.IOException - if an i/o error occurspublic final <T extends Resultset> T sendQueryPacket(Query callingQuery, NativePacketPayload queryPacket, int maxRows, boolean streamResults, ColumnDefinition cachedMetadata, ProtocolEntityFactory<T,NativePacketPayload> resultSetFactory) throws java.io.IOException
T - extends ResultsetcallingQuery - QueryqueryPacket - NativePacketPayload containing querymaxRows - rows limitstreamResults - whether a stream result should be createdcachedMetadata - use this metadata instead of the one provided on wireresultSetFactory - ProtocolEntityFactoryjava.io.IOException - if an i/o error occurspublic <T extends Resultset> T invokeQueryInterceptorsPre(java.util.function.Supplier<java.lang.String> sql, Query interceptedQuery, boolean forceExecute)
public <M extends Message> M invokeQueryInterceptorsPre(M queryPacket, boolean forceExecute)
M - extends MessagequeryPacket - NativePacketPayload containing queryforceExecute - currently ignoredpublic <T extends Resultset> T invokeQueryInterceptorsPost(java.util.function.Supplier<java.lang.String> sql, Query interceptedQuery, T originalResultSet, boolean forceExecute)
public <M extends Message> M invokeQueryInterceptorsPost(M queryPacket, M originalResponsePacket, boolean forceExecute)
M - extends MessagequeryPacket - NativePacketPayload containing queryoriginalResponsePacket - NativePacketPayload containing responseforceExecute - currently ignoredpublic long getCurrentTimeNanosOrMillis()
public boolean hadWarnings()
public void setHadWarnings(boolean hadWarnings)
public void explainSlowQuery(java.lang.String query,
java.lang.String truncatedQuery)
query - full query stringtruncatedQuery - query string truncated for profilingpublic final void skipPacket()
CJException - if the network fails while skipping the
packet.public final void quit()
public NativePacketPayload getSharedSendPacket()
private void calculateSlowQueryThreshold()
public void changeUser(java.lang.String user,
java.lang.String password,
java.lang.String database)
changeUser in interface Protocol<NativePacketPayload>user - user namepassword - passworddatabase - database nameprotected boolean useNanosForElapsedTime()
public long getSlowQueryThreshold()
public int getCommandCount()
public void setQueryInterceptors(java.util.List<QueryInterceptor> queryInterceptors)
public java.util.List<QueryInterceptor> getQueryInterceptors()
public void setSocketTimeout(int milliseconds)
public void releaseResources()
public void connect(java.lang.String user,
java.lang.String password,
java.lang.String database)
Protocolconnect in interface Protocol<NativePacketPayload>user - DB user namepassword - DB user passworddatabase - database nameprotected boolean isDataAvailable()
public NativePacketPayload getReusablePacket()
public int getWarningCount()
public void setWarningCount(int warningCount)
public void dumpPacketRingBuffer()
public boolean versionMeetsMinimum(int major,
int minor,
int subminor)
versionMeetsMinimum in interface Protocol<NativePacketPayload>public static MysqlType findMysqlType(PropertySet propertySet, int mysqlTypeId, short colFlag, long length, LazyString tableName, LazyString originalTableName, int collationIndex, java.lang.String encoding)
public <T extends ProtocolEntity> T read(java.lang.Class<T> requiredClass, ProtocolEntityFactory<T,NativePacketPayload> protocolEntityFactory) throws java.io.IOException
read in interface Protocol<NativePacketPayload>java.io.IOExceptionpublic <T extends ProtocolEntity> T read(java.lang.Class<Resultset> requiredClass, int maxRows, boolean streamResults, NativePacketPayload resultPacket, boolean isBinaryEncoded, ColumnDefinition metadata, ProtocolEntityFactory<T,NativePacketPayload> protocolEntityFactory) throws java.io.IOException
Protocolread in interface Protocol<NativePacketPayload>T - object extending the ProtocolEntityrequiredClass - required Resultset classmaxRows - the maximum number of rows to read (-1 means all rows)streamResults - should the driver leave the results on the wire,
and read them only when needed?resultPacket - the first packet of information in the result setisBinaryEncoded - true if the binary protocol is used (for server prepared statements)metadata - use this metadata instead of the one provided on wireprotocolEntityFactory - ProtocolEntityFactory instanceProtocolEntity instancejava.io.IOException - if an error occurspublic <T extends ProtocolEntity> T readNextResultset(T currentProtocolEntity, int maxRows, boolean streamResults, boolean isBinaryEncoded, ProtocolEntityFactory<T,NativePacketPayload> resultSetFactory) throws java.io.IOException
T - extends ProtocolEntitycurrentProtocolEntity - T instancemaxRows - rows limitstreamResults - whether a stream result should be createdisBinaryEncoded - true for binary protocolresultSetFactory - ProtocolEntityFactoryjava.io.IOException - if an i/o error occurspublic <T extends Resultset> T readAllResults(int maxRows, boolean streamResults, NativePacketPayload resultPacket, boolean isBinaryEncoded, ColumnDefinition metadata, ProtocolEntityFactory<T,NativePacketPayload> resultSetFactory) throws java.io.IOException
java.io.IOExceptionpublic final <T> T readServerStatusForResultSets(NativePacketPayload rowPacket, boolean saveOldStatus)
public <T extends QueryResult> T readQueryResult(ResultBuilder<T> resultBuilder)
ProtocolreadQueryResult in interface Protocol<NativePacketPayload>T - result typeresultBuilder - ResultBuilder instanceQueryResultpublic java.io.InputStream getLocalInfileInputStream()
ProtocolgetLocalInfileInputStream in interface Protocol<NativePacketPayload>public void setLocalInfileInputStream(java.io.InputStream stream)
ProtocolsetLocalInfileInputStream in interface Protocol<NativePacketPayload>stream - input streampublic final NativePacketPayload sendFileToServer(java.lang.String fileName)
fileName - the file name to send.private java.io.BufferedInputStream getFileStream(java.lang.String fileName)
throws java.io.IOException
java.io.IOExceptionprivate int alignPacketSize(int a,
int l)
public ResultsetRows getStreamingData()
public void setStreamingData(ResultsetRows streamingData)
public void checkForOutstandingStreamingData()
public void unsetStreamingData(ResultsetRows streamer)
public void scanForAndThrowDataTruncation()
public java.lang.StringBuilder generateQueryCommentBlock(java.lang.StringBuilder buf)
public BaseMetricsHolder getMetricsHolder()
public java.lang.String getQueryComment()
ProtocolgetQueryComment in interface Protocol<NativePacketPayload>public void setQueryComment(java.lang.String comment)
ProtocolsetQueryComment in interface Protocol<NativePacketPayload>comment - query comment stringprivate void appendDeadlockStatusInformation(Session sess, java.lang.String xOpen, java.lang.StringBuilder errorBuf)
private java.lang.StringBuilder appendResultSetSlashGStyle(java.lang.StringBuilder appendTo,
Resultset rs)
public java.sql.SQLWarning convertShowWarningsToSQLWarnings(boolean forTruncationOnly)
forTruncationOnly - if this method should only scan for data truncation warningspublic ColumnDefinition readMetadata()
readMetadata in interface Protocol<NativePacketPayload>public void close()
throws java.io.IOException
close in interface Protocol<NativePacketPayload>java.io.IOExceptionpublic void configureTimeZone()
configureTimeZone in interface Protocol<NativePacketPayload>CJException - if the timezone the server is configured to use can't be
mapped to a Java timezone.public void initServerSession()
initServerSession in interface Protocol<NativePacketPayload>