diff --git a/jOOQ/src/main/java/org/jooq/conf/Settings.java b/jOOQ/src/main/java/org/jooq/conf/Settings.java index c88e7787e0..e40e9cf2c6 100644 --- a/jOOQ/src/main/java/org/jooq/conf/Settings.java +++ b/jOOQ/src/main/java/org/jooq/conf/Settings.java @@ -141,6 +141,8 @@ public class Settings @XmlElement(defaultValue = "true") protected Boolean transformPatternsLogging = true; @XmlElement(defaultValue = "true") + protected Boolean transformPatternsCountConstant = true; + @XmlElement(defaultValue = "true") protected Boolean transformPatternsTrim = true; @XmlElement(defaultValue = "true") protected Boolean transformPatternsNotNot = true; @@ -1587,6 +1589,37 @@ public class Settings this.transformPatternsLogging = value; } + /** + * Transform COUNT(1) or any other COUNT(const) to COUNT(*). + *

+ * There is no benefit to counting a constant expression. In fact, in some RDBMS, it might even be slightly + * slower, at least in benchmarks. + *

+ * To enable this feature, {@link #transformPatterns} must be enabled as well. + *

+ * This feature is available in the commercial distribution only. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isTransformPatternsCountConstant() { + return transformPatternsCountConstant; + } + + /** + * Sets the value of the transformPatternsCountConstant property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setTransformPatternsCountConstant(Boolean value) { + this.transformPatternsCountConstant = value; + } + /** * Transform LTRIM(RTRIM(x)) or RTRIM(LTRIM(x)) to TRIM(x). *

@@ -4940,6 +4973,11 @@ public class Settings return this; } + public Settings withTransformPatternsCountConstant(Boolean value) { + setTransformPatternsCountConstant(value); + return this; + } + public Settings withTransformPatternsTrim(Boolean value) { setTransformPatternsTrim(value); return this; @@ -5971,6 +6009,7 @@ public class Settings builder.append("diagnosticsNullCondition", diagnosticsNullCondition); builder.append("transformPatterns", transformPatterns); builder.append("transformPatternsLogging", transformPatternsLogging); + builder.append("transformPatternsCountConstant", transformPatternsCountConstant); builder.append("transformPatternsTrim", transformPatternsTrim); builder.append("transformPatternsNotNot", transformPatternsNotNot); builder.append("transformPatternsNotComparison", transformPatternsNotComparison); @@ -6527,6 +6566,15 @@ public class Settings return false; } } + if (transformPatternsCountConstant == null) { + if (other.transformPatternsCountConstant!= null) { + return false; + } + } else { + if (!transformPatternsCountConstant.equals(other.transformPatternsCountConstant)) { + return false; + } + } if (transformPatternsTrim == null) { if (other.transformPatternsTrim!= null) { return false; @@ -7749,6 +7797,7 @@ public class Settings result = ((prime*result)+((diagnosticsNullCondition == null)? 0 :diagnosticsNullCondition.hashCode())); result = ((prime*result)+((transformPatterns == null)? 0 :transformPatterns.hashCode())); result = ((prime*result)+((transformPatternsLogging == null)? 0 :transformPatternsLogging.hashCode())); + result = ((prime*result)+((transformPatternsCountConstant == null)? 0 :transformPatternsCountConstant.hashCode())); result = ((prime*result)+((transformPatternsTrim == null)? 0 :transformPatternsTrim.hashCode())); result = ((prime*result)+((transformPatternsNotNot == null)? 0 :transformPatternsNotNot.hashCode())); result = ((prime*result)+((transformPatternsNotComparison == null)? 0 :transformPatternsNotComparison.hashCode())); diff --git a/jOOQ/src/main/java/org/jooq/impl/Patterns.java b/jOOQ/src/main/java/org/jooq/impl/Patterns.java index 0f93ff8833..aef9a31dd9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Patterns.java +++ b/jOOQ/src/main/java/org/jooq/impl/Patterns.java @@ -1678,6 +1678,17 @@ package org.jooq.impl; + + + + + + + + + + + diff --git a/jOOQ/src/main/resources/org/jooq/xsd/jooq-runtime-3.18.0.xsd b/jOOQ/src/main/resources/org/jooq/xsd/jooq-runtime-3.18.0.xsd index 289a5d7046..f4a6890e97 100644 --- a/jOOQ/src/main/resources/org/jooq/xsd/jooq-runtime-3.18.0.xsd +++ b/jOOQ/src/main/resources/org/jooq/xsd/jooq-runtime-3.18.0.xsd @@ -376,6 +376,17 @@ This feature is available in the commercial distribution only.]]>< + + COUNT(1) or any other COUNT(const) to COUNT(*). +

+There is no benefit to counting a constant expression. In fact, in some RDBMS, it might even be slightly +slower, at least in benchmarks. +

+To enable this feature, {@link #transformPatterns} must be enabled as well. +

+This feature is available in the commercial distribution only.]]> + + LTRIM(RTRIM(x)) or RTRIM(LTRIM(x)) to TRIM(x).