diff --git a/jOOQ/src/main/java/org/jooq/conf/Settings.java b/jOOQ/src/main/java/org/jooq/conf/Settings.java
index 119f5b5fbe..014f139f72 100644
--- a/jOOQ/src/main/java/org/jooq/conf/Settings.java
+++ b/jOOQ/src/main/java/org/jooq/conf/Settings.java
@@ -199,6 +199,8 @@ public class Settings
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsFlattenCaseAbbreviation = true;
@XmlElement(defaultValue = "true")
+ protected Boolean transformPatternsFlattenDecode = true;
+ @XmlElement(defaultValue = "true")
protected Boolean transformPatternsFlattenCase = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsTrivialCaseAbbreviation = true;
@@ -2509,6 +2511,37 @@ public class Settings
this.transformPatternsFlattenCaseAbbreviation = value;
}
+ /**
+ * Flatten nested DECODE functions.
+ *
+ * Nested DECODE functions can be flattened, as such:
+ *
DECODE(a, b, c, DECODE(a, d, e)) to DECODE(a, b, c, d, e)
+ * This feature is available in the commercial distribution only.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isTransformPatternsFlattenDecode() {
+ return transformPatternsFlattenDecode;
+ }
+
+ /**
+ * Sets the value of the transformPatternsFlattenDecode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setTransformPatternsFlattenDecode(Boolean value) {
+ this.transformPatternsFlattenDecode = value;
+ }
+
/**
* Transform CASE … ELSE CASE … by flattening the nested CASE.
*
@@ -5642,6 +5675,11 @@ public class Settings
return this;
}
+ public Settings withTransformPatternsFlattenDecode(Boolean value) {
+ setTransformPatternsFlattenDecode(value);
+ return this;
+ }
+
public Settings withTransformPatternsFlattenCase(Boolean value) {
setTransformPatternsFlattenCase(value);
return this;
@@ -6642,6 +6680,7 @@ public class Settings
builder.append("transformPatternsCaseToCaseAbbreviation", transformPatternsCaseToCaseAbbreviation);
builder.append("transformPatternsSimplifyCaseAbbreviation", transformPatternsSimplifyCaseAbbreviation);
builder.append("transformPatternsFlattenCaseAbbreviation", transformPatternsFlattenCaseAbbreviation);
+ builder.append("transformPatternsFlattenDecode", transformPatternsFlattenDecode);
builder.append("transformPatternsFlattenCase", transformPatternsFlattenCase);
builder.append("transformPatternsTrivialCaseAbbreviation", transformPatternsTrivialCaseAbbreviation);
builder.append("transformPatternsTrivialPredicates", transformPatternsTrivialPredicates);
@@ -7447,6 +7486,15 @@ public class Settings
return false;
}
}
+ if (transformPatternsFlattenDecode == null) {
+ if (other.transformPatternsFlattenDecode!= null) {
+ return false;
+ }
+ } else {
+ if (!transformPatternsFlattenDecode.equals(other.transformPatternsFlattenDecode)) {
+ return false;
+ }
+ }
if (transformPatternsFlattenCase == null) {
if (other.transformPatternsFlattenCase!= null) {
return false;
@@ -8590,6 +8638,7 @@ public class Settings
result = ((prime*result)+((transformPatternsCaseToCaseAbbreviation == null)? 0 :transformPatternsCaseToCaseAbbreviation.hashCode()));
result = ((prime*result)+((transformPatternsSimplifyCaseAbbreviation == null)? 0 :transformPatternsSimplifyCaseAbbreviation.hashCode()));
result = ((prime*result)+((transformPatternsFlattenCaseAbbreviation == null)? 0 :transformPatternsFlattenCaseAbbreviation.hashCode()));
+ result = ((prime*result)+((transformPatternsFlattenDecode == null)? 0 :transformPatternsFlattenDecode.hashCode()));
result = ((prime*result)+((transformPatternsFlattenCase == null)? 0 :transformPatternsFlattenCase.hashCode()));
result = ((prime*result)+((transformPatternsTrivialCaseAbbreviation == null)? 0 :transformPatternsTrivialCaseAbbreviation.hashCode()));
result = ((prime*result)+((transformPatternsTrivialPredicates == null)? 0 :transformPatternsTrivialPredicates.hashCode()));
diff --git a/jOOQ/src/main/java/org/jooq/impl/Patterns.java b/jOOQ/src/main/java/org/jooq/impl/Patterns.java
index 9991b53ac9..b6c4bb2acf 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Patterns.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Patterns.java
@@ -2223,6 +2223,19 @@ 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 65143d89a7..9a192e0867 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
@@ -681,6 +681,17 @@ Nested CASE abbreviations can be flattened, as such:
COALESCE(a, ..., COALESCE(b, ..., c), ..., d) to COALESCE(a, ..., b, ..., c, ..., d)
+This feature is available in the commercial distribution only.]]>
+
+
+
+Nested
This feature is available in the commercial distribution only.]]>DECODE functions can be flattened, as such:
+
+
+DECODE(a, b, c, DECODE(a, d, e)) to DECODE(a, b, c, d, e)