diff --git a/jOOQ/src/main/java/org/jooq/conf/Settings.java b/jOOQ/src/main/java/org/jooq/conf/Settings.java
index cb7586eb60..c4122ab325 100644
--- a/jOOQ/src/main/java/org/jooq/conf/Settings.java
+++ b/jOOQ/src/main/java/org/jooq/conf/Settings.java
@@ -149,6 +149,8 @@ public class Settings
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsUnnecessaryDistinct = true;
@XmlElement(defaultValue = "true")
+ protected Boolean transformPatternsUnnecessaryScalarSubquery = true;
+ @XmlElement(defaultValue = "true")
protected Boolean transformPatternsUnnecessaryGroupByExpressions = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsUnnecessaryOrderByExpressions = true;
@@ -1760,6 +1762,37 @@ public class Settings
this.transformPatternsUnnecessaryDistinct = value;
}
+ /**
+ * Transform SELECT (SELECT 1) to SELECT 1.
+ *
+ * Scalar subqueries that don't have any content other than a SELECT clause are unnecessary
+ * and can be removed.
+ *
+ * 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 isTransformPatternsUnnecessaryScalarSubquery() {
+ return transformPatternsUnnecessaryScalarSubquery;
+ }
+
+ /**
+ * Sets the value of the transformPatternsUnnecessaryScalarSubquery property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setTransformPatternsUnnecessaryScalarSubquery(Boolean value) {
+ this.transformPatternsUnnecessaryScalarSubquery = value;
+ }
+
/**
* Transform SELECT a, b FROM t GROUP BY a, a, b to SELECT a, b FROM t GROUP BY a, b.
*
@@ -5758,6 +5791,11 @@ public class Settings
return this;
}
+ public Settings withTransformPatternsUnnecessaryScalarSubquery(Boolean value) {
+ setTransformPatternsUnnecessaryScalarSubquery(value);
+ return this;
+ }
+
public Settings withTransformPatternsUnnecessaryGroupByExpressions(Boolean value) {
setTransformPatternsUnnecessaryGroupByExpressions(value);
return this;
@@ -6902,6 +6940,7 @@ public class Settings
builder.append("transformPatterns", transformPatterns);
builder.append("transformPatternsLogging", transformPatternsLogging);
builder.append("transformPatternsUnnecessaryDistinct", transformPatternsUnnecessaryDistinct);
+ builder.append("transformPatternsUnnecessaryScalarSubquery", transformPatternsUnnecessaryScalarSubquery);
builder.append("transformPatternsUnnecessaryGroupByExpressions", transformPatternsUnnecessaryGroupByExpressions);
builder.append("transformPatternsUnnecessaryOrderByExpressions", transformPatternsUnnecessaryOrderByExpressions);
builder.append("transformPatternsUnnecessaryExistsSubqueryClauses", transformPatternsUnnecessaryExistsSubqueryClauses);
@@ -7515,6 +7554,15 @@ public class Settings
return false;
}
}
+ if (transformPatternsUnnecessaryScalarSubquery == null) {
+ if (other.transformPatternsUnnecessaryScalarSubquery!= null) {
+ return false;
+ }
+ } else {
+ if (!transformPatternsUnnecessaryScalarSubquery.equals(other.transformPatternsUnnecessaryScalarSubquery)) {
+ return false;
+ }
+ }
if (transformPatternsUnnecessaryGroupByExpressions == null) {
if (other.transformPatternsUnnecessaryGroupByExpressions!= null) {
return false;
@@ -8930,6 +8978,7 @@ public class Settings
result = ((prime*result)+((transformPatterns == null)? 0 :transformPatterns.hashCode()));
result = ((prime*result)+((transformPatternsLogging == null)? 0 :transformPatternsLogging.hashCode()));
result = ((prime*result)+((transformPatternsUnnecessaryDistinct == null)? 0 :transformPatternsUnnecessaryDistinct.hashCode()));
+ result = ((prime*result)+((transformPatternsUnnecessaryScalarSubquery == null)? 0 :transformPatternsUnnecessaryScalarSubquery.hashCode()));
result = ((prime*result)+((transformPatternsUnnecessaryGroupByExpressions == null)? 0 :transformPatternsUnnecessaryGroupByExpressions.hashCode()));
result = ((prime*result)+((transformPatternsUnnecessaryOrderByExpressions == null)? 0 :transformPatternsUnnecessaryOrderByExpressions.hashCode()));
result = ((prime*result)+((transformPatternsUnnecessaryExistsSubqueryClauses == null)? 0 :transformPatternsUnnecessaryExistsSubqueryClauses.hashCode()));
diff --git a/jOOQ/src/main/java/org/jooq/impl/Patterns.java b/jOOQ/src/main/java/org/jooq/impl/Patterns.java
index 36498691c9..37265a70de 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Patterns.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Patterns.java
@@ -2315,6 +2315,127 @@ 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 3dc407680d..c61544d549 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
@@ -418,6 +418,17 @@ To enable this feature, {@link #transformPatterns} must be enabled as well.
This feature is available in the commercial distribution only.]]>
+
+Scalar subqueries that don't have any content other than a
+To enable this feature, {@link #transformPatterns} must be enabled as well.
+
+This feature is available in the commercial distribution only.]]>
SELECT 1.
+SELECT clause are unnecessary
+and can be removed.
+SELECT a, b FROM t GROUP BY a, b.