[jOOQ/jOOQ#13593] [jOOQ/jOOQ#14581] BIT_GET and BIT_SET transformations

This commit is contained in:
Lukas Eder 2023-02-07 13:40:39 +01:00
parent 56d5cd6c3e
commit f1ac75ac77
3 changed files with 149 additions and 0 deletions

View File

@ -236,6 +236,10 @@ public class Settings
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsTrivialBitwiseOperations = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsBitSet = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsBitGet = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsScalarSubqueryCountAsteriskGtZero = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsScalarSubqueryCountExpressionGtZero = true;
@ -3078,6 +3082,58 @@ public class Settings
this.transformPatternsTrivialBitwiseOperations = value;
}
/**
* Transform bitwise operations to an equivalent <code>BIT_SET(a, b)</code> or <code>BIT_SET(a, b, c)</code> expression.
* <p>
* This feature is available in the commercial distribution only.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isTransformPatternsBitSet() {
return transformPatternsBitSet;
}
/**
* Sets the value of the transformPatternsBitSet property.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setTransformPatternsBitSet(Boolean value) {
this.transformPatternsBitSet = value;
}
/**
* Transform bitwise operations to an equivalent <code>BIT_GET(a, b)</code> expression.
* <p>
* This feature is available in the commercial distribution only.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isTransformPatternsBitGet() {
return transformPatternsBitGet;
}
/**
* Sets the value of the transformPatternsBitGet property.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setTransformPatternsBitGet(Boolean value) {
this.transformPatternsBitGet = value;
}
/**
* Transform predicates comparing scalar subqueries with a count <code>(SELECT COUNT(*) ) > 0</code> to equivalent <code>EXISTS (SELECT 1 )</code>.
* <p>
@ -6311,6 +6367,16 @@ public class Settings
return this;
}
public Settings withTransformPatternsBitSet(Boolean value) {
setTransformPatternsBitSet(value);
return this;
}
public Settings withTransformPatternsBitGet(Boolean value) {
setTransformPatternsBitGet(value);
return this;
}
public Settings withTransformPatternsScalarSubqueryCountAsteriskGtZero(Boolean value) {
setTransformPatternsScalarSubqueryCountAsteriskGtZero(value);
return this;
@ -7333,6 +7399,8 @@ public class Settings
builder.append("transformPatternsTrivialCaseAbbreviation", transformPatternsTrivialCaseAbbreviation);
builder.append("transformPatternsTrivialPredicates", transformPatternsTrivialPredicates);
builder.append("transformPatternsTrivialBitwiseOperations", transformPatternsTrivialBitwiseOperations);
builder.append("transformPatternsBitSet", transformPatternsBitSet);
builder.append("transformPatternsBitGet", transformPatternsBitGet);
builder.append("transformPatternsScalarSubqueryCountAsteriskGtZero", transformPatternsScalarSubqueryCountAsteriskGtZero);
builder.append("transformPatternsScalarSubqueryCountExpressionGtZero", transformPatternsScalarSubqueryCountExpressionGtZero);
builder.append("transformPatternsEmptyScalarSubquery", transformPatternsEmptyScalarSubquery);
@ -8300,6 +8368,24 @@ public class Settings
return false;
}
}
if (transformPatternsBitSet == null) {
if (other.transformPatternsBitSet!= null) {
return false;
}
} else {
if (!transformPatternsBitSet.equals(other.transformPatternsBitSet)) {
return false;
}
}
if (transformPatternsBitGet == null) {
if (other.transformPatternsBitGet!= null) {
return false;
}
} else {
if (!transformPatternsBitGet.equals(other.transformPatternsBitGet)) {
return false;
}
}
if (transformPatternsScalarSubqueryCountAsteriskGtZero == null) {
if (other.transformPatternsScalarSubqueryCountAsteriskGtZero!= null) {
return false;
@ -9461,6 +9547,8 @@ public class Settings
result = ((prime*result)+((transformPatternsTrivialCaseAbbreviation == null)? 0 :transformPatternsTrivialCaseAbbreviation.hashCode()));
result = ((prime*result)+((transformPatternsTrivialPredicates == null)? 0 :transformPatternsTrivialPredicates.hashCode()));
result = ((prime*result)+((transformPatternsTrivialBitwiseOperations == null)? 0 :transformPatternsTrivialBitwiseOperations.hashCode()));
result = ((prime*result)+((transformPatternsBitSet == null)? 0 :transformPatternsBitSet.hashCode()));
result = ((prime*result)+((transformPatternsBitGet == null)? 0 :transformPatternsBitGet.hashCode()));
result = ((prime*result)+((transformPatternsScalarSubqueryCountAsteriskGtZero == null)? 0 :transformPatternsScalarSubqueryCountAsteriskGtZero.hashCode()));
result = ((prime*result)+((transformPatternsScalarSubqueryCountExpressionGtZero == null)? 0 :transformPatternsScalarSubqueryCountExpressionGtZero.hashCode()));
result = ((prime*result)+((transformPatternsEmptyScalarSubquery == null)? 0 :transformPatternsEmptyScalarSubquery.hashCode()));

View File

@ -2620,6 +2620,55 @@ package org.jooq.impl;

View File

@ -851,6 +851,18 @@ This transformation removes any trivial predicates.
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="transformPatternsBitSet" type="boolean" minOccurs="0" maxOccurs="1" default="true">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Transform bitwise operations to an equivalent <code>BIT_SET(a, b)</code> or <code>BIT_SET(a, b, c)</code> expression.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="transformPatternsBitGet" type="boolean" minOccurs="0" maxOccurs="1" default="true">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Transform bitwise operations to an equivalent <code>BIT_GET(a, b)</code> expression.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="transformPatternsScalarSubqueryCountAsteriskGtZero" type="boolean" minOccurs="0" maxOccurs="1" default="true">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Transform predicates comparing scalar subqueries with a count <code>(SELECT COUNT(*) ..) > 0</code> to equivalent <code>EXISTS (SELECT 1 ..)</code>.
<p>