[jOOQ/jOOQ#13593] Implement Settings.transformPatternsCaseElseCase

This commit is contained in:
Lukas Eder 2022-10-27 16:02:52 +02:00
parent 46539cf445
commit bc88751f33
5 changed files with 69 additions and 2 deletions

View File

@ -233,7 +233,7 @@ extends
* Subject to change in future jOOQ versions, use at your own risk.
*/
@Experimental
UnmodifiableList<? extends SelectFieldOrAsterisk> $distinctOn();
@NotNull UnmodifiableList<? extends SelectFieldOrAsterisk> $distinctOn();
/**
* Experimental query object model accessor method, see also {@link QOM}.

View File

@ -177,6 +177,8 @@ public class Settings
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsCaseElseNull = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsCaseElseCase = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsTrivialCaseAbbreviation = true;
@XmlElement(defaultValue = "true")
protected Boolean transformPatternsTrivialPredicates = true;
@ -2139,6 +2141,34 @@ public class Settings
this.transformPatternsCaseElseNull = value;
}
/**
* Transform <code>CASE ELSE CASE </code> by flattening the nested <code>CASE</code>.
* <p>
* <code>CASE WHEN a THEN b ELSE CASE WHEN c THEN d END END</code> is equivalent to <code>CASE WHEN a THEN b WHEN c THEN d END</code>.
* <p>
* This feature is available in the commercial distribution only.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isTransformPatternsCaseElseCase() {
return transformPatternsCaseElseCase;
}
/**
* Sets the value of the transformPatternsCaseElseCase property.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setTransformPatternsCaseElseCase(Boolean value) {
this.transformPatternsCaseElseCase = value;
}
/**
* Transform trivial case abbreviations like <code>NVL(NULL, a)</code> to <code>a</code>.
* <p>
@ -5161,6 +5191,11 @@ public class Settings
return this;
}
public Settings withTransformPatternsCaseElseCase(Boolean value) {
setTransformPatternsCaseElseCase(value);
return this;
}
public Settings withTransformPatternsTrivialCaseAbbreviation(Boolean value) {
setTransformPatternsTrivialCaseAbbreviation(value);
return this;
@ -6140,6 +6175,7 @@ public class Settings
builder.append("transformPatternsMergeRangePredicates", transformPatternsMergeRangePredicates);
builder.append("transformPatternsMergeBetweenSymmetricPredicates", transformPatternsMergeBetweenSymmetricPredicates);
builder.append("transformPatternsCaseElseNull", transformPatternsCaseElseNull);
builder.append("transformPatternsCaseElseCase", transformPatternsCaseElseCase);
builder.append("transformPatternsTrivialCaseAbbreviation", transformPatternsTrivialCaseAbbreviation);
builder.append("transformPatternsTrivialPredicates", transformPatternsTrivialPredicates);
builder.append("transformPatternsScalarSubqueryCountAsteriskGtZero", transformPatternsScalarSubqueryCountAsteriskGtZero);
@ -6844,6 +6880,15 @@ public class Settings
return false;
}
}
if (transformPatternsCaseElseCase == null) {
if (other.transformPatternsCaseElseCase!= null) {
return false;
}
} else {
if (!transformPatternsCaseElseCase.equals(other.transformPatternsCaseElseCase)) {
return false;
}
}
if (transformPatternsTrivialCaseAbbreviation == null) {
if (other.transformPatternsTrivialCaseAbbreviation!= null) {
return false;
@ -7958,6 +8003,7 @@ public class Settings
result = ((prime*result)+((transformPatternsMergeRangePredicates == null)? 0 :transformPatternsMergeRangePredicates.hashCode()));
result = ((prime*result)+((transformPatternsMergeBetweenSymmetricPredicates == null)? 0 :transformPatternsMergeBetweenSymmetricPredicates.hashCode()));
result = ((prime*result)+((transformPatternsCaseElseNull == null)? 0 :transformPatternsCaseElseNull.hashCode()));
result = ((prime*result)+((transformPatternsCaseElseCase == null)? 0 :transformPatternsCaseElseCase.hashCode()));
result = ((prime*result)+((transformPatternsTrivialCaseAbbreviation == null)? 0 :transformPatternsTrivialCaseAbbreviation.hashCode()));
result = ((prime*result)+((transformPatternsTrivialPredicates == null)? 0 :transformPatternsTrivialPredicates.hashCode()));
result = ((prime*result)+((transformPatternsScalarSubqueryCountAsteriskGtZero == null)? 0 :transformPatternsScalarSubqueryCountAsteriskGtZero.hashCode()));

View File

@ -1722,6 +1722,13 @@ package org.jooq.impl;

View File

@ -251,7 +251,13 @@ public final class QOM {
java.util.List<Q>
permits
QueryPartListView
{}
{
@NotNull default UnmodifiableList<Q> $concat(UnmodifiableList<Q> other) {
QueryPartList<Q> r = new QueryPartList<>(this);
r.addAll(other);
return r;
}
}
public /*sealed*/ interface With
extends

View File

@ -560,6 +560,14 @@ This feature is available in the commercial distribution only.]]></jxb:javadoc><
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="transformPatternsCaseElseCase" type="boolean" minOccurs="0" maxOccurs="1" default="true">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Transform <code>CASE .. ELSE CASE ..</code> by flattening the nested <code>CASE</code>.
<p>
<code>CASE WHEN a THEN b ELSE CASE WHEN c THEN d END END</code> is equivalent to <code>CASE WHEN a THEN b WHEN c THEN d END</code>.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
</element>
<element name="transformPatternsTrivialCaseAbbreviation" type="boolean" minOccurs="0" maxOccurs="1" default="true">
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Transform trivial case abbreviations like <code>NVL(NULL, a)</code> to <code>a</code>.
<p>