[#7474] Make number of seconds that are considered "slow" in jOOQ-meta configurable

This commit is contained in:
lukaseder 2018-05-11 10:48:21 +02:00
parent eb377fa565
commit b3ff200fce
3 changed files with 29 additions and 5 deletions

View File

@ -498,6 +498,7 @@ public class GenerationTool {
database.setConfiguredCustomTypes(d.getCustomTypes());
database.setConfiguredEnumTypes(d.getEnumTypes());
database.setConfiguredForcedTypes(d.getForcedTypes());
database.setLogSlowQueriesAfterSeconds(defaultIfNull(g.getDatabase().getLogSlowQueriesAfterSeconds(), 5));
if (d.getRegexFlags() != null)
database.setRegexFlags(d.getRegexFlags());

View File

@ -137,6 +137,9 @@ public abstract class AbstractDatabase implements Database {
private SchemaVersionProvider schemaVersionProvider;
private CatalogVersionProvider catalogVersionProvider;
private Comparator<Definition> orderProvider;
private boolean includeRelations = true;
private boolean tableValuedFunctions = true;
private int logSlowQueriesAfterSeconds;
// -------------------------------------------------------------------------
// Loaded definitions
@ -161,8 +164,6 @@ public abstract class AbstractDatabase implements Database {
private List<RoutineDefinition> routines;
private List<PackageDefinition> packages;
private Relations relations;
private boolean includeRelations = true;
private boolean tableValuedFunctions = true;
private transient Map<SchemaDefinition, List<SequenceDefinition>> sequencesBySchema;
private transient Map<SchemaDefinition, List<IdentityDefinition>> identitiesBySchema;
@ -274,9 +275,12 @@ public abstract class AbstractDatabase implements Database {
@Override
public void executeEnd(ExecuteContext ctx) {
if (getLogSlowQueriesAfterSeconds() <= 0)
return;
StopWatch watch = (StopWatch) ctx.data("org.jooq.meta.AbstractDatabase.watch");
if (watch.split() > TimeUnit.SECONDS.toNanos(5L)) {
if (watch.split() > TimeUnit.SECONDS.toNanos(getLogSlowQueriesAfterSeconds())) {
watch.splitWarn("Slow SQL");
log.warn(
@ -1051,13 +1055,22 @@ public abstract class AbstractDatabase implements Database {
@Override
public final List<ForcedType> getConfiguredForcedTypes() {
if (configuredForcedTypes == null) {
if (configuredForcedTypes == null)
configuredForcedTypes = new ArrayList<ForcedType>();
}
return configuredForcedTypes;
}
@Override
public final int getLogSlowQueriesAfterSeconds() {
return logSlowQueriesAfterSeconds;
}
@Override
public final void setLogSlowQueriesAfterSeconds(int logSlowQueriesAfterSeconds) {
this.logSlowQueriesAfterSeconds = logSlowQueriesAfterSeconds;
}
@Override
public final SchemaVersionProvider getSchemaVersionProvider() {
return schemaVersionProvider;

View File

@ -673,6 +673,16 @@ public interface Database extends AutoCloseable {
*/
void setConfiguredForcedTypes(List<ForcedType> types);
/**
* Log slow queries after this amount of seconds.
*/
int getLogSlowQueriesAfterSeconds();
/**
* Log slow queries after this amount of seconds.
*/
void setLogSlowQueriesAfterSeconds(int logSlowQueriesAfterSeconds);
/**
* The database's schema version provider.
*/