Package com.mysql.cj.jdbc
Class ConnectionWrapper
java.lang.Object
com.mysql.cj.jdbc.ConnectionWrapper
- All Implemented Interfaces:
JdbcConnection
,MysqlConnection
,TransactionEventHandler
,java.lang.AutoCloseable
,java.sql.Connection
,java.sql.Wrapper
public class ConnectionWrapper extends java.lang.Object implements JdbcConnection
This class serves as a wrapper for the connection object. It is returned to the application server which may wrap it again and then return it to the
application client in response to dataSource.getConnection().
All method invocations are forwarded to underlying connection unless the close method was previously called, in which case a SQLException is thrown. The
close method performs a 'logical close' on the connection.
All SQL exceptions thrown by the physical connection are intercepted and sent to connectionEvent listeners before being thrown to client.
-
Field Summary
Fields Modifier and Type Field Description protected ExceptionInterceptor
exceptionInterceptor
protected JdbcConnection
mc
protected MysqlPooledConnection
pooledConnection
protected java.util.Map<java.lang.Class<?>,java.lang.Object>
unwrappedInterfaces
-
Constructor Summary
Constructors Constructor Description ConnectionWrapper(MysqlPooledConnection mysqlPooledConnection, JdbcConnection mysqlConnection, boolean forXa)
Construct a new LogicalHandle and set instance variables -
Method Summary
Modifier and Type Method Description void
abort(java.util.concurrent.Executor executor)
void
abortInternal()
Clobbers the physical network connection and marks this connection as closed.void
changeUser(java.lang.String userName, java.lang.String newPassword)
Changes the user on this connection by performing a re-authentication.protected void
checkAndFireConnectionError(java.sql.SQLException sqlEx)
Fires connection error event if required, before re-throwing exceptionvoid
checkClosed()
void
cleanup(java.lang.Throwable whyCleanedUp)
Destroys this connection and any underlying resources.void
clearHasTriedMaster()
Deprecated.void
clearWarnings()
java.sql.PreparedStatement
clientPrepare(java.lang.String sql)
java.sql.PreparedStatement
clientPrepare(java.lang.String sql, int resultSetType, int resultSetConcurrency)
java.sql.PreparedStatement
clientPrepareStatement(java.lang.String sql)
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
clientPrepareStatement(java.lang.String sql, int autoGenKeyIndex)
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
clientPrepareStatement(java.lang.String sql, int[] autoGenKeyIndexes)
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
clientPrepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
clientPrepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
clientPrepareStatement(java.lang.String sql, java.lang.String[] autoGenKeyColNames)
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.void
close()
The physical connection is not actually closed.protected void
close(boolean fireClosedEvent)
void
commit()
java.sql.Array
createArrayOf(java.lang.String typeName, java.lang.Object[] elements)
java.sql.Blob
createBlob()
java.sql.Clob
createClob()
java.sql.NClob
createNClob()
void
createNewIO(boolean isForReconnect)
Creates an IO channel to the server.java.sql.SQLXML
createSQLXML()
java.sql.Statement
createStatement()
java.sql.Statement
createStatement(int resultSetType, int resultSetConcurrency)
java.sql.Statement
createStatement(int arg0, int arg1, int arg2)
java.sql.Struct
createStruct(java.lang.String typeName, java.lang.Object[] attributes)
void
decachePreparedStatement(JdbcPreparedStatement pstmt)
JdbcConnection
getActiveMySQLConnection()
int
getActiveStatementCount()
Returns the number of statements active on this connection, which haven't been .close()d.boolean
getAutoCommit()
int
getAutoIncrementIncrement()
Returns the -session- value of 'auto_increment_increment' from the server if it exists, or '1' if not.CachedResultSetMetaData
getCachedMetaData(java.lang.String sql)
Returns cached metadata (or null if not cached) for the given query, which must match _exactly_.java.lang.String
getCatalog()
java.lang.String
getCharacterSetMetadata()
java.util.Properties
getClientInfo()
java.lang.String
getClientInfo(java.lang.String name)
ClientInfoProvider
getClientInfoProviderImpl()
java.lang.Object
getConnectionMutex()
java.lang.String
getDatabase()
Retrieves this connection object's current database name.ExceptionInterceptor
getExceptionInterceptor()
int
getHoldability()
java.lang.String
getHost()
java.lang.String
getHostPortPair()
long
getId()
long
getIdleFor()
Reports how long this connection has been idle.protected static ConnectionWrapper
getInstance(MysqlPooledConnection mysqlPooledConnection, JdbcConnection mysqlConnection, boolean forXa)
java.sql.DatabaseMetaData
getMetaData()
java.sql.Statement
getMetadataSafeStatement()
JdbcConnection
getMultiHostParentProxy()
JdbcConnection
getMultiHostSafeProxy()
int
getNetworkTimeout()
java.util.Properties
getProperties()
Returns the parsed and passed in properties for this connection.JdbcPropertySet
getPropertySet()
java.util.List<QueryInterceptor>
getQueryInterceptorsInstances()
java.lang.String
getSchema()
ServerVersion
getServerVersion()
Session
getSession()
int
getSessionMaxRows()
Returns the sql select limit max-rows for this session.java.lang.String
getStatementComment()
Returns the comment that will be prepended to all statements sent to the server.int
getTransactionIsolation()
java.util.Map<java.lang.String,java.lang.Class<?>>
getTypeMap()
java.lang.String
getURL()
java.lang.String
getUser()
java.sql.SQLWarning
getWarnings()
boolean
hasSameProperties(JdbcConnection c)
Does this connection have the same properties as another?boolean
hasTriedMaster()
Deprecated.void
initializeResultsMetadataFromCache(java.lang.String sql, CachedResultSetMetaData cachedMetaData, ResultSetInternalMethods resultSet)
Caches CachedResultSetMetaData that has been placed in the cache using the given SQL as a key.void
initializeSafeQueryInterceptors()
boolean
isClosed()
boolean
isInGlobalTx()
Is this connection currently a participant in an XA transaction?boolean
isProxySet()
boolean
isReadOnly()
boolean
isReadOnly(boolean useSessionStatus)
Tests to see if the connection is in Read Only Mode.boolean
isSameResource(JdbcConnection c)
Does this connection have the same resource name as the given connection (for XA)?boolean
isServerLocal()
Is the server this connection is connected to "local" (i.e.boolean
isSourceConnection()
Is this connection connected to the first host in the list if there is a list of servers in the URL?boolean
isValid(int timeout)
boolean
isWrapperFor(java.lang.Class<?> iface)
boolean
lowerCaseTableNames()
Is the server configured to use lower-case table names only?java.lang.String
nativeSQL(java.lang.String sql)
void
normalClose()
void
ping()
Detect if the connection is still good by sending a ping command to the server.void
pingInternal(boolean checkForClosedConnection, int timeoutMillis)
java.sql.CallableStatement
prepareCall(java.lang.String sql)
java.sql.CallableStatement
prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency)
java.sql.CallableStatement
prepareCall(java.lang.String arg0, int arg1, int arg2, int arg3)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql)
java.sql.PreparedStatement
prepareStatement(java.lang.String arg0, int arg1)
java.sql.PreparedStatement
prepareStatement(java.lang.String arg0, int[] arg1)
java.sql.PreparedStatement
prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)
java.sql.PreparedStatement
prepareStatement(java.lang.String arg0, int arg1, int arg2, int arg3)
java.sql.PreparedStatement
prepareStatement(java.lang.String arg0, java.lang.String[] arg1)
void
realClose(boolean calledExplicitly, boolean issueRollback, boolean skipLocalTeardown, java.lang.Throwable reason)
Closes connection and frees resources.void
recachePreparedStatement(JdbcPreparedStatement pstmt)
void
registerStatement(JdbcStatement stmt)
Register a Statement instance as open.void
releaseSavepoint(java.sql.Savepoint arg0)
void
resetServerState()
Resets the server-side state of this connection.void
rollback()
void
rollback(java.sql.Savepoint arg0)
java.sql.PreparedStatement
serverPrepareStatement(java.lang.String sql)
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
serverPrepareStatement(java.lang.String sql, int autoGenKeyIndex)
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
serverPrepareStatement(java.lang.String sql, int[] autoGenKeyIndexes)
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
serverPrepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency)
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
serverPrepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.java.sql.PreparedStatement
serverPrepareStatement(java.lang.String sql, java.lang.String[] autoGenKeyColNames)
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.void
setAutoCommit(boolean autoCommit)
void
setCatalog(java.lang.String catalog)
void
setClientInfo(java.lang.String name, java.lang.String value)
void
setClientInfo(java.util.Properties properties)
void
setDatabase(java.lang.String dbName)
Set current database for this connection.void
setFailedOver(boolean flag)
void
setHoldability(int arg0)
void
setInGlobalTx(boolean flag)
Set the state of being in a global (XA) transaction.void
setNetworkTimeout(java.util.concurrent.Executor executor, int milliseconds)
void
setProxy(JdbcConnection conn)
void
setReadOnly(boolean readOnly)
void
setReadOnlyInternal(boolean readOnlyFlag)
java.sql.Savepoint
setSavepoint()
java.sql.Savepoint
setSavepoint(java.lang.String arg0)
void
setSchema(java.lang.String schema)
void
setSessionMaxRows(int max)
Sets the sql select limit max-rows for this session if different from current.void
setStatementComment(java.lang.String comment)
Sets the comment that will be prepended to all statements sent to the server.void
setTransactionIsolation(int level)
void
setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>> map)
void
shutdownServer()
Used by MiniAdmin to shutdown a MySQL serverboolean
storesLowerCaseTableName()
void
throwConnectionClosedException()
void
transactionBegun()
void
transactionCompleted()
void
unregisterStatement(JdbcStatement stmt)
Remove the given statement from the list of open statementsvoid
unSafeQueryInterceptors()
<T> T
unwrap(java.lang.Class<T> iface)
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
mc
-
pooledConnection
-
unwrappedInterfaces
protected java.util.Map<java.lang.Class<?>,java.lang.Object> unwrappedInterfaces -
exceptionInterceptor
-
-
Constructor Details
-
ConnectionWrapper
public ConnectionWrapper(MysqlPooledConnection mysqlPooledConnection, JdbcConnection mysqlConnection, boolean forXa) throws java.sql.SQLExceptionConstruct a new LogicalHandle and set instance variables- Parameters:
mysqlPooledConnection
- reference to object that instantiated this objectmysqlConnection
- physical connection to dbforXa
- is it for XA connection?- Throws:
java.sql.SQLException
- if an error occurs.
-
-
Method Details
-
getInstance
protected static ConnectionWrapper getInstance(MysqlPooledConnection mysqlPooledConnection, JdbcConnection mysqlConnection, boolean forXa) throws java.sql.SQLException- Throws:
java.sql.SQLException
-
setAutoCommit
public void setAutoCommit(boolean autoCommit) throws java.sql.SQLException- Specified by:
setAutoCommit
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getAutoCommit
public boolean getAutoCommit() throws java.sql.SQLException- Specified by:
getAutoCommit
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setDatabase
public void setDatabase(java.lang.String dbName) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Set current database for this connection.- Specified by:
setDatabase
in interfaceJdbcConnection
- Parameters:
dbName
- the database for this connection to use- Throws:
java.sql.SQLException
- if a database access error occurs
-
getDatabase
public java.lang.String getDatabase() throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Retrieves this connection object's current database name.- Specified by:
getDatabase
in interfaceJdbcConnection
- Returns:
- current database name
- Throws:
java.sql.SQLException
- if an error occurs
-
setCatalog
public void setCatalog(java.lang.String catalog) throws java.sql.SQLException- Specified by:
setCatalog
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getCatalog
public java.lang.String getCatalog() throws java.sql.SQLException- Specified by:
getCatalog
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
isClosed
public boolean isClosed() throws java.sql.SQLException- Specified by:
isClosed
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
isSourceConnection
public boolean isSourceConnection()Description copied from interface:JdbcConnection
Is this connection connected to the first host in the list if there is a list of servers in the URL?- Specified by:
isSourceConnection
in interfaceJdbcConnection
- Returns:
- true if this connection is connected to the first in the list.
-
setHoldability
public void setHoldability(int arg0) throws java.sql.SQLException- Specified by:
setHoldability
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getHoldability
public int getHoldability() throws java.sql.SQLException- Specified by:
getHoldability
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getIdleFor
public long getIdleFor()Description copied from interface:JdbcConnection
Reports how long this connection has been idle. This time (reported in milliseconds) is updated once a query has completed.- Specified by:
getIdleFor
in interfaceJdbcConnection
- Returns:
- number of ms that this connection has been idle, 0 if the driver is busy retrieving results.
-
getMetaData
public java.sql.DatabaseMetaData getMetaData() throws java.sql.SQLException- Specified by:
getMetaData
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setReadOnly
public void setReadOnly(boolean readOnly) throws java.sql.SQLException- Specified by:
setReadOnly
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
isReadOnly
public boolean isReadOnly() throws java.sql.SQLException- Specified by:
isReadOnly
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setSavepoint
public java.sql.Savepoint setSavepoint() throws java.sql.SQLException- Specified by:
setSavepoint
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setSavepoint
public java.sql.Savepoint setSavepoint(java.lang.String arg0) throws java.sql.SQLException- Specified by:
setSavepoint
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setTransactionIsolation
public void setTransactionIsolation(int level) throws java.sql.SQLException- Specified by:
setTransactionIsolation
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getTransactionIsolation
public int getTransactionIsolation() throws java.sql.SQLException- Specified by:
getTransactionIsolation
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getTypeMap
public java.util.Map<java.lang.String,java.lang.Class<?>> getTypeMap() throws java.sql.SQLException- Specified by:
getTypeMap
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getWarnings
public java.sql.SQLWarning getWarnings() throws java.sql.SQLException- Specified by:
getWarnings
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
clearWarnings
public void clearWarnings() throws java.sql.SQLException- Specified by:
clearWarnings
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
close
public void close() throws java.sql.SQLExceptionThe physical connection is not actually closed. the physical connection is closed when the application server calls mysqlPooledConnection.close(). this object is de-referenced by the pooled connection each time mysqlPooledConnection.getConnection() is called by app server.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
- if an error occurs
-
commit
public void commit() throws java.sql.SQLException- Specified by:
commit
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createStatement
public java.sql.Statement createStatement() throws java.sql.SQLException- Specified by:
createStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createStatement
public java.sql.Statement createStatement(int resultSetType, int resultSetConcurrency) throws java.sql.SQLException- Specified by:
createStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createStatement
public java.sql.Statement createStatement(int arg0, int arg1, int arg2) throws java.sql.SQLException- Specified by:
createStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
nativeSQL
public java.lang.String nativeSQL(java.lang.String sql) throws java.sql.SQLException- Specified by:
nativeSQL
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql) throws java.sql.SQLException- Specified by:
prepareCall
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException- Specified by:
prepareCall
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareCall
public java.sql.CallableStatement prepareCall(java.lang.String arg0, int arg1, int arg2, int arg3) throws java.sql.SQLException- Specified by:
prepareCall
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
clientPrepare
public java.sql.PreparedStatement clientPrepare(java.lang.String sql) throws java.sql.SQLException- Throws:
java.sql.SQLException
-
clientPrepare
public java.sql.PreparedStatement clientPrepare(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql) throws java.sql.SQLException- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLException- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String arg0, int arg1, int arg2, int arg3) throws java.sql.SQLException- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String arg0, int arg1) throws java.sql.SQLException- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String arg0, int[] arg1) throws java.sql.SQLException- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
prepareStatement
public java.sql.PreparedStatement prepareStatement(java.lang.String arg0, java.lang.String[] arg1) throws java.sql.SQLException- Specified by:
prepareStatement
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
releaseSavepoint
public void releaseSavepoint(java.sql.Savepoint arg0) throws java.sql.SQLException- Specified by:
releaseSavepoint
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
rollback
public void rollback() throws java.sql.SQLException- Specified by:
rollback
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
rollback
public void rollback(java.sql.Savepoint arg0) throws java.sql.SQLException- Specified by:
rollback
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
isSameResource
Description copied from interface:JdbcConnection
Does this connection have the same resource name as the given connection (for XA)?- Specified by:
isSameResource
in interfaceJdbcConnection
- Parameters:
c
- connection- Returns:
- true if it is the same one
-
close
protected void close(boolean fireClosedEvent) throws java.sql.SQLException- Throws:
java.sql.SQLException
-
checkClosed
public void checkClosed()- Specified by:
checkClosed
in interfaceMysqlConnection
-
isInGlobalTx
public boolean isInGlobalTx()Description copied from interface:JdbcConnection
Is this connection currently a participant in an XA transaction?- Specified by:
isInGlobalTx
in interfaceJdbcConnection
- Returns:
- true if this connection currently a participant in an XA transaction
-
setInGlobalTx
public void setInGlobalTx(boolean flag)Description copied from interface:JdbcConnection
Set the state of being in a global (XA) transaction.- Specified by:
setInGlobalTx
in interfaceJdbcConnection
- Parameters:
flag
- the state flag
-
ping
public void ping() throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Detect if the connection is still good by sending a ping command to the server.- Specified by:
ping
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
- if the ping fails
-
changeUser
public void changeUser(java.lang.String userName, java.lang.String newPassword) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Changes the user on this connection by performing a re-authentication. If authentication fails, the connection is failed.- Specified by:
changeUser
in interfaceJdbcConnection
- Parameters:
userName
- the username to authenticate withnewPassword
- the password to authenticate with- Throws:
java.sql.SQLException
- if authentication fails, or some other error occurs while performing the command.
-
clearHasTriedMaster
@Deprecated public void clearHasTriedMaster()Deprecated.- Specified by:
clearHasTriedMaster
in interfaceJdbcConnection
-
clientPrepareStatement
public java.sql.PreparedStatement clientPrepareStatement(java.lang.String sql) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
clientPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statement- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String)
-
clientPrepareStatement
public java.sql.PreparedStatement clientPrepareStatement(java.lang.String sql, int autoGenKeyIndex) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
clientPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementautoGenKeyIndex
- autoGenKeyIndex- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, int)
-
clientPrepareStatement
public java.sql.PreparedStatement clientPrepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
clientPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementresultSetType
- resultSetTyperesultSetConcurrency
- resultSetConcurrency- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, int, int)
-
clientPrepareStatement
public java.sql.PreparedStatement clientPrepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
clientPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementresultSetType
- resultSetTyperesultSetConcurrency
- resultSetConcurrencyresultSetHoldability
- resultSetHoldability- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, int, int, int)
-
clientPrepareStatement
public java.sql.PreparedStatement clientPrepareStatement(java.lang.String sql, int[] autoGenKeyIndexes) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
clientPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementautoGenKeyIndexes
- autoGenKeyIndexes- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, int[])
-
clientPrepareStatement
public java.sql.PreparedStatement clientPrepareStatement(java.lang.String sql, java.lang.String[] autoGenKeyColNames) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the client, using client-side emulation (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
clientPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementautoGenKeyColNames
- autoGenKeyColNames- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, String[])
-
getActiveStatementCount
public int getActiveStatementCount()Description copied from interface:JdbcConnection
Returns the number of statements active on this connection, which haven't been .close()d.- Specified by:
getActiveStatementCount
in interfaceJdbcConnection
- Returns:
- the number of active statements
-
getStatementComment
public java.lang.String getStatementComment()Description copied from interface:JdbcConnection
Returns the comment that will be prepended to all statements sent to the server.- Specified by:
getStatementComment
in interfaceJdbcConnection
- Returns:
- the comment that will be prepended to all statements sent to the server.
-
hasTriedMaster
@Deprecated public boolean hasTriedMaster()Deprecated.Description copied from interface:JdbcConnection
Has this connection tried to execute a query on the "source" server (first host in a multiple host list).- Specified by:
hasTriedMaster
in interfaceJdbcConnection
- Returns:
- true if it has tried
-
lowerCaseTableNames
public boolean lowerCaseTableNames()Description copied from interface:JdbcConnection
Is the server configured to use lower-case table names only?- Specified by:
lowerCaseTableNames
in interfaceJdbcConnection
- Returns:
- true if lower_case_table_names is 'on'
-
resetServerState
public void resetServerState() throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Resets the server-side state of this connection. Doesn't work if isParanoid() is set (it will become a no-op in this case). Usually only used from connection pooling code.- Specified by:
resetServerState
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
- if the operation fails while resetting server state.
-
serverPrepareStatement
public java.sql.PreparedStatement serverPrepareStatement(java.lang.String sql) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
serverPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statement- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String)
-
serverPrepareStatement
public java.sql.PreparedStatement serverPrepareStatement(java.lang.String sql, int autoGenKeyIndex) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
serverPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementautoGenKeyIndex
- autoGenKeyIndex- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, int)
-
serverPrepareStatement
public java.sql.PreparedStatement serverPrepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
serverPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementresultSetType
- resultSetTyperesultSetConcurrency
- resultSetConcurrency- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, int, int)
-
serverPrepareStatement
public java.sql.PreparedStatement serverPrepareStatement(java.lang.String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
serverPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementresultSetType
- resultSetTyperesultSetConcurrency
- resultSetConcurrencyresultSetHoldability
- resultSetHoldability- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, int, int, int)
-
serverPrepareStatement
public java.sql.PreparedStatement serverPrepareStatement(java.lang.String sql, int[] autoGenKeyIndexes) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
serverPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementautoGenKeyIndexes
- autoGenKeyIndexes- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, int[])
-
serverPrepareStatement
public java.sql.PreparedStatement serverPrepareStatement(java.lang.String sql, java.lang.String[] autoGenKeyColNames) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Prepares a statement on the server (irregardless of the configuration property 'useServerPrepStmts') with the same semantics as the java.sql.Connection.prepareStatement() method with the same argument types.- Specified by:
serverPrepareStatement
in interfaceJdbcConnection
- Parameters:
sql
- statementautoGenKeyColNames
- autoGenKeyColNames- Returns:
- prepared statement
- Throws:
java.sql.SQLException
- if an error occurs- See Also:
Connection.prepareStatement(String, String[])
-
setFailedOver
public void setFailedOver(boolean flag)- Specified by:
setFailedOver
in interfaceJdbcConnection
- Parameters:
flag
- The failedOver flag to set.
-
setStatementComment
public void setStatementComment(java.lang.String comment)Description copied from interface:JdbcConnection
Sets the comment that will be prepended to all statements sent to the server. Do not use slash-star or star-slash tokens in the comment as these will be added by the driver itself.- Specified by:
setStatementComment
in interfaceJdbcConnection
- Parameters:
comment
- the comment that will be prepended to all statements sent to the server.
-
shutdownServer
public void shutdownServer() throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Used by MiniAdmin to shutdown a MySQL server- Specified by:
shutdownServer
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
- if the command can not be issued.
-
getAutoIncrementIncrement
public int getAutoIncrementIncrement()Description copied from interface:JdbcConnection
Returns the -session- value of 'auto_increment_increment' from the server if it exists, or '1' if not.- Specified by:
getAutoIncrementIncrement
in interfaceJdbcConnection
- Returns:
- the -session- value of 'auto_increment_increment'
-
getExceptionInterceptor
- Specified by:
getExceptionInterceptor
in interfaceMysqlConnection
-
hasSameProperties
Description copied from interface:JdbcConnection
Does this connection have the same properties as another?- Specified by:
hasSameProperties
in interfaceJdbcConnection
- Parameters:
c
- connection- Returns:
- true if has the same properties
-
getProperties
public java.util.Properties getProperties()Description copied from interface:MysqlConnection
Returns the parsed and passed in properties for this connection.- Specified by:
getProperties
in interfaceMysqlConnection
- Returns:
Properties
-
getHost
public java.lang.String getHost()- Specified by:
getHost
in interfaceJdbcConnection
-
setProxy
- Specified by:
setProxy
in interfaceJdbcConnection
-
setTypeMap
public void setTypeMap(java.util.Map<java.lang.String,java.lang.Class<?>> map) throws java.sql.SQLException- Specified by:
setTypeMap
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
isServerLocal
public boolean isServerLocal() throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Is the server this connection is connected to "local" (i.e. same host) as the application?- Specified by:
isServerLocal
in interfaceJdbcConnection
- Returns:
- true if the server is "local"
- Throws:
java.sql.SQLException
- if an error occurs
-
setSchema
public void setSchema(java.lang.String schema) throws java.sql.SQLException- Specified by:
setSchema
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getSchema
public java.lang.String getSchema() throws java.sql.SQLException- Specified by:
getSchema
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
abort
public void abort(java.util.concurrent.Executor executor) throws java.sql.SQLException- Specified by:
abort
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setNetworkTimeout
public void setNetworkTimeout(java.util.concurrent.Executor executor, int milliseconds) throws java.sql.SQLException- Specified by:
setNetworkTimeout
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getNetworkTimeout
public int getNetworkTimeout() throws java.sql.SQLException- Specified by:
getNetworkTimeout
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
abortInternal
public void abortInternal() throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Clobbers the physical network connection and marks this connection as closed.- Specified by:
abortInternal
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
- if an error occurs
-
getConnectionMutex
public java.lang.Object getConnectionMutex()- Specified by:
getConnectionMutex
in interfaceMysqlConnection
-
getSessionMaxRows
public int getSessionMaxRows()Description copied from interface:JdbcConnection
Returns the sql select limit max-rows for this session.- Specified by:
getSessionMaxRows
in interfaceJdbcConnection
- Returns:
- int max rows
-
setSessionMaxRows
public void setSessionMaxRows(int max) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Sets the sql select limit max-rows for this session if different from current.- Specified by:
setSessionMaxRows
in interfaceJdbcConnection
- Parameters:
max
- the new max-rows value to set.- Throws:
java.sql.SQLException
- if a database error occurs issuing the statement that sets the limit.
-
createClob
public java.sql.Clob createClob() throws java.sql.SQLException- Specified by:
createClob
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createBlob
public java.sql.Blob createBlob() throws java.sql.SQLException- Specified by:
createBlob
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createNClob
public java.sql.NClob createNClob() throws java.sql.SQLException- Specified by:
createNClob
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createSQLXML
public java.sql.SQLXML createSQLXML() throws java.sql.SQLException- Specified by:
createSQLXML
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
isValid
public boolean isValid(int timeout) throws java.sql.SQLException- Specified by:
isValid
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
setClientInfo
public void setClientInfo(java.lang.String name, java.lang.String value) throws java.sql.SQLClientInfoException- Specified by:
setClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLClientInfoException
-
setClientInfo
public void setClientInfo(java.util.Properties properties) throws java.sql.SQLClientInfoException- Specified by:
setClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLClientInfoException
-
getClientInfo
public java.lang.String getClientInfo(java.lang.String name) throws java.sql.SQLException- Specified by:
getClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
getClientInfo
public java.util.Properties getClientInfo() throws java.sql.SQLException- Specified by:
getClientInfo
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createArrayOf
public java.sql.Array createArrayOf(java.lang.String typeName, java.lang.Object[] elements) throws java.sql.SQLException- Specified by:
createArrayOf
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
createStruct
public java.sql.Struct createStruct(java.lang.String typeName, java.lang.Object[] attributes) throws java.sql.SQLException- Specified by:
createStruct
in interfacejava.sql.Connection
- Throws:
java.sql.SQLException
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException- Specified by:
unwrap
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
isWrapperFor
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException- Specified by:
isWrapperFor
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
getSession
- Specified by:
getSession
in interfaceMysqlConnection
-
getId
public long getId()- Specified by:
getId
in interfaceMysqlConnection
-
getURL
public java.lang.String getURL()- Specified by:
getURL
in interfaceMysqlConnection
-
getUser
public java.lang.String getUser()- Specified by:
getUser
in interfaceMysqlConnection
-
createNewIO
public void createNewIO(boolean isForReconnect)Description copied from interface:MysqlConnection
Creates an IO channel to the server.- Specified by:
createNewIO
in interfaceMysqlConnection
- Parameters:
isForReconnect
- is this request for a re-connect
-
isProxySet
public boolean isProxySet()- Specified by:
isProxySet
in interfaceJdbcConnection
-
getPropertySet
- Specified by:
getPropertySet
in interfaceJdbcConnection
- Specified by:
getPropertySet
in interfaceMysqlConnection
-
getCachedMetaData
Description copied from interface:JdbcConnection
Returns cached metadata (or null if not cached) for the given query, which must match _exactly_. This method is synchronized by the caller on getMutex(), so if calling this method from internal code in the driver, make sure it's synchronized on the mutex that guards communication with the server.- Specified by:
getCachedMetaData
in interfaceJdbcConnection
- Parameters:
sql
- the query that is the key to the cache- Returns:
- metadata cached for the given SQL, or none if it doesn't exist.
-
getCharacterSetMetadata
public java.lang.String getCharacterSetMetadata()- Specified by:
getCharacterSetMetadata
in interfaceJdbcConnection
- Returns:
- Returns the characterSetMetadata.
-
getMetadataSafeStatement
public java.sql.Statement getMetadataSafeStatement() throws java.sql.SQLException- Specified by:
getMetadataSafeStatement
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
-
getServerVersion
- Specified by:
getServerVersion
in interfaceJdbcConnection
-
getQueryInterceptorsInstances
- Specified by:
getQueryInterceptorsInstances
in interfaceJdbcConnection
-
initializeResultsMetadataFromCache
public void initializeResultsMetadataFromCache(java.lang.String sql, CachedResultSetMetaData cachedMetaData, ResultSetInternalMethods resultSet) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Caches CachedResultSetMetaData that has been placed in the cache using the given SQL as a key. This method is synchronized by the caller on getMutex(), so if calling this method from internal code in the driver, make sure it's synchronized on the mutex that guards communication with the server.- Specified by:
initializeResultsMetadataFromCache
in interfaceJdbcConnection
- Parameters:
sql
- the query that the metadata pertains too.cachedMetaData
- metadata (if it exists) to populate the cache.resultSet
- the result set to retreive metadata from, or apply to.- Throws:
java.sql.SQLException
- if an error occurs
-
initializeSafeQueryInterceptors
public void initializeSafeQueryInterceptors() throws java.sql.SQLException- Specified by:
initializeSafeQueryInterceptors
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
-
isReadOnly
public boolean isReadOnly(boolean useSessionStatus) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Tests to see if the connection is in Read Only Mode.- Specified by:
isReadOnly
in interfaceJdbcConnection
- Parameters:
useSessionStatus
- in some cases, for example when restoring connection with autoReconnect=true, we can rely only on saved readOnly state, so use useSessionStatus=false in that case- Returns:
- true if the connection is read only
- Throws:
java.sql.SQLException
- if a database access error occurs
-
pingInternal
public void pingInternal(boolean checkForClosedConnection, int timeoutMillis) throws java.sql.SQLException- Specified by:
pingInternal
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
-
realClose
public void realClose(boolean calledExplicitly, boolean issueRollback, boolean skipLocalTeardown, java.lang.Throwable reason) throws java.sql.SQLExceptionDescription copied from interface:JdbcConnection
Closes connection and frees resources.- Specified by:
realClose
in interfaceJdbcConnection
- Parameters:
calledExplicitly
- is this being called from close()issueRollback
- should a rollback() be issued?skipLocalTeardown
- if true, driver tries to close connection normally, performing rollbacks, closing open statements etc; otherwise the force close is performedreason
- the exception caused this method call- Throws:
java.sql.SQLException
- if an error occurs
-
recachePreparedStatement
- Specified by:
recachePreparedStatement
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
-
decachePreparedStatement
- Specified by:
decachePreparedStatement
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
-
registerStatement
Description copied from interface:JdbcConnection
Register a Statement instance as open.- Specified by:
registerStatement
in interfaceJdbcConnection
- Parameters:
stmt
- the Statement instance to remove
-
setReadOnlyInternal
public void setReadOnlyInternal(boolean readOnlyFlag) throws java.sql.SQLException- Specified by:
setReadOnlyInternal
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
-
storesLowerCaseTableName
public boolean storesLowerCaseTableName()- Specified by:
storesLowerCaseTableName
in interfaceJdbcConnection
-
throwConnectionClosedException
public void throwConnectionClosedException() throws java.sql.SQLException- Specified by:
throwConnectionClosedException
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
-
transactionBegun
public void transactionBegun()- Specified by:
transactionBegun
in interfaceTransactionEventHandler
-
transactionCompleted
public void transactionCompleted()- Specified by:
transactionCompleted
in interfaceTransactionEventHandler
-
unregisterStatement
Description copied from interface:JdbcConnection
Remove the given statement from the list of open statements- Specified by:
unregisterStatement
in interfaceJdbcConnection
- Parameters:
stmt
- the Statement instance to remove
-
unSafeQueryInterceptors
public void unSafeQueryInterceptors() throws java.sql.SQLException- Specified by:
unSafeQueryInterceptors
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
-
getMultiHostSafeProxy
- Specified by:
getMultiHostSafeProxy
in interfaceJdbcConnection
-
getMultiHostParentProxy
- Specified by:
getMultiHostParentProxy
in interfaceJdbcConnection
-
getActiveMySQLConnection
- Specified by:
getActiveMySQLConnection
in interfaceJdbcConnection
-
getClientInfoProviderImpl
- Specified by:
getClientInfoProviderImpl
in interfaceJdbcConnection
- Throws:
java.sql.SQLException
-
getHostPortPair
public java.lang.String getHostPortPair()- Specified by:
getHostPortPair
in interfaceJdbcConnection
-
normalClose
public void normalClose()- Specified by:
normalClose
in interfaceMysqlConnection
-
cleanup
public void cleanup(java.lang.Throwable whyCleanedUp)Description copied from interface:MysqlConnection
Destroys this connection and any underlying resources.- Specified by:
cleanup
in interfaceMysqlConnection
- Parameters:
whyCleanedUp
- exception caused the connection clean up
-
checkAndFireConnectionError
protected void checkAndFireConnectionError(java.sql.SQLException sqlEx) throws java.sql.SQLExceptionFires connection error event if required, before re-throwing exception- Parameters:
sqlEx
- the SQLException that has occurred- Throws:
java.sql.SQLException
- (rethrown)
-