diff --git a/jOOQ/src/main/java/org/jooq/DiagnosticsContext.java b/jOOQ/src/main/java/org/jooq/DiagnosticsContext.java
index fd56bce13b..773597571f 100644
--- a/jOOQ/src/main/java/org/jooq/DiagnosticsContext.java
+++ b/jOOQ/src/main/java/org/jooq/DiagnosticsContext.java
@@ -59,6 +59,17 @@ public interface DiagnosticsContext extends Scope {
@Nullable
QueryPart part();
+ /**
+ * The transformed object from {@link #part()} if available, or
+ * null, if there was no specific transformation to attach the
+ * diagnostic to.
+ *
+ * This helps diagnosing pattern transformations as indicated by + * {@link DiagnosticsListener#transformPattern(DiagnosticsContext)}. + */ + @Nullable + QueryPart transformedPart(); + /** * A message describing the diagnostics and the object in question. */ diff --git a/jOOQ/src/main/java/org/jooq/DiagnosticsListener.java b/jOOQ/src/main/java/org/jooq/DiagnosticsListener.java index 78572297f2..293c41957e 100644 --- a/jOOQ/src/main/java/org/jooq/DiagnosticsListener.java +++ b/jOOQ/src/main/java/org/jooq/DiagnosticsListener.java @@ -41,6 +41,7 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; +import org.jooq.conf.Settings; import org.jooq.impl.DSL; import org.jooq.impl.ParserException; @@ -273,6 +274,16 @@ public interface DiagnosticsListener { + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/conf/Settings.java b/jOOQ/src/main/java/org/jooq/conf/Settings.java index e40e9cf2c6..62a2fee6ac 100644 --- a/jOOQ/src/main/java/org/jooq/conf/Settings.java +++ b/jOOQ/src/main/java/org/jooq/conf/Settings.java @@ -133,6 +133,8 @@ public class Settings @XmlElement(defaultValue = "true") protected Boolean diagnosticsUnnecessaryWasNullCall = true; @XmlElement(defaultValue = "true") + protected Boolean diagnosticsPatterns = true; + @XmlElement(defaultValue = "true") protected Boolean diagnosticsTrivialCondition = true; @XmlElement(defaultValue = "true") protected Boolean diagnosticsNullCondition = true; @@ -1476,6 +1478,39 @@ public class Settings this.diagnosticsUnnecessaryWasNullCall = value; } + /** + * Whether to run the various pattern transformation diagnostics. + *
+ * {@link #transformPatterns} allows for applying numerous pattern transformations, which can be turned on separately when running + * diagnostics. This flag overrides the {@link #transformPatterns} flag in the diagnostics context. Individual pattern flags + * still allow to enable / disable the pattern for diagnostics. + *
+ * Diagnostics are turned off if no {@link org.jooq.Configuration#diagnosticsListenerProviders()} are configured. + * Once configured, this diagnostic is turned on by default. + *
+ * This feature is available in the commercial distribution only. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isDiagnosticsPatterns() { + return diagnosticsPatterns; + } + + /** + * Sets the value of the diagnosticsPatterns property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setDiagnosticsPatterns(Boolean value) { + this.diagnosticsPatterns = value; + } + /** * Whether to run the {@link org.jooq.DiagnosticsListener#trivialCondition(org.jooq.DiagnosticsContext) diagnostic. *
@@ -4953,6 +4988,11 @@ public class Settings
return this;
}
+ public Settings withDiagnosticsPatterns(Boolean value) {
+ setDiagnosticsPatterns(value);
+ return this;
+ }
+
public Settings withDiagnosticsTrivialCondition(Boolean value) {
setDiagnosticsTrivialCondition(value);
return this;
@@ -6005,6 +6045,7 @@ public class Settings
builder.append("diagnosticsTooManyColumnsFetched", diagnosticsTooManyColumnsFetched);
builder.append("diagnosticsTooManyRowsFetched", diagnosticsTooManyRowsFetched);
builder.append("diagnosticsUnnecessaryWasNullCall", diagnosticsUnnecessaryWasNullCall);
+ builder.append("diagnosticsPatterns", diagnosticsPatterns);
builder.append("diagnosticsTrivialCondition", diagnosticsTrivialCondition);
builder.append("diagnosticsNullCondition", diagnosticsNullCondition);
builder.append("transformPatterns", transformPatterns);
@@ -6530,6 +6571,15 @@ public class Settings
return false;
}
}
+ if (diagnosticsPatterns == null) {
+ if (other.diagnosticsPatterns!= null) {
+ return false;
+ }
+ } else {
+ if (!diagnosticsPatterns.equals(other.diagnosticsPatterns)) {
+ return false;
+ }
+ }
if (diagnosticsTrivialCondition == null) {
if (other.diagnosticsTrivialCondition!= null) {
return false;
@@ -7793,6 +7843,7 @@ public class Settings
result = ((prime*result)+((diagnosticsTooManyColumnsFetched == null)? 0 :diagnosticsTooManyColumnsFetched.hashCode()));
result = ((prime*result)+((diagnosticsTooManyRowsFetched == null)? 0 :diagnosticsTooManyRowsFetched.hashCode()));
result = ((prime*result)+((diagnosticsUnnecessaryWasNullCall == null)? 0 :diagnosticsUnnecessaryWasNullCall.hashCode()));
+ result = ((prime*result)+((diagnosticsPatterns == null)? 0 :diagnosticsPatterns.hashCode()));
result = ((prime*result)+((diagnosticsTrivialCondition == null)? 0 :diagnosticsTrivialCondition.hashCode()));
result = ((prime*result)+((diagnosticsNullCondition == null)? 0 :diagnosticsNullCondition.hashCode()));
result = ((prime*result)+((transformPatterns == null)? 0 :transformPatterns.hashCode()));
diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDiagnosticsContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDiagnosticsContext.java
index eb4423f0f9..32750552ad 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DefaultDiagnosticsContext.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDiagnosticsContext.java
@@ -63,6 +63,7 @@ final class DefaultDiagnosticsContext extends AbstractScope implements Diagnosti
private static final JooqLogger log = JooqLogger.getLogger(DefaultDiagnosticsContext.class);
final QueryPart part;
+ final QueryPart transformedPart;
final String message;
ResultSet resultSet;
DiagnosticsResultSet resultSetWrapper;
@@ -93,6 +94,7 @@ final class DefaultDiagnosticsContext extends AbstractScope implements Diagnosti
singleton(actualStatement),
singletonList(actualStatement),
null,
+ null,
exception
);
}
@@ -105,6 +107,7 @@ final class DefaultDiagnosticsContext extends AbstractScope implements Diagnosti
Set
+Diagnostics are turned off if no {@link org.jooq.Configuration#diagnosticsListenerProviders()} are configured.
+Once configured, this diagnostic is turned on by default.
+
+This feature is available in the commercial distribution only.]]>