[#2434] Added new public SubqueryComparator
This commit is contained in:
parent
626b4aad5c
commit
b4ef723bcf
@ -1179,6 +1179,7 @@ class Rows extends Generators {
|
||||
import org.jooq.Row«typeSuffixRaw(degree)»;
|
||||
«ENDFOR»
|
||||
import org.jooq.Select;
|
||||
import org.jooq.SubqueryComparator;
|
||||
|
||||
/**
|
||||
* @author Lukas Eder
|
||||
@ -1787,13 +1788,13 @@ class Rows extends Generators {
|
||||
@Override
|
||||
public final Condition in(Collection rows) {
|
||||
QueryPartList<Row> list = new QueryPartList<Row>(rows);
|
||||
return new RowInCondition(this, list, SubqueryOperator.IN);
|
||||
return new RowInCondition(this, list, SubqueryComparator.IN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Condition notIn(Collection rows) {
|
||||
QueryPartList<Row> list = new QueryPartList<Row>(rows);
|
||||
return new RowInCondition(this, list, SubqueryOperator.NOT_IN);
|
||||
return new RowInCondition(this, list, SubqueryComparator.NOT_IN);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
@ -1802,7 +1803,7 @@ class Rows extends Generators {
|
||||
|
||||
@Override
|
||||
public final Condition equal(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.EQUALS);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.EQUALS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1812,7 +1813,7 @@ class Rows extends Generators {
|
||||
|
||||
@Override
|
||||
public final Condition notEqual(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.NOT_EQUALS);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.NOT_EQUALS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1822,7 +1823,7 @@ class Rows extends Generators {
|
||||
|
||||
@Override
|
||||
public final Condition greaterThan(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.GREATER);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.GREATER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1832,7 +1833,7 @@ class Rows extends Generators {
|
||||
|
||||
@Override
|
||||
public final Condition greaterOrEqual(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.GREATER_OR_EQUAL);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.GREATER_OR_EQUAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1842,7 +1843,7 @@ class Rows extends Generators {
|
||||
|
||||
@Override
|
||||
public final Condition lessThan(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.LESS);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.LESS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1852,7 +1853,7 @@ class Rows extends Generators {
|
||||
|
||||
@Override
|
||||
public final Condition lessOrEqual(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.LESS_OR_EQUAL);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.LESS_OR_EQUAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1862,12 +1863,12 @@ class Rows extends Generators {
|
||||
|
||||
@Override
|
||||
public final Condition in(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.IN);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.IN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Condition notIn(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.NOT_IN);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.NOT_IN);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -36,10 +36,17 @@
|
||||
|
||||
package org.jooq;
|
||||
|
||||
|
||||
/**
|
||||
* A comparator to be used in conditions
|
||||
* A comparator to be used in conditions.
|
||||
* <p>
|
||||
* Comparison operators listed here can be used to compare {@link Field} or
|
||||
* {@link Row} values with other {@link Field} or {@link Row} values. See
|
||||
* {@link SubqueryComparator} for comparing {@link Field} or {@link Row} values
|
||||
* with subselects.
|
||||
*
|
||||
* @author Lukas Eder
|
||||
* @see SubqueryComparator
|
||||
*/
|
||||
public enum Comparator {
|
||||
|
||||
|
||||
@ -34,29 +34,51 @@
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package org.jooq.impl;
|
||||
package org.jooq;
|
||||
|
||||
|
||||
/**
|
||||
* Any operator used in a {@link SubQueryCondition}
|
||||
* A comparator to be used in subquery conditions.
|
||||
* <p>
|
||||
* Comparison operators listed here can be used to compare {@link Field} or
|
||||
* {@link Row} values with subqueries. See {@link Comparator} for comparing
|
||||
* {@link Field} or {@link Row} values with other {@link Field} or {@link Row}
|
||||
* values.
|
||||
*
|
||||
* @author Lukas Eder
|
||||
* @see Comparator
|
||||
*/
|
||||
enum SubqueryOperator {
|
||||
public enum SubqueryComparator {
|
||||
|
||||
@Support
|
||||
IN("in"),
|
||||
|
||||
@Support
|
||||
NOT_IN("not in"),
|
||||
|
||||
@Support
|
||||
EQUALS("="),
|
||||
|
||||
@Support
|
||||
NOT_EQUALS("<>"),
|
||||
|
||||
@Support
|
||||
LESS("<"),
|
||||
|
||||
@Support
|
||||
LESS_OR_EQUAL("<="),
|
||||
|
||||
@Support
|
||||
GREATER(">"),
|
||||
|
||||
@Support
|
||||
GREATER_OR_EQUAL(">="),
|
||||
|
||||
;
|
||||
|
||||
private final String sql;
|
||||
|
||||
private SubqueryOperator(String sql) {
|
||||
private SubqueryComparator(String sql) {
|
||||
this.sql = sql;
|
||||
}
|
||||
|
||||
@ -70,6 +70,7 @@ import org.jooq.RenderContext;
|
||||
import org.jooq.Select;
|
||||
import org.jooq.SortField;
|
||||
import org.jooq.SortOrder;
|
||||
import org.jooq.SubqueryComparator;
|
||||
import org.jooq.WindowIgnoreNullsStep;
|
||||
import org.jooq.WindowPartitionByStep;
|
||||
import org.jooq.tools.Convert;
|
||||
@ -584,7 +585,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
return falseCondition();
|
||||
}
|
||||
else {
|
||||
return new InCondition<T>(this, nullSafe(values), SubqueryOperator.IN);
|
||||
return new InCondition<T>(this, nullSafe(values), SubqueryComparator.IN);
|
||||
}
|
||||
}
|
||||
|
||||
@ -601,7 +602,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
|
||||
@Override
|
||||
public final Condition in(Select<? extends Record1<T>> query) {
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryOperator.IN);
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryComparator.IN);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -616,7 +617,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
|
||||
@Override
|
||||
public final Condition notIn(Field<?>... values) {
|
||||
return new InCondition<T>(this, nullSafe(values), SubqueryOperator.NOT_IN);
|
||||
return new InCondition<T>(this, nullSafe(values), SubqueryComparator.NOT_IN);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -632,7 +633,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
|
||||
@Override
|
||||
public final Condition notIn(Select<? extends Record1<T>> query) {
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryOperator.NOT_IN);
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryComparator.NOT_IN);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -857,7 +858,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
|
||||
@Override
|
||||
public final Condition equal(Select<? extends Record1<T>> query) {
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryOperator.EQUALS);
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryComparator.EQUALS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -887,7 +888,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
|
||||
@Override
|
||||
public final Condition notEqual(Select<? extends Record1<T>> query) {
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryOperator.NOT_EQUALS);
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryComparator.NOT_EQUALS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -907,7 +908,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
|
||||
@Override
|
||||
public final Condition lessThan(Select<? extends Record1<T>> query) {
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryOperator.LESS);
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryComparator.LESS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -927,7 +928,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
|
||||
@Override
|
||||
public final Condition lessOrEqual(Select<? extends Record1<T>> query) {
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryOperator.LESS_OR_EQUAL);
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryComparator.LESS_OR_EQUAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -947,7 +948,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
|
||||
@Override
|
||||
public final Condition greaterThan(Select<? extends Record1<T>> query) {
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryOperator.GREATER);
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryComparator.GREATER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -967,7 +968,7 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
|
||||
@Override
|
||||
public final Condition greaterOrEqual(Select<? extends Record1<T>> query) {
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryOperator.GREATER_OR_EQUAL);
|
||||
return new SelectQueryAsSubQueryCondition(query, this, SubqueryComparator.GREATER_OR_EQUAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -42,20 +42,21 @@ import java.util.List;
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.RenderContext;
|
||||
import org.jooq.SubqueryComparator;
|
||||
|
||||
/**
|
||||
* @author Lukas Eder
|
||||
*/
|
||||
class InCondition<T> extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = -1653924248576930761L;
|
||||
private static final int IN_LIMIT = 1000;
|
||||
private static final long serialVersionUID = -1653924248576930761L;
|
||||
private static final int IN_LIMIT = 1000;
|
||||
|
||||
private final Field<T> field;
|
||||
private final Field<?>[] values;
|
||||
private final SubqueryOperator operator;
|
||||
private final Field<T> field;
|
||||
private final Field<?>[] values;
|
||||
private final SubqueryComparator operator;
|
||||
|
||||
InCondition(Field<T> field, Field<?>[] values, SubqueryOperator operator) {
|
||||
InCondition(Field<T> field, Field<?>[] values, SubqueryComparator operator) {
|
||||
this.field = field;
|
||||
this.values = values;
|
||||
this.operator = operator;
|
||||
@ -87,7 +88,7 @@ class InCondition<T> extends AbstractCondition {
|
||||
|
||||
// [#1515] The connector depends on the IN / NOT IN
|
||||
// operator
|
||||
if (operator == SubqueryOperator.IN) {
|
||||
if (operator == SubqueryComparator.IN) {
|
||||
context.formatSeparator()
|
||||
.keyword("or ");
|
||||
}
|
||||
|
||||
@ -119,6 +119,7 @@ import org.jooq.Row20;
|
||||
import org.jooq.Row21;
|
||||
import org.jooq.Row22;
|
||||
import org.jooq.Select;
|
||||
import org.jooq.SubqueryComparator;
|
||||
|
||||
/**
|
||||
* @author Lukas Eder
|
||||
@ -9446,13 +9447,13 @@ implements
|
||||
@Override
|
||||
public final Condition in(Collection rows) {
|
||||
QueryPartList<Row> list = new QueryPartList<Row>(rows);
|
||||
return new RowInCondition(this, list, SubqueryOperator.IN);
|
||||
return new RowInCondition(this, list, SubqueryComparator.IN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Condition notIn(Collection rows) {
|
||||
QueryPartList<Row> list = new QueryPartList<Row>(rows);
|
||||
return new RowInCondition(this, list, SubqueryOperator.NOT_IN);
|
||||
return new RowInCondition(this, list, SubqueryComparator.NOT_IN);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
@ -9461,7 +9462,7 @@ implements
|
||||
|
||||
@Override
|
||||
public final Condition equal(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.EQUALS);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.EQUALS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -9471,7 +9472,7 @@ implements
|
||||
|
||||
@Override
|
||||
public final Condition notEqual(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.NOT_EQUALS);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.NOT_EQUALS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -9481,7 +9482,7 @@ implements
|
||||
|
||||
@Override
|
||||
public final Condition greaterThan(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.GREATER);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.GREATER);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -9491,7 +9492,7 @@ implements
|
||||
|
||||
@Override
|
||||
public final Condition greaterOrEqual(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.GREATER_OR_EQUAL);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.GREATER_OR_EQUAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -9501,7 +9502,7 @@ implements
|
||||
|
||||
@Override
|
||||
public final Condition lessThan(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.LESS);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.LESS);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -9511,7 +9512,7 @@ implements
|
||||
|
||||
@Override
|
||||
public final Condition lessOrEqual(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.LESS_OR_EQUAL);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.LESS_OR_EQUAL);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -9521,12 +9522,12 @@ implements
|
||||
|
||||
@Override
|
||||
public final Condition in(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.IN);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.IN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Condition notIn(Select select) {
|
||||
return new RowSubqueryCondition(this, select, SubqueryOperator.NOT_IN);
|
||||
return new RowSubqueryCondition(this, select, SubqueryComparator.NOT_IN);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -45,7 +45,7 @@ import static org.jooq.SQLDialect.INGRES;
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
import static org.jooq.SQLDialect.SQLSERVER;
|
||||
import static org.jooq.SQLDialect.SYBASE;
|
||||
import static org.jooq.impl.SubqueryOperator.NOT_IN;
|
||||
import static org.jooq.SubqueryComparator.NOT_IN;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -58,6 +58,7 @@ import org.jooq.QueryPart;
|
||||
import org.jooq.QueryPartInternal;
|
||||
import org.jooq.RenderContext;
|
||||
import org.jooq.Row;
|
||||
import org.jooq.SubqueryComparator;
|
||||
|
||||
/**
|
||||
* @author Lukas Eder
|
||||
@ -71,9 +72,9 @@ class RowInCondition extends AbstractCondition {
|
||||
|
||||
private final Row left;
|
||||
private final QueryPartList<? extends Row> right;
|
||||
private final SubqueryOperator operator;
|
||||
private final SubqueryComparator operator;
|
||||
|
||||
RowInCondition(Row left, QueryPartList<? extends Row> right, SubqueryOperator operator) {
|
||||
RowInCondition(Row left, QueryPartList<? extends Row> right, SubqueryComparator operator) {
|
||||
this.left = left;
|
||||
this.right = right;
|
||||
this.operator = operator;
|
||||
|
||||
@ -42,15 +42,15 @@ import static org.jooq.SQLDialect.HSQLDB;
|
||||
import static org.jooq.SQLDialect.MYSQL;
|
||||
import static org.jooq.SQLDialect.ORACLE;
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
import static org.jooq.SubqueryComparator.EQUALS;
|
||||
import static org.jooq.SubqueryComparator.IN;
|
||||
import static org.jooq.SubqueryComparator.NOT_EQUALS;
|
||||
import static org.jooq.SubqueryComparator.NOT_IN;
|
||||
import static org.jooq.impl.DSL.exists;
|
||||
import static org.jooq.impl.DSL.fieldByName;
|
||||
import static org.jooq.impl.DSL.notExists;
|
||||
import static org.jooq.impl.DSL.row;
|
||||
import static org.jooq.impl.DSL.select;
|
||||
import static org.jooq.impl.SubqueryOperator.EQUALS;
|
||||
import static org.jooq.impl.SubqueryOperator.IN;
|
||||
import static org.jooq.impl.SubqueryOperator.NOT_EQUALS;
|
||||
import static org.jooq.impl.SubqueryOperator.NOT_IN;
|
||||
import static org.jooq.impl.Utils.DATA_ROW_VALUE_EXPRESSION_PREDICATE_SUBQUERY;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -67,6 +67,7 @@ import org.jooq.Row;
|
||||
import org.jooq.RowN;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.Select;
|
||||
import org.jooq.SubqueryComparator;
|
||||
|
||||
/**
|
||||
* @author Lukas Eder
|
||||
@ -76,13 +77,13 @@ class RowSubqueryCondition extends AbstractCondition {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -1806139685201770706L;
|
||||
private static final long serialVersionUID = -1806139685201770706L;
|
||||
|
||||
private final Row left;
|
||||
private final Select<?> right;
|
||||
private final SubqueryOperator operator;
|
||||
private final Row left;
|
||||
private final Select<?> right;
|
||||
private final SubqueryComparator operator;
|
||||
|
||||
RowSubqueryCondition(Row left, Select<?> right, SubqueryOperator operator) {
|
||||
RowSubqueryCondition(Row left, Select<?> right, SubqueryComparator operator) {
|
||||
this.left = left;
|
||||
this.right = right;
|
||||
this.operator = operator;
|
||||
|
||||
@ -40,19 +40,20 @@ import org.jooq.BindContext;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.RenderContext;
|
||||
import org.jooq.Select;
|
||||
import org.jooq.SubqueryComparator;
|
||||
|
||||
/**
|
||||
* @author Lukas Eder
|
||||
*/
|
||||
class SelectQueryAsSubQueryCondition extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = -402776705884329740L;
|
||||
private static final long serialVersionUID = -402776705884329740L;
|
||||
|
||||
private final Select<?> query;
|
||||
private final Field<?> field;
|
||||
private final SubqueryOperator operator;
|
||||
private final Select<?> query;
|
||||
private final Field<?> field;
|
||||
private final SubqueryComparator operator;
|
||||
|
||||
SelectQueryAsSubQueryCondition(Select<?> query, Field<?> field, SubqueryOperator operator) {
|
||||
SelectQueryAsSubQueryCondition(Select<?> query, Field<?> field, SubqueryComparator operator) {
|
||||
this.query = query;
|
||||
this.field = field;
|
||||
this.operator = operator;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user