diff --git a/jOOQ/src/main/java/org/jooq/conf/Settings.java b/jOOQ/src/main/java/org/jooq/conf/Settings.java index 4bd691aec2..978d818a2a 100644 --- a/jOOQ/src/main/java/org/jooq/conf/Settings.java +++ b/jOOQ/src/main/java/org/jooq/conf/Settings.java @@ -201,6 +201,8 @@ public class Settings @XmlElement(defaultValue = "true") protected Boolean transformPatternsTrivialPredicates = true; @XmlElement(defaultValue = "true") + protected Boolean transformPatternsTrivialBitwiseOperations = true; + @XmlElement(defaultValue = "true") protected Boolean transformPatternsScalarSubqueryCountAsteriskGtZero = true; @XmlElement(defaultValue = "true") protected Boolean transformPatternsScalarSubqueryCountExpressionGtZero = true; @@ -2521,6 +2523,34 @@ public class Settings this.transformPatternsTrivialPredicates = value; } + /** + * Transform trivial bitwise comparisons like BIT_OR(a, 0) to a. + *

+ * This transformation removes any trivial predicates. + *

+ * This feature is available in the commercial distribution only. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isTransformPatternsTrivialBitwiseOperations() { + return transformPatternsTrivialBitwiseOperations; + } + + /** + * Sets the value of the transformPatternsTrivialBitwiseOperations property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setTransformPatternsTrivialBitwiseOperations(Boolean value) { + this.transformPatternsTrivialBitwiseOperations = value; + } + /** * Transform predicates comparing scalar subqueries with a count (SELECT COUNT(*) …) > 0 to equivalent EXISTS (SELECT 1 …). *

@@ -5546,6 +5576,11 @@ public class Settings return this; } + public Settings withTransformPatternsTrivialBitwiseOperations(Boolean value) { + setTransformPatternsTrivialBitwiseOperations(value); + return this; + } + public Settings withTransformPatternsScalarSubqueryCountAsteriskGtZero(Boolean value) { setTransformPatternsScalarSubqueryCountAsteriskGtZero(value); return this; @@ -6527,6 +6562,7 @@ public class Settings builder.append("transformPatternsFlattenCaseAbbreviation", transformPatternsFlattenCaseAbbreviation); builder.append("transformPatternsTrivialCaseAbbreviation", transformPatternsTrivialCaseAbbreviation); builder.append("transformPatternsTrivialPredicates", transformPatternsTrivialPredicates); + builder.append("transformPatternsTrivialBitwiseOperations", transformPatternsTrivialBitwiseOperations); builder.append("transformPatternsScalarSubqueryCountAsteriskGtZero", transformPatternsScalarSubqueryCountAsteriskGtZero); builder.append("transformPatternsScalarSubqueryCountExpressionGtZero", transformPatternsScalarSubqueryCountExpressionGtZero); builder.append("transformPatternsEmptyScalarSubquery", transformPatternsEmptyScalarSubquery); @@ -7337,6 +7373,15 @@ public class Settings return false; } } + if (transformPatternsTrivialBitwiseOperations == null) { + if (other.transformPatternsTrivialBitwiseOperations!= null) { + return false; + } + } else { + if (!transformPatternsTrivialBitwiseOperations.equals(other.transformPatternsTrivialBitwiseOperations)) { + return false; + } + } if (transformPatternsScalarSubqueryCountAsteriskGtZero == null) { if (other.transformPatternsScalarSubqueryCountAsteriskGtZero!= null) { return false; @@ -8445,6 +8490,7 @@ public class Settings result = ((prime*result)+((transformPatternsFlattenCaseAbbreviation == null)? 0 :transformPatternsFlattenCaseAbbreviation.hashCode())); 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)+((transformPatternsScalarSubqueryCountAsteriskGtZero == null)? 0 :transformPatternsScalarSubqueryCountAsteriskGtZero.hashCode())); result = ((prime*result)+((transformPatternsScalarSubqueryCountExpressionGtZero == null)? 0 :transformPatternsScalarSubqueryCountExpressionGtZero.hashCode())); result = ((prime*result)+((transformPatternsEmptyScalarSubquery == null)? 0 :transformPatternsEmptyScalarSubquery.hashCode())); diff --git a/jOOQ/src/main/java/org/jooq/impl/Patterns.java b/jOOQ/src/main/java/org/jooq/impl/Patterns.java index 698c0fd48a..d7954a63aa 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Patterns.java +++ b/jOOQ/src/main/java/org/jooq/impl/Patterns.java @@ -2090,6 +2090,33 @@ 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 66523ec829..7816d34185 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 @@ -682,6 +682,14 @@ This transformation removes any trivial predicates. This feature is available in the commercial distribution only.]]> + + BIT_OR(a, 0) to a. +

+This transformation removes any trivial predicates. +

+This feature is available in the commercial distribution only.]]> + + (SELECT COUNT(*) ..) > 0 to equivalent EXISTS (SELECT 1 ..).