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.]]>
+
+This feature is available in the commercial distribution only.]]>
+This feature is available in the commercial distribution only.]]>
BIT_SET(a, b, c) expression.
+EXISTS (SELECT 1 ..).