- All Superinterfaces:
EventListener,Serializable
- All Known Implementing Classes:
CallbackExecuteListener,DefaultExecuteListener,LoggerListener,StopWatchListener
Query, Routine, or ResultSet
render, prepare, bind, execute, fetch steps.
ExecuteListener is a base type for loggers, debuggers,
profilers, data collectors that can be hooked into a jOOQ DSLContext
using the Configuration.executeListenerProviders() property, passing
Settings to
DSL.using(java.sql.Connection, SQLDialect, Settings). jOOQ will use
that configuration at the beginning of a query execution event to get a hold
of all provided listeners via ExecuteListenerProvider.provide(). The
DefaultExecuteListenerProvider will always return the same
ExecuteListener instance, but user defined providers can define any
custom listener lifecycle, e.g. one instance per execution to store state
between the moment when a query execution starts, and the moment when a query
execution finishes in the listener. Alternatively, such data can be stored in
Scope.data().
Advanced ExecuteListeners can also provide custom
implementations of Connection, PreparedStatement,
ResultSet, SQLException or RuntimeException to jOOQ
in appropriate methods.
The following table explains how every type of statement / operation invokes
callback methods in the correct order for all registered
ExecuteListeners. Find a legend below the table for the various
use cases.
| Callback method | Use case [1] | Use case [2] | Use case [3] | Use case [4] | Use case [5] | Use case [6] |
|---|---|---|---|---|---|---|
start(ExecuteContext) |
Yes, 1x | Yes, 1x | Yes, 1x | Yes, 1x | Yes, 1x | Yes, 1x |
renderStart(ExecuteContext) |
Yes, 1x | Yes, 1x | No | Yes, 1x | Yes, Nx (for every query) | Yes, 1x |
renderEnd(ExecuteContext) |
Yes, 1x | Yes, 1x | No | Yes, 1x | Yes, Nx (for every query) | Yes, 1x |
prepareStart(ExecuteContext) |
Yes, 1x | Yes, 1x | No | Yes, 1x | Yes, Nx (for every query) | Yes, 1x |
prepareEnd(ExecuteContext) |
Yes, 1x | Yes, 1x | No | Yes, 1x | Yes, Nx (for every query) | Yes, 1x |
bindStart(ExecuteContext) |
Yes, 1x | No | No | Yes, Nx (for every value set) | No | Yes, 1x |
bindEnd(ExecuteContext) |
Yes, 1x | No | No | Yes, Nx (for every value set) | No | Yes, 1 |
executeStart(ExecuteContext) |
Yes, 1x | Yes, 1x | No | Yes, 1x | Yes, 1x | Yes, 1x |
executeEnd(ExecuteContext) |
Yes, 1x | Yes, 1x | No | Yes, 1x | Yes, 1x | Yes, 1x |
outStart(ExecuteContext) |
No | No | No | No | No | Yes, 1x |
outEnd(ExecuteContext) |
No | No | No | No | No | Yes, 1x |
fetchStart(ExecuteContext) |
Yes, 1x (Nx for ResultQuery.fetchMany() |
Yes, 1x (Nx for ResultQuery.fetchMany() |
Yes, 1x | No | No | No |
resultStart(ExecuteContext) |
Maybe, 1x (Nx for Cursor.fetchNext(int) |
Maybe, 1x (Nx for Cursor.fetchNext(int) |
Maybe, 1x | No | No | No |
recordStart(ExecuteContext) |
Yes, Nx | Yes, Nx | Yes, Nx | No | No | No |
recordEnd(ExecuteContext) |
Yes, Nx | Yes, Nx | Yes, Nx | No | No | No |
resultEnd(ExecuteContext) |
Maybe, 1x (Nx for Cursor.fetchNext(int) |
Maybe, 1x (Nx for Cursor.fetchNext(int) |
Maybe, 1x | No | No | No |
fetchEnd(ExecuteContext) |
Yes, 1x (Nx for ResultQuery.fetchMany() |
Yes, 1x (Nx for ResultQuery.fetchMany() |
Yes, 1x | No | No | No |
end(ExecuteContext) |
Yes, 1x | Yes, 1x | Yes, 1x | Yes, 1x | Yes, 1x | Yes, 1x |
warning(ExecuteContext) |
Maybe, 1x | Maybe, 1x | Maybe, 1x | Maybe, 1x | Maybe, 1x | Maybe, 1x |
exception(ExecuteContext) |
Maybe, 1x | Maybe, 1x | Maybe, 1x | Maybe, 1x | Maybe, 1x | Maybe, 1x |
Legend:
- Used with
ResultQueryof statement typeStatementType.PREPARED_STATEMENT - Used with
ResultQueryof statement typeStatementType.STATIC_STATEMENT - Used with
DSLContext.fetch(ResultSet)or withResultQuery.fetch() - Used with
DSLContext.batch(Query) - Used with
DSLContext.batch(Query[]) - Used with
DSLContext.batch(Queries) - Used with a
Routinestandalone call
If nothing is specified, the default is to use LoggerListener as the
only event listener, as configured in Settings.isExecuteLogging()
- Author:
- Lukas Eder
-
Method Summary
Modifier and TypeMethodDescriptiondefault voidbindEnd(ExecuteContext ctx) Called after bind variables to thePreparedStatement.default voidbindStart(ExecuteContext ctx) Called before bind variables to thePreparedStatement.default voidend(ExecuteContext ctx) Called at the end of the execution lifecycle.default voidexception(ExecuteContext ctx) Called in the event of an exception at any moment of the execution lifecycle.default voidexecuteEnd(ExecuteContext ctx) Called after executing a statement.default voidCalled before executing a statement.default voidfetchEnd(ExecuteContext ctx) Called after fetching data from aResultSet.default voidfetchStart(ExecuteContext ctx) Called before fetching data from aResultSetinto aResulttype.static CallbackExecuteListeneronBindEnd(ExecuteEventHandler handler) Create anExecuteListenerwith abindEnd(ExecuteContext)implementation.static CallbackExecuteListeneronBindStart(ExecuteEventHandler handler) Create anExecuteListenerwith abindStart(ExecuteContext)implementation.static CallbackExecuteListeneronEnd(ExecuteEventHandler handler) Create anExecuteListenerwith aend(ExecuteContext)implementation.static CallbackExecuteListeneronException(ExecuteEventHandler handler) Create anExecuteListenerwith aexception(ExecuteContext)implementation.static CallbackExecuteListeneronExecuteEnd(ExecuteEventHandler handler) Create anExecuteListenerwith aexecuteEnd(ExecuteContext)implementation.static CallbackExecuteListeneronExecuteStart(ExecuteEventHandler handler) Create anExecuteListenerwith aexecuteStart(ExecuteContext)implementation.static CallbackExecuteListeneronFetchEnd(ExecuteEventHandler handler) Create anExecuteListenerwith afetchEnd(ExecuteContext)implementation.static CallbackExecuteListeneronFetchStart(ExecuteEventHandler handler) Create anExecuteListenerwith afetchStart(ExecuteContext)implementation.static CallbackExecuteListeneronOutEnd(ExecuteEventHandler handler) Create anExecuteListenerwith aoutEnd(ExecuteContext)implementation.static CallbackExecuteListeneronOutStart(ExecuteEventHandler handler) Create anExecuteListenerwith aoutStart(ExecuteContext)implementation.static CallbackExecuteListeneronPrepareEnd(ExecuteEventHandler handler) Create anExecuteListenerwith aprepareEnd(ExecuteContext)implementation.static CallbackExecuteListeneronPrepareStart(ExecuteEventHandler handler) Create anExecuteListenerwith aprepareStart(ExecuteContext)implementation.static CallbackExecuteListeneronRecordEnd(ExecuteEventHandler handler) Create anExecuteListenerwith arecordEnd(ExecuteContext)implementation.static CallbackExecuteListeneronRecordStart(ExecuteEventHandler handler) Create anExecuteListenerwith arecordStart(ExecuteContext)implementation.static CallbackExecuteListeneronRenderEnd(ExecuteEventHandler handler) Create anExecuteListenerwith arenderEnd(ExecuteContext)implementation.static CallbackExecuteListeneronRenderStart(ExecuteEventHandler handler) Create anExecuteListenerwith arenderStart(ExecuteContext)implementation.static CallbackExecuteListeneronResultEnd(ExecuteEventHandler handler) Create anExecuteListenerwith aresultEnd(ExecuteContext)implementation.static CallbackExecuteListeneronResultStart(ExecuteEventHandler handler) Create anExecuteListenerwith aresultStart(ExecuteContext)implementation.static CallbackExecuteListeneronStart(ExecuteEventHandler handler) Create anExecuteListenerwith astart(ExecuteContext)implementation.static CallbackExecuteListeneronWarning(ExecuteEventHandler handler) Create anExecuteListenerwith awarning(ExecuteContext)implementation.default voidoutEnd(ExecuteContext ctx) Called after fetching out parameter values from aCallableStatement.default voidoutStart(ExecuteContext ctx) Called before fetching out parameter values from aCallableStatement.default voidprepareEnd(ExecuteContext ctx) Called after preparing / creating the SQL statement.default voidCalled before preparing / creating the SQL statement.default voidrecordEnd(ExecuteContext ctx) Called after fetching a record from aResultSet.default voidCalled before fetching a record from aResultSet.default voidrenderEnd(ExecuteContext ctx) Called after rendering SQL from aQueryPart.default voidCalled before rendering SQL from aQueryPart.default voidresultEnd(ExecuteContext ctx) Called after fetching a set of records from aResultSet.default voidCalled before fetching a set of records from aResultSet.default voidstart(ExecuteContext ctx) Called to initialise anExecuteListener.default voidwarning(ExecuteContext ctx) Called in the event of a warning at any moment of the execution lifecycle.
-
Method Details
-
start
Called to initialise anExecuteListener.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwise
ExecuteContext:ExecuteContext.connectionProvider(ConnectionProvider): The connection provider used for execution. This may be particularly interesting if aQuerywas de-serialised and is thus lacking the underlying connection
- Parameters:
ctx- The context containing information about the execution.
-
renderStart
Called before rendering SQL from aQueryPart.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwise
- Parameters:
ctx- The context containing information about the execution.
-
renderEnd
Called after rendering SQL from aQueryPart.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..
Overridable attributes in
ExecuteContext:ExecuteContext.sql(String): The renderedSQLstatement that is about to be executed. You can modify this statement freely.
- Parameters:
ctx- The context containing information about the execution.
-
prepareStart
Called before preparing / creating the SQL statement.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..
Overridable attributes in
ExecuteContext:ExecuteContext.sql(String): The renderedSQLstatement that is about to be executed. You can modify this statement freely.ExecuteContext.statement(): ThePreparedStatementabout to be executed. At this stage, no such statement is available yet, but if provided, the execution lifecycle will skip preparing a statement. This can be used e.g. to implement a transaction-bound prepared statement cache.A custom
PreparedStatementneeds to take into accountSettings.getStatementType(), and adefault void bind variable markers forStatementType.STATIC_STATEMENT.Flags such as
Query.queryTimeout(int),Query.poolable(boolean),ResultQuery.maxRows(int), which correspond to mutable flags on aPreparedStatement, are set by jOOQ even if a listener provides the statement.Flags such as
ResultQuery.resultSetConcurrency(int),ResultQuery.resultSetHoldability(int),ResultQuery.resultSetType(int), which correspond to immutable flags that are set on the statement at statement creation are not set on a statement provided by a listener.
- Parameters:
ctx- The context containing information about the execution.
-
prepareEnd
Called after preparing / creating the SQL statement.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
Overridable attributes in
ExecuteContext:ExecuteContext.statement(PreparedStatement): TheStatement,PreparedStatement, orCallableStatementthat is about to be executed. You can modify this statement freely, or wrapExecuteContext.statement()with your enriched statement wrapper
- Parameters:
ctx- The context containing information about the execution.
-
bindStart
Called before bind variables to thePreparedStatement.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
Overridable attributes in
ExecuteContext:ExecuteContext.statement(PreparedStatement): ThePreparedStatement, orCallableStatementthat is about to be executed. You can modify this statement freely, or wrapExecuteContext.statement()with your enriched statement wrapper
Note that this method is not called when executing queries of type
StatementType.STATIC_STATEMENT- Parameters:
ctx- The context containing information about the execution.
-
bindEnd
Called after bind variables to thePreparedStatement.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
Overridable attributes in
ExecuteContext:ExecuteContext.statement(PreparedStatement): TheStatement,PreparedStatement, orCallableStatementthat is about to be executed. You can modify this statement freely, or wrapExecuteContext.statement()with your enriched statement wrapper
Note that this method is not called when executing queries of type
StatementType.STATIC_STATEMENT- Parameters:
ctx- The context containing information about the execution.
-
executeStart
Called before executing a statement.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
Overridable attributes in
ExecuteContext:ExecuteContext.statement(PreparedStatement): TheStatement,PreparedStatement, orCallableStatementthat is about to be executed. You can modify this statement freely, or wrapExecuteContext.statement()with your enriched statement wrapper
Other attributes in
ExecuteContext, affected by this lifecycle phase:ExecuteContext.statementExecutionCount()is incremented.
- Parameters:
ctx- The context containing information about the execution.
-
executeEnd
Called after executing a statement.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
ExecuteContext.resultSet(): TheResultSetthat is about to be fetched ornull, if theQueryreturns no result set, or if aRoutineis being executed.ExecuteContext.rows(): The number of affected rows if applicable. In case aResultSetis fetched, this number is only available at thefetchEnd(ExecuteContext)event.ExecuteContext.serverOutput(): The server output if available. This may be fetched whenSettings.getFetchServerOutputSize()> 0
Overridable attributes in
ExecuteContext:ExecuteContext.resultSet(ResultSet): TheResultSetthat is about to be fetched. You can modify this result set freely, or wrapExecuteContext.resultSet()with your enriched result set wrapper
- Parameters:
ctx- The context containing information about the execution.
-
outStart
Called before fetching out parameter values from aCallableStatement.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the database ornullif no warning was emitted.
Note that this method is called only when executing standalone routine calls.
- Parameters:
ctx- The context containing information about the execution.
-
outEnd
Called after fetching out parameter values from aCallableStatement.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the database ornullif no warning was emitted.
Note that this method is called only when executing standalone routine calls.
- Parameters:
ctx- The context containing information about the execution.
-
fetchStart
Called before fetching data from aResultSetinto aResulttype.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
ExecuteContext.resultSet(): TheResultSetthat is about to be fetched.ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the database ornullif no warning was emitted.
Overridable attributes in
ExecuteContext:ExecuteContext.resultSet(ResultSet): TheResultSetthat is about to be fetched. You can modify this result set freely, or wrapExecuteContext.resultSet()with your enriched result set wrapper
In case of multiple
ResultSetswithResultQuery.fetchMany(), this is called several times, once perResultSetNote that this method is not called when executing queries that do not return a result, or when executing routines.
- Parameters:
ctx- The context containing information about the execution.
-
resultStart
Called before fetching a set of records from aResultSet.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
ExecuteContext.resultSet(): TheResultSetthat is about to be fetched.ExecuteContext.result(): The set of records that are about to be fetched.ExecuteContext.resultLevel(): The result nesting level, in case the upcomingExecuteContext.result()is aDSL#multiset(Select)or other type of nested result.ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the database ornullif no warning was emitted.
Executions without
ResultNot all types of execution produce results of type
Result. For example, these do not:ResultQuery.iterator()ResultQuery.stream()ResultQuery.collect(Collector)(including allCollectorbased fetches, such as e.g. aResultQuery.fetchMap(Field, Field),ResultQuery.fetchGroups(Field, Field),ResultQuery.fetchSet(Field), and all the overloads)Publisher.subscribe(Subscriber)
resultStart(ExecuteContext)event is fired.Note that this method is also not called when executing queries that do not return a result, or when executing routines. This is also not called when fetching single records, with
Cursor.fetchNext()for instance.- Parameters:
ctx- The context containing information about the execution.
-
recordStart
Called before fetching a record from aResultSet.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
ExecuteContext.resultSet(): TheResultSetthat is about to be fetched.ExecuteContext.record(): TheRecordthat is about to be fetched.ExecuteContext.recordLevel(): The record nesting level, in case the upcomingExecuteContext.record()is aRowor other type of nested record. The level is also increased if a record is contained in a nestedExecuteContext.result().ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the database ornullif no warning was emitted.
Note that this method is not called when executing queries that do not return a result, or when executing routines.
- Parameters:
ctx- The context containing information about the execution.
-
recordEnd
Called after fetching a record from aResultSet.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
ExecuteContext.resultSet(): TheResultSetthat is about to be fetched.ExecuteContext.record(): The lastRecordthat was fetched.ExecuteContext.recordLevel(): The record nesting level, in case the upcomingExecuteContext.record()is aRowor other type of nested record. The level is also increased if a record is contained in a nestedExecuteContext.result().ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the database ornullif no warning was emitted.
Note that this method is not called when executing queries that do not return a result, or when executing routines.
- Parameters:
ctx- The context containing information about the execution.
-
resultEnd
Called after fetching a set of records from aResultSet.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
- A
ExecuteContext.resultSet(): TheResultSetthat is about to be fetched.ExecuteContext.record(): The lastRecordthat was fetched.ExecuteContext.result(): The set of records that were fetched.ExecuteContext.resultLevel(): The result nesting level, in case the upcomingExecuteContext.result()is aDSL#multiset(Select)or other type of nested result.ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the database ornullif no warning was emitted.
Executions without
ResultNot all types of execution produce results of type
Result. For example, these do not:ResultQuery.iterator()ResultQuery.stream()ResultQuery.collect(Collector)(including allCollectorbased fetches, such as e.g. aResultQuery.fetchMap(Field, Field),ResultQuery.fetchGroups(Field, Field),ResultQuery.fetchSet(Field), and all the overloads)Publisher.subscribe(Subscriber)
resultEnd(ExecuteContext)event is fired.Note that this method is also not called when executing queries that do not return a result, or when executing routines. This is also not called when fetching single records, with
Cursor.fetchNext()for instance.- Parameters:
ctx- The context containing information about the execution.
-
fetchEnd
Called after fetching data from aResultSet.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
Statementis already closed!- A
ExecuteContext.resultSet(): TheResultSetthat was fetched. Note that theResultSetis already closed!ExecuteContext.rows(): The number of affected rows if applicable.ExecuteContext.serverOutput(): The server output if available. This may be fetched whenSettings.getFetchServerOutputSize()> 0ExecuteContext.record(): The lastRecordthat was fetched.ExecuteContext.result(): The last set of records that were fetched.ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the database ornullif no warning was emitted.
In case of multiple
ResultSetswithResultQuery.fetchMany(), this is called several times, once perResultSetNote that this method is not called when executing queries that do not return a result, or when executing routines.
- Parameters:
ctx- The context containing information about the execution.
-
end
Called at the end of the execution lifecycle.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
Statementis already closed!- A
ExecuteContext.resultSet(): TheResultSetthat was fetched ornull, if no result set was fetched. Note that theResultSetmay already be closed!ExecuteContext.rows(): The number of affected rows if applicable.ExecuteContext.serverOutput(): The server output if available. This may be fetched whenSettings.getFetchServerOutputSize()> 0ExecuteContext.record(): The lastRecordthat was fetched or null if no records were fetched.ExecuteContext.result(): The last set of records that were fetched or null if no records were fetched.ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the database ornullif no warning was emitted.
- Parameters:
ctx- The context containing information about the execution.
-
exception
Called in the event of an exception at any moment of the execution lifecycle.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
Statementmay be closed!- A
ExecuteContext.resultSet(): TheResultSetthat was fetched ornull, if no result set was fetched. Note that theResultSetmay already be closed!ExecuteContext.rows(): The number of affected rows if applicable.ExecuteContext.serverOutput(): The server output if available. This may be fetched whenSettings.getFetchServerOutputSize()> 0ExecuteContext.record(): The lastRecordthat was fetched or null if no records were fetched.ExecuteContext.result(): The last set of records that were fetched or null if no records were fetched.ExecuteContext.exception(): TheRuntimeExceptionthat is about to be thrownExecuteContext.sqlException(): TheSQLExceptionthat was thrown by the database
- Parameters:
ctx- The context containing information about the execution.
-
warning
Called in the event of a warning at any moment of the execution lifecycle.Available attributes from
ExecuteContext:ExecuteContext.connection(): The connection used for executionScope.configuration(): The execution configurationExecuteContext.query(): TheQueryobject, if a jOOQ query is being executed ornullotherwiseExecuteContext.routine(): TheRoutineobject, if a jOOQ routine is being executed ornullotherwiseExecuteContext.sql(): The renderedSQLstatement that is about to be executed, ornullif theSQLstatement is unknown..ExecuteContext.statement(): ThePreparedStatementthat is about to be executed, ornullif no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatementfrom your JDBC driver when a jOOQQueryis being executed asStatementType.PREPARED_STATEMENT - A
java.sql.Statementfrom your JDBC driver wrapped in ajava.sql.PreparedStatementwhen your jOOQQueryis being executed asStatementType.STATIC_STATEMENT - A
java.sql.CallableStatementwhen you are executing a jOOQRoutine
Statementmay be closed!- A
ExecuteContext.resultSet(): TheResultSetthat was fetched ornull, if no result set was fetched. Note that theResultSetmay already be closed!ExecuteContext.rows(): The number of affected rows if applicable.ExecuteContext.serverOutput(): The server output if available. This may be fetched whenSettings.getFetchServerOutputSize()> 0ExecuteContext.record(): The lastRecordthat was fetched or null if no records were fetched.ExecuteContext.result(): The last set of records that were fetched or null if no records were fetched.ExecuteContext.sqlWarning(): TheSQLWarningthat was emitted by the databaseExecuteContext.exception(): TheRuntimeExceptionthat is about to be thrown ornull, if no exception is being thrown.ExecuteContext.sqlException(): TheSQLExceptionthat was thrown by the database ornull, if no exception is being thrown.
This method is only invoked if a warning appears. Note that fetching of warnings can be disabled using
Settings.isFetchWarnings()- Parameters:
ctx- The context containing information about the execution.
-
onStart
Create anExecuteListenerwith astart(ExecuteContext)implementation. -
onEnd
Create anExecuteListenerwith aend(ExecuteContext)implementation. -
onRenderStart
Create anExecuteListenerwith arenderStart(ExecuteContext)implementation. -
onRenderEnd
Create anExecuteListenerwith arenderEnd(ExecuteContext)implementation. -
onPrepareStart
Create anExecuteListenerwith aprepareStart(ExecuteContext)implementation. -
onPrepareEnd
Create anExecuteListenerwith aprepareEnd(ExecuteContext)implementation. -
onBindStart
Create anExecuteListenerwith abindStart(ExecuteContext)implementation. -
onBindEnd
Create anExecuteListenerwith abindEnd(ExecuteContext)implementation. -
onExecuteStart
Create anExecuteListenerwith aexecuteStart(ExecuteContext)implementation. -
onExecuteEnd
Create anExecuteListenerwith aexecuteEnd(ExecuteContext)implementation. -
onOutStart
Create anExecuteListenerwith aoutStart(ExecuteContext)implementation. -
onOutEnd
Create anExecuteListenerwith aoutEnd(ExecuteContext)implementation. -
onFetchStart
Create anExecuteListenerwith afetchStart(ExecuteContext)implementation. -
onFetchEnd
Create anExecuteListenerwith afetchEnd(ExecuteContext)implementation. -
onResultStart
Create anExecuteListenerwith aresultStart(ExecuteContext)implementation. -
onResultEnd
Create anExecuteListenerwith aresultEnd(ExecuteContext)implementation. -
onRecordStart
Create anExecuteListenerwith arecordStart(ExecuteContext)implementation. -
onRecordEnd
Create anExecuteListenerwith arecordEnd(ExecuteContext)implementation. -
onException
Create anExecuteListenerwith aexception(ExecuteContext)implementation. -
onWarning
Create anExecuteListenerwith awarning(ExecuteContext)implementation.
-