From b3ff200fce007966bebd2883fa5e309a709a1673 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 11 May 2018 10:48:21 +0200 Subject: [PATCH] [#7474] Make number of seconds that are considered "slow" in jOOQ-meta configurable --- .../java/org/jooq/codegen/GenerationTool.java | 1 + .../java/org/jooq/meta/AbstractDatabase.java | 23 +++++++++++++++---- .../src/main/java/org/jooq/meta/Database.java | 10 ++++++++ 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java index 96300dc5a4..5a4dc22425 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -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()); diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java index 2429505095..b87d23db6a 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java @@ -137,6 +137,9 @@ public abstract class AbstractDatabase implements Database { private SchemaVersionProvider schemaVersionProvider; private CatalogVersionProvider catalogVersionProvider; private Comparator 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 routines; private List packages; private Relations relations; - private boolean includeRelations = true; - private boolean tableValuedFunctions = true; private transient Map> sequencesBySchema; private transient Map> 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 getConfiguredForcedTypes() { - if (configuredForcedTypes == null) { + if (configuredForcedTypes == null) configuredForcedTypes = new ArrayList(); - } 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; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java index 81b12fb024..f48b74a867 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/Database.java @@ -673,6 +673,16 @@ public interface Database extends AutoCloseable { */ void setConfiguredForcedTypes(List 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. */