[jOOQ/jOOQ#12564] Exception in LoggerListener when projecting top level
row(...).mapping()
This commit is contained in:
parent
cffaf5f017
commit
a53a981331
@ -65,6 +65,8 @@ import org.jooq.impl.DSL;
|
||||
import org.jooq.impl.DefaultExecuteListener;
|
||||
import org.jooq.impl.DefaultVisitListener;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* A default {@link ExecuteListener} that just logs events to java.util.logging,
|
||||
* log4j, or slf4j using the {@link JooqLogger}
|
||||
@ -129,9 +131,21 @@ public class LoggerListener extends DefaultExecuteListener {
|
||||
}
|
||||
}
|
||||
|
||||
// [#12564] Make sure we don't log any nested-level results or records
|
||||
int recordLevel = 0;
|
||||
int resultLevel = 0;
|
||||
|
||||
@Override
|
||||
public void recordStart(ExecuteContext ctx) {
|
||||
recordLevel++;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void recordEnd(ExecuteContext ctx) {
|
||||
if (--recordLevel > 0)
|
||||
return;
|
||||
|
||||
if (log.isTraceEnabled() && ctx.record() != null)
|
||||
logMultiline("Record fetched", ctx.record().toString(), Level.FINER);
|
||||
|
||||
@ -149,6 +163,7 @@ public class LoggerListener extends DefaultExecuteListener {
|
||||
|
||||
@Override
|
||||
public void resultStart(ExecuteContext ctx) {
|
||||
resultLevel++;
|
||||
|
||||
// [#10019] Don't buffer any records if it isn't needed
|
||||
ctx.data(DO_BUFFER, false);
|
||||
@ -156,6 +171,9 @@ public class LoggerListener extends DefaultExecuteListener {
|
||||
|
||||
@Override
|
||||
public void resultEnd(ExecuteContext ctx) {
|
||||
if (--resultLevel > 0)
|
||||
return;
|
||||
|
||||
if (ctx.result() != null && log.isDebugEnabled()) {
|
||||
log(ctx.configuration(), ctx.result());
|
||||
log.debug("Fetched row(s)", ctx.result().size());
|
||||
@ -284,11 +302,8 @@ public class LoggerListener extends DefaultExecuteListener {
|
||||
|
||||
@Override
|
||||
public void visitEnd(VisitContext context) {
|
||||
if (anyAbbreviations) {
|
||||
if (context.queryPartsLength() == 1) {
|
||||
context.renderContext().sql(" -- Bind values may have been abbreviated for DEBUG logging. Use TRACE logging for very large bind variables.");
|
||||
}
|
||||
}
|
||||
if (anyAbbreviations && context.queryPartsLength() == 1)
|
||||
context.renderContext().sql(" -- Bind values may have been abbreviated for DEBUG logging. Use TRACE logging for very large bind variables.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user