- 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.
For convenience, consider extending DefaultExecuteListener
instead of
implementing this interface. This will prevent compilation errors in future
versions of jOOQ, when this interface might get new 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
ResultQuery
of statement typeStatementType.PREPARED_STATEMENT
- Used with
ResultQuery
of 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
Routine
standalone 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 TypeMethodDescriptionvoid
bindEnd
(ExecuteContext ctx) Called after bind variables to thePreparedStatement
.void
bindStart
(ExecuteContext ctx) Called before bind variables to thePreparedStatement
.void
end
(ExecuteContext ctx) Called at the end of the execution lifecycle.void
exception
(ExecuteContext ctx) Called in the event of an exception at any moment of the execution lifecycle.void
executeEnd
(ExecuteContext ctx) Called after executing a statement.void
Called before executing a statement.void
fetchEnd
(ExecuteContext ctx) Called after fetching data from aResultSet
.void
fetchStart
(ExecuteContext ctx) Called before fetching data from aResultSet
into aResult
type.static CallbackExecuteListener
onBindEnd
(ExecuteEventHandler handler) Create anExecuteListener
with abindEnd(ExecuteContext)
implementation.static CallbackExecuteListener
onBindStart
(ExecuteEventHandler handler) Create anExecuteListener
with abindStart(ExecuteContext)
implementation.static CallbackExecuteListener
onEnd
(ExecuteEventHandler handler) Create anExecuteListener
with aend(ExecuteContext)
implementation.static CallbackExecuteListener
onException
(ExecuteEventHandler handler) Create anExecuteListener
with aexception(ExecuteContext)
implementation.static CallbackExecuteListener
onExecuteEnd
(ExecuteEventHandler handler) Create anExecuteListener
with aexecuteEnd(ExecuteContext)
implementation.static CallbackExecuteListener
onExecuteStart
(ExecuteEventHandler handler) Create anExecuteListener
with aexecuteStart(ExecuteContext)
implementation.static CallbackExecuteListener
onFetchEnd
(ExecuteEventHandler handler) Create anExecuteListener
with afetchEnd(ExecuteContext)
implementation.static CallbackExecuteListener
onFetchStart
(ExecuteEventHandler handler) Create anExecuteListener
with afetchStart(ExecuteContext)
implementation.static CallbackExecuteListener
onOutEnd
(ExecuteEventHandler handler) Create anExecuteListener
with aoutEnd(ExecuteContext)
implementation.static CallbackExecuteListener
onOutStart
(ExecuteEventHandler handler) Create anExecuteListener
with aoutStart(ExecuteContext)
implementation.static CallbackExecuteListener
onPrepareEnd
(ExecuteEventHandler handler) Create anExecuteListener
with aprepareEnd(ExecuteContext)
implementation.static CallbackExecuteListener
onPrepareStart
(ExecuteEventHandler handler) Create anExecuteListener
with aprepareStart(ExecuteContext)
implementation.static CallbackExecuteListener
onRecordEnd
(ExecuteEventHandler handler) Create anExecuteListener
with arecordEnd(ExecuteContext)
implementation.static CallbackExecuteListener
onRecordStart
(ExecuteEventHandler handler) Create anExecuteListener
with arecordStart(ExecuteContext)
implementation.static CallbackExecuteListener
onRenderEnd
(ExecuteEventHandler handler) Create anExecuteListener
with arenderEnd(ExecuteContext)
implementation.static CallbackExecuteListener
onRenderStart
(ExecuteEventHandler handler) Create anExecuteListener
with arenderStart(ExecuteContext)
implementation.static CallbackExecuteListener
onResultEnd
(ExecuteEventHandler handler) Create anExecuteListener
with aresultEnd(ExecuteContext)
implementation.static CallbackExecuteListener
onResultStart
(ExecuteEventHandler handler) Create anExecuteListener
with aresultStart(ExecuteContext)
implementation.static CallbackExecuteListener
onStart
(ExecuteEventHandler handler) Create anExecuteListener
with astart(ExecuteContext)
implementation.static CallbackExecuteListener
onWarning
(ExecuteEventHandler handler) Create anExecuteListener
with awarning(ExecuteContext)
implementation.void
outEnd
(ExecuteContext ctx) Called after fetching out parameter values from aCallableStatement
.void
outStart
(ExecuteContext ctx) Called before fetching out parameter values from aCallableStatement
.void
prepareEnd
(ExecuteContext ctx) Called after preparing / creating the SQL statement.void
Called before preparing / creating the SQL statement.void
recordEnd
(ExecuteContext ctx) Called after fetching a record from aResultSet
.void
Called before fetching a record from aResultSet
.void
renderEnd
(ExecuteContext ctx) Called after rendering SQL from aQueryPart
.void
Called before rendering SQL from aQueryPart
.void
resultEnd
(ExecuteContext ctx) Called after fetching a set of records from aResultSet
.void
Called before fetching a set of records from aResultSet
.void
start
(ExecuteContext ctx) Called to initialise anExecuteListener
.void
warning
(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()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwise
ExecuteContext
:ExecuteContext.connectionProvider(ConnectionProvider)
: The connection provider used for execution. This may be particularly interesting if aQuery
was de-serialised and is thus lacking the underlying connection
-
renderStart
Called before rendering SQL from aQueryPart
.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwise
-
renderEnd
Called after rendering SQL from aQueryPart
.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..
Overridable attributes in
ExecuteContext
:ExecuteContext.sql(String)
: The renderedSQL
statement that is about to be executed. You can modify this statement freely.
-
prepareStart
Called before preparing / creating the SQL statement.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..
Overridable attributes in
ExecuteContext
:ExecuteContext.sql(String)
: The renderedSQL
statement that is about to be executed. You can modify this statement freely.ExecuteContext.statement()
: ThePreparedStatement
about 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
PreparedStatement
needs to take into accountSettings.getStatementType()
, and avoid 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.
-
prepareEnd
Called after preparing / creating the SQL statement.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
Overridable attributes in
ExecuteContext
:ExecuteContext.statement(PreparedStatement)
: TheStatement
,PreparedStatement
, orCallableStatement
that is about to be executed. You can modify this statement freely, or wrapExecuteContext.statement()
with your enriched statement wrapper
-
bindStart
Called before bind variables to thePreparedStatement
.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
Overridable attributes in
ExecuteContext
:ExecuteContext.statement(PreparedStatement)
: ThePreparedStatement
, orCallableStatement
that 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
-
bindEnd
Called after bind variables to thePreparedStatement
.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
Overridable attributes in
ExecuteContext
:ExecuteContext.statement(PreparedStatement)
: TheStatement
,PreparedStatement
, orCallableStatement
that 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
-
executeStart
Called before executing a statement.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
Overridable attributes in
ExecuteContext
:ExecuteContext.statement(PreparedStatement)
: TheStatement
,PreparedStatement
, orCallableStatement
that 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.
-
executeEnd
Called after executing a statement.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
ExecuteContext.resultSet()
: TheResultSet
that is about to be fetched ornull
, if theQuery
returns no result set, or if aRoutine
is being executed.ExecuteContext.rows()
: The number of affected rows if applicable. In case aResultSet
is 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)
: TheResultSet
that is about to be fetched. You can modify this result set freely, or wrapExecuteContext.resultSet()
with your enriched result set wrapper
-
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()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
ExecuteContext.sqlWarning()
: TheSQLWarning
that was emitted by the database ornull
if no warning was emitted.
Note that this method is called only when executing standalone routine calls.
-
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()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
ExecuteContext.sqlWarning()
: TheSQLWarning
that was emitted by the database ornull
if no warning was emitted.
Note that this method is called only when executing standalone routine calls.
-
fetchStart
Called before fetching data from aResultSet
into aResult
type.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
ExecuteContext.resultSet()
: TheResultSet
that is about to be fetched.ExecuteContext.sqlWarning()
: TheSQLWarning
that was emitted by the database ornull
if no warning was emitted.
Overridable attributes in
ExecuteContext
:ExecuteContext.resultSet(ResultSet)
: TheResultSet
that 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
ResultSets
withResultQuery.fetchMany()
, this is called several times, once perResultSet
Note that this method is not called when executing queries that do not return a result, or when executing routines.
-
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()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
ExecuteContext.resultSet()
: TheResultSet
that 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()
: TheSQLWarning
that was emitted by the database ornull
if no warning was emitted.
Executions without
Result
Not all types of execution produce results of type
Result
. For example, these do not:ResultQuery.iterator()
ResultQuery.stream()
ResultQuery.collect(Collector)
(including allCollector
based 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. -
recordStart
Called before fetching a record from aResultSet
.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
ExecuteContext.resultSet()
: TheResultSet
that is about to be fetched.ExecuteContext.record()
: TheRecord
that is about to be fetched.ExecuteContext.recordLevel()
: The record nesting level, in case the upcomingExecuteContext.record()
is aRow
or other type of nested record. The level is also increased if a record is contained in a nestedExecuteContext.result()
.ExecuteContext.sqlWarning()
: TheSQLWarning
that was emitted by the database ornull
if no warning was emitted.
Note that this method is not called when executing queries that do not return a result, or when executing routines.
-
recordEnd
Called after fetching a record from aResultSet
.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
ExecuteContext.resultSet()
: TheResultSet
that is about to be fetched.ExecuteContext.record()
: The lastRecord
that was fetched.ExecuteContext.recordLevel()
: The record nesting level, in case the upcomingExecuteContext.record()
is aRow
or other type of nested record. The level is also increased if a record is contained in a nestedExecuteContext.result()
.ExecuteContext.sqlWarning()
: TheSQLWarning
that was emitted by the database ornull
if no warning was emitted.
Note that this method is not called when executing queries that do not return a result, or when executing routines.
-
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()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
- A
ExecuteContext.resultSet()
: TheResultSet
that is about to be fetched.ExecuteContext.record()
: The lastRecord
that 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()
: TheSQLWarning
that was emitted by the database ornull
if no warning was emitted.
Executions without
Result
Not all types of execution produce results of type
Result
. For example, these do not:ResultQuery.iterator()
ResultQuery.stream()
ResultQuery.collect(Collector)
(including allCollector
based 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. -
fetchEnd
Called after fetching data from aResultSet
.Available attributes from
ExecuteContext
:ExecuteContext.connection()
: The connection used for executionScope.configuration()
: The execution configurationExecuteContext.query()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
Statement
is already closed!- A
ExecuteContext.resultSet()
: TheResultSet
that was fetched. Note that theResultSet
is 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 lastRecord
that was fetched.ExecuteContext.result()
: The last set of records that were fetched.ExecuteContext.sqlWarning()
: TheSQLWarning
that was emitted by the database ornull
if no warning was emitted.
In case of multiple
ResultSets
withResultQuery.fetchMany()
, this is called several times, once perResultSet
Note that this method is not called when executing queries that do not return a result, or when executing routines.
-
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()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
Statement
is already closed!- A
ExecuteContext.resultSet()
: TheResultSet
that was fetched ornull
, if no result set was fetched. Note that theResultSet
may 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 lastRecord
that 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()
: TheSQLWarning
that was emitted by the database ornull
if no warning was emitted.
-
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()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
Statement
may be closed!- A
ExecuteContext.resultSet()
: TheResultSet
that was fetched ornull
, if no result set was fetched. Note that theResultSet
may 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 lastRecord
that 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()
: TheRuntimeException
that is about to be thrownExecuteContext.sqlException()
: TheSQLException
that was thrown by the database
-
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()
: TheQuery
object, if a jOOQ query is being executed ornull
otherwiseExecuteContext.routine()
: TheRoutine
object, if a jOOQ routine is being executed ornull
otherwiseExecuteContext.sql()
: The renderedSQL
statement that is about to be executed, ornull
if theSQL
statement is unknown..ExecuteContext.statement()
: ThePreparedStatement
that is about to be executed, ornull
if no statement is known to jOOQ. This can be any of the following:
- A
java.sql.PreparedStatement
from your JDBC driver when a jOOQQuery
is being executed asStatementType.PREPARED_STATEMENT
- A
java.sql.Statement
from your JDBC driver wrapped in ajava.sql.PreparedStatement
when your jOOQQuery
is being executed asStatementType.STATIC_STATEMENT
- A
java.sql.CallableStatement
when you are executing a jOOQRoutine
Statement
may be closed!- A
ExecuteContext.resultSet()
: TheResultSet
that was fetched ornull
, if no result set was fetched. Note that theResultSet
may 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 lastRecord
that 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()
: TheSQLWarning
that was emitted by the databaseExecuteContext.exception()
: TheRuntimeException
that is about to be thrown ornull
, if no exception is being thrown.ExecuteContext.sqlException()
: TheSQLException
that 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()
-
onStart
Create anExecuteListener
with astart(ExecuteContext)
implementation. -
onEnd
Create anExecuteListener
with aend(ExecuteContext)
implementation. -
onRenderStart
Create anExecuteListener
with arenderStart(ExecuteContext)
implementation. -
onRenderEnd
Create anExecuteListener
with arenderEnd(ExecuteContext)
implementation. -
onPrepareStart
Create anExecuteListener
with aprepareStart(ExecuteContext)
implementation. -
onPrepareEnd
Create anExecuteListener
with aprepareEnd(ExecuteContext)
implementation. -
onBindStart
Create anExecuteListener
with abindStart(ExecuteContext)
implementation. -
onBindEnd
Create anExecuteListener
with abindEnd(ExecuteContext)
implementation. -
onExecuteStart
Create anExecuteListener
with aexecuteStart(ExecuteContext)
implementation. -
onExecuteEnd
Create anExecuteListener
with aexecuteEnd(ExecuteContext)
implementation. -
onOutStart
Create anExecuteListener
with aoutStart(ExecuteContext)
implementation. -
onOutEnd
Create anExecuteListener
with aoutEnd(ExecuteContext)
implementation. -
onFetchStart
Create anExecuteListener
with afetchStart(ExecuteContext)
implementation. -
onFetchEnd
Create anExecuteListener
with afetchEnd(ExecuteContext)
implementation. -
onResultStart
Create anExecuteListener
with aresultStart(ExecuteContext)
implementation. -
onResultEnd
Create anExecuteListener
with aresultEnd(ExecuteContext)
implementation. -
onRecordStart
Create anExecuteListener
with arecordStart(ExecuteContext)
implementation. -
onRecordEnd
Create anExecuteListener
with arecordEnd(ExecuteContext)
implementation. -
onException
Create anExecuteListener
with aexception(ExecuteContext)
implementation. -
onWarning
Create anExecuteListener
with awarning(ExecuteContext)
implementation.
-