Class ResultSetScannerInterceptor

java.lang.Object
com.mysql.cj.jdbc.interceptors.ResultSetScannerInterceptor
All Implemented Interfaces:
QueryInterceptor

public class ResultSetScannerInterceptor
extends java.lang.Object
implements QueryInterceptor
  • Field Summary

    Fields 
    Modifier and Type Field Description
    static java.lang.String PNAME_resultSetScannerRegex  
    protected java.util.regex.Pattern regexP  
  • Constructor Summary

    Constructors 
    Constructor Description
    ResultSetScannerInterceptor()  
  • 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 return true for this method, it must ensure that it does not cause infinite recursion.
    QueryInterceptor init​(MysqlConnection conn, 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>
    T
    postProcess​(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>
    T
    preProcess​(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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface com.mysql.cj.interceptors.QueryInterceptor

    postProcess, preProcess
  • Field Details

  • Constructor Details

  • Method Details

    • init

      public QueryInterceptor init​(MysqlConnection conn, java.util.Properties props, Log log)
      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 interface QueryInterceptor
      Parameters:
      conn - the connection for which this interceptor is being created
      props - 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 interface QueryInterceptor
      Type Parameters:
      T - Resultset object
      Parameters:
      sql - the Supplier for SQL representation of the query
      interceptedQuery - the actual Query instance being intercepted
      originalResultSet - a Resultset created from query execution
      serverSession - 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 interface Resultset), 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 interface QueryInterceptor
      Type Parameters:
      T - Resultset object
      Parameters:
      sql - the Supplier for SQL representation of the query
      interceptedQuery - the actual Query 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.
    • 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 return true for this method, it must ensure that it does not cause infinite recursion.
      Specified by:
      executeTopLevelOnly in interface QueryInterceptor
      Returns:
      true if the driver should ensure that this interceptor is only executed for the top-level "original" query.
    • 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 interface QueryInterceptor