Package com.mysql.cj.jdbc.ha
Class LoadBalancedAutoCommitInterceptor
java.lang.Object
com.mysql.cj.jdbc.ha.LoadBalancedAutoCommitInterceptor
- All Implemented Interfaces:
QueryInterceptor
public class LoadBalancedAutoCommitInterceptor extends java.lang.Object implements QueryInterceptor
-
Constructor Summary
Constructors Constructor Description LoadBalancedAutoCommitInterceptor()
-
Method Summary
Modifier and Type Method Description void
destroy()
Called by the driver when this extension should release any resources it is holding and cleanup internally before the connection is closed.boolean
executeTopLevelOnly()
Should the driver execute this interceptor only for the "original" top-level query, and not put it in the execution path for queries that may be executed from other interceptors? If an interceptor issues queries using the connection it was created for, and does not returntrue
for this method, it must ensure that it does not cause infinite recursion.QueryInterceptor
init(MysqlConnection connection, java.util.Properties props, Log log)
Called once per connection that wants to use the interceptor The properties are the same ones passed in in the URL or arguments to Driver.connect() or DriverManager.getConnection().<T extends Resultset>
TpostProcess(java.util.function.Supplier<java.lang.String> sql, Query interceptedQuery, T originalResultSet, ServerSession serverSession)
Called after the given query has been sent to the server for processing.<T extends Resultset>
TpreProcess(java.util.function.Supplier<java.lang.String> sql, Query interceptedQuery)
Called before the given query is going to be sent to the server for processing.
-
Constructor Details
-
LoadBalancedAutoCommitInterceptor
public LoadBalancedAutoCommitInterceptor()
-
-
Method Details
-
destroy
public void destroy()Description copied from interface:QueryInterceptor
Called by the driver when this extension should release any resources it is holding and cleanup internally before the connection is closed.- Specified by:
destroy
in interfaceQueryInterceptor
-
executeTopLevelOnly
public boolean executeTopLevelOnly()Description copied from interface:QueryInterceptor
Should the driver execute this interceptor only for the "original" top-level query, and not put it in the execution path for queries that may be executed from other interceptors? If an interceptor issues queries using the connection it was created for, and does not returntrue
for this method, it must ensure that it does not cause infinite recursion.- Specified by:
executeTopLevelOnly
in interfaceQueryInterceptor
- Returns:
- true if the driver should ensure that this interceptor is only executed for the top-level "original" query.
-
init
Description copied from interface:QueryInterceptor
Called once per connection that wants to use the interceptor The properties are the same ones passed in in the URL or arguments to Driver.connect() or DriverManager.getConnection().- Specified by:
init
in interfaceQueryInterceptor
- Parameters:
connection
- the connection for which this interceptor is being createdprops
- configuration values as passed to the connection. Note that in order to support javax.sql.DataSources, configuration properties specific to an interceptor must be passed via setURL() on the DataSource. QueryInterceptor properties are not exposed via accessor/mutator methods on DataSources.log
- logger- Returns:
QueryInterceptor
-
postProcess
public <T extends Resultset> T postProcess(java.util.function.Supplier<java.lang.String> sql, Query interceptedQuery, T originalResultSet, ServerSession serverSession)Description copied from interface:QueryInterceptor
Called after the given query has been sent to the server for processing. Interceptors are free to inspect the "original" result set, and if a different result set is returned by the interceptor, it is used in place of the "original" result set. This method will be called while the connection-level mutex is held, so it will only be called from one thread at a time.- Specified by:
postProcess
in interfaceQueryInterceptor
- Type Parameters:
T
-Resultset
object- Parameters:
sql
- the Supplier for SQL representation of the queryinterceptedQuery
- the actualQuery
instance being interceptedoriginalResultSet
- aResultset
created from query executionserverSession
-ServerSession
object after the query execution- Returns:
- a
Resultset
that should be returned to the application instead of results that are created from actual execution of the intercepted query.
-
preProcess
public <T extends Resultset> T preProcess(java.util.function.Supplier<java.lang.String> sql, Query interceptedQuery)Description copied from interface:QueryInterceptor
Called before the given query is going to be sent to the server for processing. Interceptors are free to return a result set (which must implement the interfaceResultset
), and if so, the server will not execute the query, and the given result set will be returned to the application instead. This method will be called while the connection-level mutex is held, so it will only be called from one thread at a time.- Specified by:
preProcess
in interfaceQueryInterceptor
- Type Parameters:
T
-Resultset
object- Parameters:
sql
- the Supplier for SQL representation of the queryinterceptedQuery
- the actualQuery
instance being intercepted- Returns:
- a
Resultset
that should be returned to the application instead of results that are created from actual execution of the intercepted query.
-