diff --git a/jOOQ/src/main/java/org/jooq/conf/Settings.java b/jOOQ/src/main/java/org/jooq/conf/Settings.java index f80279a82e..81304d47c5 100644 --- a/jOOQ/src/main/java/org/jooq/conf/Settings.java +++ b/jOOQ/src/main/java/org/jooq/conf/Settings.java @@ -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 BIT_SET(a, b) or BIT_SET(a, b, c) expression. + *

+ * 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 BIT_GET(a, b) expression. + *

+ * 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 (SELECT COUNT(*) …) > 0 to equivalent EXISTS (SELECT 1 …). *

@@ -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())); diff --git a/jOOQ/src/main/java/org/jooq/impl/Patterns.java b/jOOQ/src/main/java/org/jooq/impl/Patterns.java index 2d21555b2f..854028d3d7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Patterns.java +++ b/jOOQ/src/main/java/org/jooq/impl/Patterns.java @@ -2620,6 +2620,55 @@ 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 ac82a47638..a6742653b7 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 @@ -851,6 +851,18 @@ This transformation removes any trivial predicates. This feature is available in the commercial distribution only.]]> + + BIT_SET(a, b) or BIT_SET(a, b, c) expression. +

+This feature is available in the commercial distribution only.]]> + + + + BIT_GET(a, b) expression. +

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