[jOOQ/jOOQ#13593] transformPatternsUnnecessaryScalarSubquery

This commit is contained in:
Lukas Eder 2022-11-16 10:54:38 +01:00
parent 2e9e8960e6
commit 394bd54d9f
3 changed files with 181 additions and 0 deletions

View File

@ -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 <code>SELECT (SELECT 1)</code> to <code>SELECT 1</code>.
* <p>
* Scalar subqueries that don't have any content other than a <code>SELECT</code> clause are unnecessary
* and can be removed.
* <p>
* To enable this feature, {@link #transformPatterns} must be enabled as well.
* <p>
* 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 <code>SELECT a, b FROM t GROUP BY a, a, b</code> to <code>SELECT a, b FROM t GROUP BY a, b</code>.
* <p>
@ -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()));

View File

@ -2315,6 +2315,127 @@ package org.jooq.impl;

View File

@ -418,6 +418,17 @@ To enable this feature, {@link #transformPatterns} must be enabled as well.
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="transformPatternsUnnecessaryScalarSubquery" type="boolean" minOccurs="0" maxOccurs="1" default="true">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Transform <code>SELECT (SELECT 1)</code> to <code>SELECT 1</code>.
<p>
Scalar subqueries that don't have any content other than a <code>SELECT</code> clause are unnecessary
and can be removed.
<p>
To enable this feature, {@link #transformPatterns} must be enabled as well.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="transformPatternsUnnecessaryGroupByExpressions" type="boolean" minOccurs="0" maxOccurs="1" default="true">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Transform <code>SELECT a, b FROM t GROUP BY a, a, b</code> to <code>SELECT a, b FROM t GROUP BY a, b</code>.
<p>