diff --git a/jOOQ/src/main/java/org/jooq/conf/Settings.java b/jOOQ/src/main/java/org/jooq/conf/Settings.java
index c4122ab325..465550db59 100644
--- a/jOOQ/src/main/java/org/jooq/conf/Settings.java
+++ b/jOOQ/src/main/java/org/jooq/conf/Settings.java
@@ -151,6 +151,8 @@ public class Settings
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsUnnecessaryScalarSubquery = true;
@XmlElement(defaultValue = "true")
+ protected Boolean transformPatternsUnnecessaryInnerJoin = true;
+ @XmlElement(defaultValue = "true")
protected Boolean transformPatternsUnnecessaryGroupByExpressions = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsUnnecessaryOrderByExpressions = true;
@@ -1793,6 +1795,36 @@ public class Settings
this.transformPatternsUnnecessaryScalarSubquery = value;
}
+ /**
+ * Transform SELECT * FROM t INNER JOIN u ON TRUE to SELECT * FROM t CROSS JOIN u.
+ *
+ * Some INNER JOIN expressions can be proven to be unnecessary.
+ *
+ * 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 isTransformPatternsUnnecessaryInnerJoin() {
+ return transformPatternsUnnecessaryInnerJoin;
+ }
+
+ /**
+ * Sets the value of the transformPatternsUnnecessaryInnerJoin property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setTransformPatternsUnnecessaryInnerJoin(Boolean value) {
+ this.transformPatternsUnnecessaryInnerJoin = value;
+ }
+
/**
* Transform SELECT a, b FROM t GROUP BY a, a, b to SELECT a, b FROM t GROUP BY a, b.
*
@@ -5796,6 +5828,11 @@ public class Settings
return this;
}
+ public Settings withTransformPatternsUnnecessaryInnerJoin(Boolean value) {
+ setTransformPatternsUnnecessaryInnerJoin(value);
+ return this;
+ }
+
public Settings withTransformPatternsUnnecessaryGroupByExpressions(Boolean value) {
setTransformPatternsUnnecessaryGroupByExpressions(value);
return this;
@@ -6941,6 +6978,7 @@ public class Settings
builder.append("transformPatternsLogging", transformPatternsLogging);
builder.append("transformPatternsUnnecessaryDistinct", transformPatternsUnnecessaryDistinct);
builder.append("transformPatternsUnnecessaryScalarSubquery", transformPatternsUnnecessaryScalarSubquery);
+ builder.append("transformPatternsUnnecessaryInnerJoin", transformPatternsUnnecessaryInnerJoin);
builder.append("transformPatternsUnnecessaryGroupByExpressions", transformPatternsUnnecessaryGroupByExpressions);
builder.append("transformPatternsUnnecessaryOrderByExpressions", transformPatternsUnnecessaryOrderByExpressions);
builder.append("transformPatternsUnnecessaryExistsSubqueryClauses", transformPatternsUnnecessaryExistsSubqueryClauses);
@@ -7563,6 +7601,15 @@ public class Settings
return false;
}
}
+ if (transformPatternsUnnecessaryInnerJoin == null) {
+ if (other.transformPatternsUnnecessaryInnerJoin!= null) {
+ return false;
+ }
+ } else {
+ if (!transformPatternsUnnecessaryInnerJoin.equals(other.transformPatternsUnnecessaryInnerJoin)) {
+ return false;
+ }
+ }
if (transformPatternsUnnecessaryGroupByExpressions == null) {
if (other.transformPatternsUnnecessaryGroupByExpressions!= null) {
return false;
@@ -8979,6 +9026,7 @@ public class Settings
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)+((transformPatternsUnnecessaryInnerJoin == null)? 0 :transformPatternsUnnecessaryInnerJoin.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 230dc87b61..fdc5b3ff90 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Patterns.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Patterns.java
@@ -2452,6 +2452,14 @@ 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 c61544d549..e891cffe3e 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
@@ -429,6 +429,16 @@ To enable this feature, {@link #transformPatterns} must be enabled as well.
This feature is available in the commercial distribution only.]]>
+
+Some
+To enable this feature, {@link #transformPatterns} must be enabled as well.
+
+This feature is available in the commercial distribution only.]]>
SELECT * FROM t CROSS JOIN u.
+INNER JOIN expressions can be proven to be unnecessary.
+SELECT a, b FROM t GROUP BY a, b.