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.]]><
+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.]]>
COUNT(const) to COUNT(*).
+RTRIM(LTRIM(x)) to TRIM(x).