[#2665] Implement SPI for RenderContext and BindContext listening to
allow for custom SQL transformation * Fixed semantics of UPDATE clauses * Added an UPDATE WHERE test case
This commit is contained in:
parent
d7a5b3e9a0
commit
c8f2ac0b14
@ -53,12 +53,14 @@ public enum Clause {
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
CATALOG,
|
||||
CATALOG_REFERENCE,
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Clauses used in a any type of statement to model schema references
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
SCHEMA,
|
||||
SCHEMA_REFERENCE,
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Clauses used in a any type of statement to model table references
|
||||
@ -80,6 +82,9 @@ public enum Clause {
|
||||
*/
|
||||
TABLE,
|
||||
|
||||
TABLE_ALIAS,
|
||||
TABLE_REFERENCE,
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@ -104,6 +109,9 @@ public enum Clause {
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
FIELD,
|
||||
FIELD_ALIAS,
|
||||
FIELD_REFERENCE,
|
||||
FIELD_VALUE,
|
||||
FIELD_CASE,
|
||||
FIELD_ROW,
|
||||
|
||||
@ -229,11 +237,70 @@ public enum Clause {
|
||||
|
||||
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Clauses that are used in an UPDATE statement
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* A complete <code>UPDATE</code> statement.
|
||||
*/
|
||||
UPDATE,
|
||||
|
||||
/**
|
||||
* An <code>UPDATE</code> clause within an {@link #UPDATE} statement.
|
||||
* <p>
|
||||
* This clause surrounds
|
||||
* <ul>
|
||||
* <li>the <code>UPDATE</code> keyword</li>
|
||||
* <li>the table that is being updated</li>
|
||||
* </ul>
|
||||
*/
|
||||
UPDATE_UPDATE,
|
||||
|
||||
/**
|
||||
* A <code>SET</code> clause within an {@link #UPDATE} statement.
|
||||
* <p>
|
||||
* This clause surrounds
|
||||
* <ul>
|
||||
* <li>the <code>SET</code> keyword</li>
|
||||
* <li>one or several assignments: {@link #UPDATE_SET_ASSIGNMENT}</li>
|
||||
* </ul>
|
||||
*/
|
||||
UPDATE_SET,
|
||||
|
||||
/**
|
||||
* An assigment within a {@link #UPDATE_SET} clause within an
|
||||
* {@link #UPDATE} statement.
|
||||
* <p>
|
||||
* This clause surrounds
|
||||
* <ul>
|
||||
* <li>a column</li>
|
||||
* <li>an assigment operator</li>
|
||||
* <li>a value being assigned</li>
|
||||
* </ul>
|
||||
*/
|
||||
UPDATE_SET_ASSIGNMENT,
|
||||
|
||||
/**
|
||||
* A <code>WHERE</code> clause within an {@link #UPDATE} statement.
|
||||
* <p>
|
||||
* This clause surrounds
|
||||
* <ul>
|
||||
* <li>the <code>WHERE</code> keyword</li>
|
||||
* <li>a {@link #CONDITION}</li>
|
||||
* </ul>
|
||||
*/
|
||||
UPDATE_WHERE,
|
||||
|
||||
/**
|
||||
* A <code>RETURNING</code> clause within an {@link #UPDATE} statement.
|
||||
* <p>
|
||||
* This clause surrounds
|
||||
* <ul>
|
||||
* <li>the <code>RETURNING</code> keyword</li>
|
||||
* <li>several {@link #FIELD} "clauses"</li>
|
||||
* </ul>
|
||||
*/
|
||||
UPDATE_RETURNING,
|
||||
|
||||
|
||||
|
||||
@ -70,19 +70,20 @@ public interface QueryPartInternal extends QueryPart {
|
||||
void bind(BindContext ctx) throws DataAccessException;
|
||||
|
||||
/**
|
||||
* The {@link Clause} that is represented by this query part.
|
||||
* The {@link Clause}s that are represented by this query part.
|
||||
* <p>
|
||||
* {@link QueryPart}s can specify a <code>Clause</code> for which an event
|
||||
* will be emitted {@link Context#start(Clause) before} and
|
||||
* {@link Context#end(Clause) after} visiting the the query part through
|
||||
* {@link Context#visit(QueryPart)}
|
||||
* {@link QueryPart}s can specify several <code>Clause</code>s for which an
|
||||
* event will be emitted {@link Context#start(Clause) before} (in forward
|
||||
* order) and {@link Context#end(Clause) after} (in reverse order) visiting
|
||||
* the the query part through {@link Context#visit(QueryPart)}
|
||||
* <p>
|
||||
* This method is for JOOQ INTERNAL USE only. Do not reference directly
|
||||
*
|
||||
* @return The <code>Clause</code> represented by this query part or
|
||||
* <code>null</code> if this query part does not represent a clause.
|
||||
* @return The <code>Clause</code>s represented by this query part or
|
||||
* <code>null</code> or an empty array if this query part does not
|
||||
* represent a clause.
|
||||
*/
|
||||
Clause clause();
|
||||
Clause[] clauses();
|
||||
|
||||
/**
|
||||
* Check whether this {@link QueryPart} is able to declare fields in a
|
||||
|
||||
@ -35,12 +35,14 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.impl.DSL.condition;
|
||||
import static org.jooq.impl.DSL.exists;
|
||||
import static org.jooq.impl.DSL.notExists;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.Condition;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Operator;
|
||||
@ -55,10 +57,16 @@ abstract class AbstractCondition extends AbstractQueryPart implements Condition
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -6683692251799468624L;
|
||||
private static final long serialVersionUID = -6683692251799468624L;
|
||||
private static final Clause[] CLAUSES = { CONDITION };
|
||||
|
||||
AbstractCondition() {}
|
||||
|
||||
@Override
|
||||
public Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Condition and(Condition other) {
|
||||
return new CombinedCondition(Operator.AND, Arrays.asList(this, other));
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
import static org.jooq.impl.Utils.DATA_OMIT_CLAUSE_EVENT_EMISSION;
|
||||
|
||||
import java.util.ArrayDeque;
|
||||
import java.util.Deque;
|
||||
@ -216,10 +217,11 @@ abstract class AbstractContext<C extends Context<C>> implements Context<C> {
|
||||
@Override
|
||||
public final C visit(QueryPart part) {
|
||||
if (part != null) {
|
||||
Clause clause = visitListeners.length > 0 ? clause(part) : null;
|
||||
Clause[] clauses = visitListeners.length > 0 ? clause(part) : null;
|
||||
|
||||
if (clause != null)
|
||||
start(clause);
|
||||
if (clauses != null)
|
||||
for (int i = 0; i < clauses.length; i++)
|
||||
start(clauses[i]);
|
||||
|
||||
start(part);
|
||||
QueryPartInternal internal = (QueryPartInternal) part;
|
||||
@ -247,8 +249,9 @@ abstract class AbstractContext<C extends Context<C>> implements Context<C> {
|
||||
}
|
||||
|
||||
end(part);
|
||||
if (clause != null)
|
||||
end(clause);
|
||||
if (clauses != null)
|
||||
for (int i = clauses.length - 1; i >= 0; i--)
|
||||
end(clauses[i]);
|
||||
}
|
||||
|
||||
return (C) this;
|
||||
@ -270,9 +273,9 @@ abstract class AbstractContext<C extends Context<C>> implements Context<C> {
|
||||
* {@link Context#visit(QueryPart)} event has to be issued here in
|
||||
* <code>AbstractContext</code>.
|
||||
*/
|
||||
private final Clause clause(QueryPart part) {
|
||||
if (part instanceof QueryPartInternal) {
|
||||
return ((QueryPartInternal) part).clause();
|
||||
private final Clause[] clause(QueryPart part) {
|
||||
if (part instanceof QueryPartInternal && data(DATA_OMIT_CLAUSE_EVENT_EMISSION) == null) {
|
||||
return ((QueryPartInternal) part).clauses();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@ -98,9 +98,9 @@ abstract class AbstractDelegatingQuery<Q extends Query> extends AbstractQueryPar
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
public final Clause[] clauses() {
|
||||
if (delegate instanceof QueryPartInternal) {
|
||||
return ((QueryPartInternal) delegate).clause();
|
||||
return ((QueryPartInternal) delegate).clauses();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@ -35,7 +35,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
import static org.jooq.Clause.FIELD;
|
||||
import static org.jooq.Comparator.EQUALS;
|
||||
import static org.jooq.Comparator.GREATER;
|
||||
import static org.jooq.Comparator.GREATER_OR_EQUAL;
|
||||
@ -99,7 +99,8 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 2884811923648354905L;
|
||||
private static final long serialVersionUID = 2884811923648354905L;
|
||||
private static final Clause[] CLAUSES = { FIELD };
|
||||
|
||||
private final String name;
|
||||
private final DataType<T> dataType;
|
||||
@ -122,8 +123,8 @@ abstract class AbstractField<T> extends AbstractQueryPart implements Field<T> {
|
||||
public abstract void bind(BindContext context);
|
||||
|
||||
@Override
|
||||
public /* non-final for now */ Clause clause() {
|
||||
return DUMMY;
|
||||
public Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -35,10 +35,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.Configuration;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.Field;
|
||||
@ -75,11 +72,6 @@ abstract class AbstractFunction<T> extends AbstractField<T> {
|
||||
ctx.visit(getFunction0(ctx.configuration()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
}
|
||||
|
||||
final Field<?>[] getArguments() {
|
||||
return arguments;
|
||||
}
|
||||
|
||||
@ -35,8 +35,11 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.FIELD;
|
||||
import static org.jooq.Clause.FIELD_VALUE;
|
||||
import static org.jooq.conf.ParamType.INLINED;
|
||||
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.Param;
|
||||
import org.jooq.RenderContext;
|
||||
@ -51,7 +54,8 @@ abstract class AbstractParam<T> extends AbstractField<T> implements Param<T> {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 1311856649676227970L;
|
||||
private static final long serialVersionUID = 1311856649676227970L;
|
||||
private static final Clause[] CLAUSES = { FIELD, FIELD_VALUE };
|
||||
|
||||
private final String paramName;
|
||||
T value;
|
||||
@ -80,6 +84,15 @@ abstract class AbstractParam<T> extends AbstractField<T> implements Param<T> {
|
||||
return paramName == null ? String.valueOf(value) : paramName;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// XXX: QueryPart API
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// XXX: Param API
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -293,8 +293,8 @@ public abstract class AbstractRoutine<T> extends AbstractQueryPart implements Ro
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -50,7 +50,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.Configuration;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.ExecuteContext;
|
||||
@ -149,17 +148,15 @@ abstract class AbstractStoreQuery<R extends Record> extends AbstractQuery implem
|
||||
return returned;
|
||||
}
|
||||
|
||||
final void toSQLReturning(RenderContext context, Clause clause) {
|
||||
final void toSQLReturning(RenderContext context) {
|
||||
if (!returning.isEmpty()) {
|
||||
switch (context.configuration().dialect()) {
|
||||
case FIREBIRD:
|
||||
case POSTGRES:
|
||||
context.formatSeparator()
|
||||
.start(clause)
|
||||
.keyword("returning")
|
||||
.sql(" ")
|
||||
.visit(returning)
|
||||
.end(clause);
|
||||
.visit(returning);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.TABLE;
|
||||
import static org.jooq.impl.DSL.table;
|
||||
import static org.jooq.impl.DSL.val;
|
||||
|
||||
@ -44,6 +45,7 @@ import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.DivideByOnStep;
|
||||
import org.jooq.Field;
|
||||
@ -75,7 +77,8 @@ abstract class AbstractTable<R extends Record> extends AbstractQueryPart impleme
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 3155496238969274871L;
|
||||
private static final long serialVersionUID = 3155496238969274871L;
|
||||
private static final Clause[] CLAUSES = { TABLE };
|
||||
|
||||
private final Schema schema;
|
||||
private final String name;
|
||||
@ -91,6 +94,15 @@ abstract class AbstractTable<R extends Record> extends AbstractQueryPart impleme
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// XXX: QueryPart API
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// XXX: TableLike API
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -224,8 +224,8 @@ class Alias<Q extends QueryPart> extends AbstractQueryPart {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -176,8 +176,8 @@ class ArrayTable extends AbstractTable<Record> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private final Table<Record> table(Configuration configuration) {
|
||||
@ -304,8 +304,8 @@ class ArrayTable extends AbstractTable<Record> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -129,8 +129,8 @@ class ArrayTableSimulation extends AbstractTable<Record> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_BETWEEN;
|
||||
import static org.jooq.SQLDialect.ASE;
|
||||
import static org.jooq.SQLDialect.CUBRID;
|
||||
@ -66,13 +67,14 @@ import org.jooq.RenderContext;
|
||||
*/
|
||||
class BetweenCondition<T> extends AbstractCondition implements BetweenAndStep<T> {
|
||||
|
||||
private static final long serialVersionUID = -4666251100802237878L;
|
||||
private static final long serialVersionUID = -4666251100802237878L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_BETWEEN };
|
||||
|
||||
private final boolean symmetric;
|
||||
private final boolean not;
|
||||
private final Field<T> field;
|
||||
private final Field<T> minValue;
|
||||
private Field<T> maxValue;
|
||||
private final boolean symmetric;
|
||||
private final boolean not;
|
||||
private final Field<T> field;
|
||||
private final Field<T> minValue;
|
||||
private Field<T> maxValue;
|
||||
|
||||
BetweenCondition(Field<T> field, Field<T> minValue, boolean not, boolean symmetric) {
|
||||
this.field = field;
|
||||
@ -109,8 +111,8 @@ class BetweenCondition<T> extends AbstractCondition implements BetweenAndStep<T>
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_BETWEEN;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
private final QueryPartInternal delegate(Configuration configuration) {
|
||||
@ -151,8 +153,8 @@ class BetweenCondition<T> extends AbstractCondition implements BetweenAndStep<T>
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_BETWEEN;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,14 +35,11 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.CaseConditionStep;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.Condition;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.RenderContext;
|
||||
@ -140,9 +137,4 @@ class CaseConditionStepImpl<T> extends AbstractField<T> implements CaseCondition
|
||||
context.keyword("end")
|
||||
.formatIndentLockEnd();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CATALOG;
|
||||
import static org.jooq.Clause.CATALOG_REFERENCE;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@ -59,8 +60,9 @@ public class CatalogImpl extends AbstractQueryPart implements Catalog {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -3650318934053960244L;
|
||||
private final String catalogName;
|
||||
private static final long serialVersionUID = -3650318934053960244L;
|
||||
private static final Clause[] CLAUSES = { CATALOG, CATALOG_REFERENCE };
|
||||
private final String catalogName;
|
||||
|
||||
public CatalogImpl(String name) {
|
||||
super();
|
||||
@ -82,8 +84,8 @@ public class CatalogImpl extends AbstractQueryPart implements Catalog {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CATALOG;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_AND;
|
||||
import static org.jooq.Clause.CONDITION_OR;
|
||||
import static org.jooq.Operator.AND;
|
||||
@ -58,6 +59,8 @@ import org.jooq.RenderContext;
|
||||
class CombinedCondition extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = -7373293246207052549L;
|
||||
private static final Clause[] CLAUSES_AND = { CONDITION, CONDITION_AND };
|
||||
private static final Clause[] CLAUSES_OR = { CONDITION, CONDITION_OR };
|
||||
|
||||
private final Operator operator;
|
||||
private final List<Condition> conditions;
|
||||
@ -99,8 +102,8 @@ class CombinedCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return operator == AND ? CONDITION_AND : CONDITION_OR;
|
||||
public final Clause[] clauses() {
|
||||
return operator == AND ? CLAUSES_AND : CLAUSES_OR;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_COMPARISON;
|
||||
import static org.jooq.Comparator.LIKE;
|
||||
import static org.jooq.Comparator.LIKE_IGNORE_CASE;
|
||||
@ -59,12 +60,13 @@ import org.jooq.SQLDialect;
|
||||
*/
|
||||
class CompareCondition extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = -747240442279619486L;
|
||||
private static final long serialVersionUID = -747240442279619486L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_COMPARISON };
|
||||
|
||||
private final Field<?> field1;
|
||||
private final Field<?> field2;
|
||||
private final Comparator comparator;
|
||||
private final Character escape;
|
||||
private final Field<?> field1;
|
||||
private final Field<?> field2;
|
||||
private final Comparator comparator;
|
||||
private final Character escape;
|
||||
|
||||
CompareCondition(Field<?> field1, Field<?> field2, Comparator comparator) {
|
||||
this(field1, field2, comparator, null);
|
||||
@ -131,7 +133,7 @@ class CompareCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_COMPARISON;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
|
||||
@ -123,7 +123,7 @@ class ConditionProviderImpl extends AbstractQueryPart implements ConditionProvid
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
public final Clause[] clauses() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_COMPARISON;
|
||||
import static org.jooq.impl.DSL.inline;
|
||||
import static org.jooq.impl.DSL.val;
|
||||
@ -56,11 +57,12 @@ class Contains<T> extends AbstractCondition {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 6146303086487338550L;
|
||||
private static final long serialVersionUID = 6146303086487338550L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_COMPARISON };
|
||||
|
||||
private final Field<T> lhs;
|
||||
private final Field<T> rhs;
|
||||
private final T value;
|
||||
private final Field<T> lhs;
|
||||
private final Field<T> rhs;
|
||||
private final T value;
|
||||
|
||||
Contains(Field<T> field, T value) {
|
||||
this.lhs = field;
|
||||
@ -85,8 +87,8 @@ class Contains<T> extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_COMPARISON;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
private final Condition condition() {
|
||||
@ -132,8 +134,8 @@ class Contains<T> extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_COMPARISON;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
private final Field<T> rhs() {
|
||||
|
||||
@ -97,7 +97,7 @@ public abstract class CustomCondition extends AbstractCondition {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Clause clause() {
|
||||
public Clause[] clauses() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -98,8 +98,8 @@ public abstract class CustomField<T> extends AbstractField<T> {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Clause clause() {
|
||||
return null;
|
||||
public Clause[] clauses() {
|
||||
return super.clauses();
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -108,7 +108,7 @@ public abstract class CustomQueryPart extends AbstractQueryPart {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Clause clause() {
|
||||
public Clause[] clauses() {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -59,6 +59,7 @@ import org.jooq.Table;
|
||||
class DeleteQueryImpl<R extends Record> extends AbstractQuery implements DeleteQuery<R> {
|
||||
|
||||
private static final long serialVersionUID = -1943687511774150929L;
|
||||
private static final Clause[] CLAUSES = { DELETE };
|
||||
|
||||
private final Table<R> table;
|
||||
private final ConditionProviderImpl condition;
|
||||
@ -135,7 +136,7 @@ class DeleteQueryImpl<R extends Record> extends AbstractQuery implements DeleteQ
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DELETE;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,10 +36,7 @@
|
||||
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.TABLE;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.RenderContext;
|
||||
import org.jooq.Schema;
|
||||
@ -127,11 +124,6 @@ class Dual extends AbstractTable<Record> {
|
||||
@Override
|
||||
public final void bind(BindContext context) {}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return TABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
final Fields<Record> fields0() {
|
||||
return new Fields<Record>();
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_COMPARISON;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
@ -47,7 +48,8 @@ import org.jooq.RenderContext;
|
||||
*/
|
||||
class FalseCondition extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = -3972466479081463547L;
|
||||
private static final long serialVersionUID = -3972466479081463547L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_COMPARISON };
|
||||
|
||||
@Override
|
||||
public void bind(BindContext context) {}
|
||||
@ -58,8 +60,8 @@ class FalseCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_COMPARISON;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
FalseCondition() {}
|
||||
|
||||
@ -72,8 +72,8 @@ class FieldCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private final QueryPartInternal delegate(Configuration configuration) {
|
||||
|
||||
@ -139,8 +139,8 @@ class FieldMapForInsert extends AbstractQueryPartMap<Field<?>, Field<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
final void putFields(Collection<? extends Field<?>> fields) {
|
||||
|
||||
@ -107,8 +107,8 @@ class FieldMapForUpdate extends AbstractQueryPartMap<Field<?>, Field<?>> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
final void set(Map<? extends Field<?>, ?> map) {
|
||||
|
||||
@ -140,8 +140,8 @@ class FieldMapsForInsert extends AbstractQueryPart {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -258,8 +258,8 @@ class Fields<R extends Record> extends AbstractQueryPart implements RecordType<R
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -146,8 +146,8 @@ implements VersionsBetweenAndStep<R, T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -55,7 +55,6 @@ import java.util.Collection;
|
||||
|
||||
import org.jooq.AggregateFunction;
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Name;
|
||||
@ -183,11 +182,6 @@ class Function<T> extends AbstractField<T> implements
|
||||
// XXX QueryPart API
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void bind(BindContext context) {
|
||||
if (term == LIST_AGG && asList(CUBRID, H2, HSQLDB, MARIADB, MYSQL).contains(context.configuration().dialect())) {
|
||||
|
||||
@ -105,8 +105,8 @@ class FunctionTable<R extends Record> extends AbstractTable<R> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_IN;
|
||||
import static org.jooq.Clause.CONDITION_IN_NOT;
|
||||
import static org.jooq.Comparator.IN;
|
||||
@ -55,12 +56,14 @@ import org.jooq.RenderContext;
|
||||
*/
|
||||
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 static final Clause[] CLAUSES_IN = { CONDITION, CONDITION_IN };
|
||||
private static final Clause[] CLAUSES_IN_NOT = { CONDITION, CONDITION_IN_NOT };
|
||||
|
||||
private final Field<T> field;
|
||||
private final Field<?>[] values;
|
||||
private final Comparator comparator;
|
||||
private final Field<T> field;
|
||||
private final Field<?>[] values;
|
||||
private final Comparator comparator;
|
||||
|
||||
InCondition(Field<T> field, Field<?>[] values, Comparator comparator) {
|
||||
this.field = field;
|
||||
@ -69,8 +72,8 @@ class InCondition<T> extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return comparator == IN ? CONDITION_IN : CONDITION_IN_NOT;
|
||||
public final Clause[] clauses() {
|
||||
return comparator == IN ? CLAUSES_IN : CLAUSES_IN_NOT;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -38,7 +38,6 @@ package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.INSERT;
|
||||
import static org.jooq.Clause.INSERT_RETURNING;
|
||||
import static org.jooq.SQLDialect.MARIADB;
|
||||
import static org.jooq.SQLDialect.MYSQL;
|
||||
|
||||
@ -65,12 +64,13 @@ import org.jooq.exception.SQLDialectNotSupportedException;
|
||||
*/
|
||||
class InsertQueryImpl<R extends Record> extends AbstractStoreQuery<R> implements InsertQuery<R> {
|
||||
|
||||
private static final long serialVersionUID = 4466005417945353842L;
|
||||
private static final long serialVersionUID = 4466005417945353842L;
|
||||
private static final Clause[] CLAUSES = { INSERT };
|
||||
|
||||
private final FieldMapForUpdate updateMap;
|
||||
private final FieldMapsForInsert insertMaps;
|
||||
private boolean onDuplicateKeyUpdate;
|
||||
private boolean onDuplicateKeyIgnore;
|
||||
private final FieldMapForUpdate updateMap;
|
||||
private final FieldMapsForInsert insertMaps;
|
||||
private boolean onDuplicateKeyUpdate;
|
||||
private boolean onDuplicateKeyIgnore;
|
||||
|
||||
InsertQueryImpl(Configuration configuration, Table<R> into) {
|
||||
super(configuration, into);
|
||||
@ -317,8 +317,8 @@ class InsertQueryImpl<R extends Record> extends AbstractStoreQuery<R> implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return INSERT;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
private final void toSQLInsert(RenderContext context) {
|
||||
@ -332,7 +332,7 @@ class InsertQueryImpl<R extends Record> extends AbstractStoreQuery<R> implements
|
||||
.sql(" ")
|
||||
.visit(insertMaps);
|
||||
|
||||
toSQLReturning(context, INSERT_RETURNING);
|
||||
toSQLReturning(context);
|
||||
}
|
||||
|
||||
private final void bindInsert(BindContext context) {
|
||||
|
||||
@ -56,11 +56,12 @@ class InsertSelectQueryImpl<R extends Record> extends AbstractQuery implements I
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -1540775270159018516L;
|
||||
private static final long serialVersionUID = -1540775270159018516L;
|
||||
private static final Clause[] CLAUSES = { INSERT };
|
||||
|
||||
private final Table<?> into;
|
||||
private final Field<?>[] fields;
|
||||
private final Select<?> select;
|
||||
private final Table<?> into;
|
||||
private final Field<?>[] fields;
|
||||
private final Select<?> select;
|
||||
|
||||
InsertSelectQueryImpl(Configuration configuration, Table<?> into, Field<?>[] fields, Select<?> select) {
|
||||
super(configuration);
|
||||
@ -98,7 +99,7 @@ class InsertSelectQueryImpl<R extends Record> extends AbstractQuery implements I
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return INSERT;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,8 +97,8 @@ class IsDistinctFrom<T> extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_NULL;
|
||||
import static org.jooq.Clause.CONDITION_NULL_NOT;
|
||||
|
||||
@ -49,10 +50,12 @@ import org.jooq.RenderContext;
|
||||
*/
|
||||
class IsNull extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = -747240442279619486L;
|
||||
private static final long serialVersionUID = -747240442279619486L;
|
||||
private static final Clause[] CLAUSES_NULL = { CONDITION, CONDITION_NULL };
|
||||
private static final Clause[] CLAUSES_NULL_NOT = { CONDITION, CONDITION_NULL_NOT };
|
||||
|
||||
private final Field<?> field;
|
||||
private final boolean isNull;
|
||||
private final Field<?> field;
|
||||
private final boolean isNull;
|
||||
|
||||
IsNull(Field<?> field, boolean isNull) {
|
||||
this.field = field;
|
||||
@ -70,7 +73,7 @@ class IsNull extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return isNull ? CONDITION_NULL : CONDITION_NULL_NOT;
|
||||
public final Clause[] clauses() {
|
||||
return isNull ? CLAUSES_NULL : CLAUSES_NULL_NOT;
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,6 +37,7 @@ package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
import static org.jooq.Clause.TABLE;
|
||||
import static org.jooq.Clause.TABLE_JOIN;
|
||||
import static org.jooq.Clause.TABLE_JOIN_CROSS;
|
||||
import static org.jooq.Clause.TABLE_JOIN_INNER;
|
||||
@ -101,6 +102,7 @@ class JoinTable extends AbstractTable<Record> implements TableOptionalOnStep, Ta
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 8377996833996498178L;
|
||||
private static final Clause[] CLAUSES = { TABLE, TABLE_JOIN };
|
||||
|
||||
private final Table<?> lhs;
|
||||
private final Table<?> rhs;
|
||||
@ -341,8 +343,8 @@ class JoinTable extends AbstractTable<Record> implements TableOptionalOnStep, Ta
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return TABLE_JOIN;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -67,7 +67,7 @@ public class KeywordImpl extends AbstractQueryPart implements Keyword {
|
||||
public final void bind(BindContext ctx) {}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
public final Clause[] clauses() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -323,8 +323,8 @@ class Limit extends AbstractQueryPart {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -198,6 +198,7 @@ implements
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -8835479296876774391L;
|
||||
private static final Clause[] CLAUSES = { MERGE };
|
||||
|
||||
private final Table<R> table;
|
||||
private final ConditionProviderImpl on;
|
||||
@ -1199,7 +1200,7 @@ implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return MERGE;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
|
||||
@ -76,8 +76,8 @@ class NameImpl extends AbstractQueryPart implements Name {
|
||||
public final void bind(BindContext context) {}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_NOT;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
@ -44,7 +45,8 @@ import org.jooq.RenderContext;
|
||||
|
||||
class NotCondition extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = 2921001862882237932L;
|
||||
private static final long serialVersionUID = 2921001862882237932L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_NOT };
|
||||
|
||||
private final Condition condition;
|
||||
|
||||
@ -63,7 +65,7 @@ class NotCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_NOT;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,8 +89,8 @@ public class PackageImpl extends AbstractQueryPart implements Package {
|
||||
public final void bind(BindContext context) {}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -94,8 +94,8 @@ class ParameterImpl<T> extends AbstractQueryPart implements Parameter<T> {
|
||||
public final void bind(BindContext context) {}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -148,8 +148,8 @@ implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private Table<Record> select(Configuration configuration) {
|
||||
@ -270,8 +270,8 @@ implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
}
|
||||
|
||||
@ -330,8 +330,8 @@ implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.TABLE;
|
||||
import static org.jooq.Clause.TABLE_REFERENCE;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
@ -54,7 +55,8 @@ class QualifiedTable extends AbstractTable<Record> {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 6937002867156868761L;
|
||||
private static final long serialVersionUID = 6937002867156868761L;
|
||||
private static final Clause[] CLAUSES = { TABLE, TABLE_REFERENCE };
|
||||
|
||||
private final String[] sql;
|
||||
|
||||
@ -83,8 +85,8 @@ class QualifiedTable extends AbstractTable<Record> {
|
||||
public final void bind(BindContext context) {}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return TABLE;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -37,7 +37,8 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
|
||||
import static org.jooq.Clause.CONDITION_COMPARISON;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_BETWEEN;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
@ -52,6 +53,7 @@ import org.jooq.RenderContext;
|
||||
class QuantifiedComparisonCondition extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = -402776705884329740L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_BETWEEN };
|
||||
|
||||
private final QuantifiedSelect<?> query;
|
||||
private final Field<?> field;
|
||||
@ -78,7 +80,7 @@ class QuantifiedComparisonCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_COMPARISON;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,8 +117,8 @@ class QuantifiedSelectImpl<R extends Record> extends AbstractQueryPart implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private final QueryPart part(Configuration context) {
|
||||
|
||||
@ -128,8 +128,8 @@ class QueryPartList<T extends QueryPart> extends AbstractQueryPart implements Li
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -130,7 +130,7 @@ class RegexpLike extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_BETWEEN;
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
import static org.jooq.SQLDialect.ASE;
|
||||
@ -166,13 +167,14 @@ implements
|
||||
BetweenAndStep22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>,
|
||||
BetweenAndStepN {
|
||||
|
||||
private static final long serialVersionUID = -4666251100802237878L;
|
||||
private static final long serialVersionUID = -4666251100802237878L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_BETWEEN };
|
||||
|
||||
private final boolean symmetric;
|
||||
private final boolean not;
|
||||
private final Row row;
|
||||
private final Row minValue;
|
||||
private Row maxValue;
|
||||
private final boolean symmetric;
|
||||
private final boolean not;
|
||||
private final Row row;
|
||||
private final Row minValue;
|
||||
private Row maxValue;
|
||||
|
||||
RowBetweenCondition(Row row, Row minValue, boolean not, boolean symmetric) {
|
||||
this.row = row;
|
||||
@ -689,8 +691,8 @@ implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private final QueryPartInternal delegate(Configuration configuration) {
|
||||
@ -755,8 +757,8 @@ implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_BETWEEN;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_COMPARISON;
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
import static org.jooq.Comparator.EQUALS;
|
||||
@ -79,11 +80,12 @@ class RowCondition extends AbstractCondition {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -1806139685201770706L;
|
||||
private static final long serialVersionUID = -1806139685201770706L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_COMPARISON };
|
||||
|
||||
private final Row left;
|
||||
private final Row right;
|
||||
private final Comparator comparator;
|
||||
private final Row left;
|
||||
private final Row right;
|
||||
private final Comparator comparator;
|
||||
|
||||
RowCondition(Row left, Row right, Comparator comparator) {
|
||||
this.left = left;
|
||||
@ -102,8 +104,8 @@ class RowCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private final QueryPartInternal delegate(Configuration configuration) {
|
||||
@ -216,8 +218,8 @@ class RowCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_COMPARISON;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -36,6 +36,8 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
import static org.jooq.Clause.FIELD;
|
||||
import static org.jooq.Clause.FIELD_ROW;
|
||||
import static org.jooq.impl.DSL.row;
|
||||
|
||||
import java.util.Arrays;
|
||||
@ -160,9 +162,10 @@ implements
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -929427349071556318L;
|
||||
private static final long serialVersionUID = -929427349071556318L;
|
||||
private static final Clause[] CLAUSES = { FIELD, FIELD_ROW };
|
||||
|
||||
final Fields fields;
|
||||
final Fields fields;
|
||||
|
||||
RowImpl(Field<?>... fields) {
|
||||
this(new Fields(fields));
|
||||
@ -203,8 +206,8 @@ implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_IN;
|
||||
import static org.jooq.Clause.CONDITION_IN_NOT;
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
@ -73,6 +74,8 @@ class RowInCondition extends AbstractCondition {
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -1806139685201770706L;
|
||||
private static final Clause[] CLAUSES_IN = { CONDITION, CONDITION_IN };
|
||||
private static final Clause[] CLAUSES_IN_NOT = { CONDITION, CONDITION_IN_NOT };
|
||||
|
||||
private final Row left;
|
||||
private final QueryPartList<? extends Row> right;
|
||||
@ -95,8 +98,8 @@ class RowInCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private final QueryPartInternal delegate(Configuration configuration) {
|
||||
@ -143,8 +146,8 @@ class RowInCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return comparator == IN ? CONDITION_IN : CONDITION_IN_NOT;
|
||||
public final Clause[] clauses() {
|
||||
return comparator == IN ? CLAUSES_IN : CLAUSES_IN_NOT;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -36,6 +36,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_NULL;
|
||||
import static org.jooq.Clause.CONDITION_NULL_NOT;
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
@ -73,10 +74,12 @@ class RowIsNull extends AbstractCondition {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -1806139685201770706L;
|
||||
private static final long serialVersionUID = -1806139685201770706L;
|
||||
private static final Clause[] CLAUSES_NULL = { CONDITION, CONDITION_NULL };
|
||||
private static final Clause[] CLAUSES_NULL_NOT = { CONDITION, CONDITION_NULL_NOT };
|
||||
|
||||
private final Row row;
|
||||
private final boolean isNull;
|
||||
private final Row row;
|
||||
private final boolean isNull;
|
||||
|
||||
RowIsNull(Row row, boolean isNull) {
|
||||
this.row = row;
|
||||
@ -94,8 +97,8 @@ class RowIsNull extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private final QueryPartInternal delegate(Configuration configuration) {
|
||||
@ -136,8 +139,8 @@ class RowIsNull extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return isNull ? CONDITION_NULL : CONDITION_NULL_NOT;
|
||||
public final Clause[] clauses() {
|
||||
return isNull ? CLAUSES_NULL : CLAUSES_NULL_NOT;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -36,6 +36,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_OVERLAPS;
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
import static org.jooq.SQLDialect.ASE;
|
||||
@ -69,10 +70,11 @@ class RowOverlapsCondition<T1, T2> extends AbstractCondition {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 85887551884667824L;
|
||||
private static final long serialVersionUID = 85887551884667824L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_OVERLAPS };
|
||||
|
||||
private final Row2<T1, T2> left;
|
||||
private final Row2<T1, T2> right;
|
||||
private final Row2<T1, T2> left;
|
||||
private final Row2<T1, T2> right;
|
||||
|
||||
RowOverlapsCondition(Row2<T1, T2> left, Row2<T1, T2> right) {
|
||||
this.left = left;
|
||||
@ -90,8 +92,8 @@ class RowOverlapsCondition<T1, T2> extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private final QueryPartInternal delegate(Configuration configuration) {
|
||||
@ -162,8 +164,8 @@ class RowOverlapsCondition<T1, T2> extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_OVERLAPS;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -36,6 +36,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_COMPARISON;
|
||||
import static org.jooq.Clause.DUMMY;
|
||||
import static org.jooq.Comparator.EQUALS;
|
||||
@ -81,7 +82,8 @@ class RowSubqueryCondition extends AbstractCondition {
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = -1806139685201770706L;
|
||||
private static final long serialVersionUID = -1806139685201770706L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_COMPARISON };
|
||||
|
||||
private final Row left;
|
||||
private final Select<?> right;
|
||||
@ -104,8 +106,8 @@ class RowSubqueryCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
private final QueryPartInternal delegate(Configuration configuration, RenderContext context) {
|
||||
@ -224,8 +226,8 @@ class RowSubqueryCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_COMPARISON;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -35,12 +35,8 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.QueryPart;
|
||||
import org.jooq.QueryPartInternal;
|
||||
import org.jooq.RenderContext;
|
||||
|
||||
class SQLCondition extends AbstractCondition {
|
||||
@ -74,13 +70,4 @@ class SQLCondition extends AbstractCondition {
|
||||
public final void bind(BindContext context) {
|
||||
context.visit(delegate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
if (delegate instanceof QueryPartInternal) {
|
||||
return ((QueryPartInternal) delegate).clause();
|
||||
}
|
||||
|
||||
return CONDITION;
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,13 +35,9 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.FIELD;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.QueryPart;
|
||||
import org.jooq.QueryPartInternal;
|
||||
import org.jooq.RenderContext;
|
||||
|
||||
class SQLField<T> extends AbstractField<T> {
|
||||
@ -72,13 +68,4 @@ class SQLField<T> extends AbstractField<T> {
|
||||
public final void bind(BindContext context) {
|
||||
context.visit(delegate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
if (delegate instanceof QueryPartInternal) {
|
||||
return ((QueryPartInternal) delegate).clause();
|
||||
}
|
||||
|
||||
return FIELD;
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,9 +75,9 @@ class SQLQuery extends AbstractQuery {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
public final Clause[] clauses() {
|
||||
if (delegate instanceof QueryPartInternal) {
|
||||
return ((QueryPartInternal) delegate).clause();
|
||||
return ((QueryPartInternal) delegate).clauses();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@ -81,9 +81,9 @@ class SQLResultQuery extends AbstractResultQuery<Record> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
public final Clause[] clauses() {
|
||||
if (delegate instanceof QueryPartInternal) {
|
||||
return ((QueryPartInternal) delegate).clause();
|
||||
return ((QueryPartInternal) delegate).clauses();
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@ -35,12 +35,8 @@
|
||||
*/
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.TABLE;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.QueryPart;
|
||||
import org.jooq.QueryPartInternal;
|
||||
import org.jooq.Record;
|
||||
import org.jooq.RenderContext;
|
||||
import org.jooq.Table;
|
||||
@ -89,15 +85,6 @@ class SQLTable extends AbstractTable<Record> {
|
||||
context.visit(delegate);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
if (delegate instanceof QueryPartInternal) {
|
||||
return ((QueryPartInternal) delegate).clause();
|
||||
}
|
||||
|
||||
return TABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
final Fields<Record> fields0() {
|
||||
return new Fields<Record>();
|
||||
|
||||
@ -82,7 +82,7 @@ class SQLTemplate implements Template {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
public final Clause[] clauses() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.SCHEMA;
|
||||
import static org.jooq.Clause.SCHEMA_REFERENCE;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@ -59,8 +60,10 @@ import org.jooq.tools.StringUtils;
|
||||
*/
|
||||
public class SchemaImpl extends AbstractQueryPart implements Schema {
|
||||
|
||||
private static final long serialVersionUID = -8101463810207566546L;
|
||||
private final String schemaName;
|
||||
private static final long serialVersionUID = -8101463810207566546L;
|
||||
private static final Clause[] CLAUSES = { SCHEMA, SCHEMA_REFERENCE };
|
||||
|
||||
private final String schemaName;
|
||||
|
||||
public SchemaImpl(String name) {
|
||||
super();
|
||||
@ -82,8 +85,8 @@ public class SchemaImpl extends AbstractQueryPart implements Schema {
|
||||
public final void bind(BindContext context) {}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return SCHEMA;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_EXISTS;
|
||||
import static org.jooq.Clause.CONDITION_EXISTS_NOT;
|
||||
import static org.jooq.impl.ExistsOperator.EXISTS;
|
||||
@ -50,10 +51,12 @@ import org.jooq.Select;
|
||||
*/
|
||||
class SelectQueryAsExistsCondition extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = 5678338161136603292L;
|
||||
private static final long serialVersionUID = 5678338161136603292L;
|
||||
private static final Clause[] CLAUSES_EXISTS = { CONDITION, CONDITION_EXISTS };
|
||||
private static final Clause[] CLAUSES_EXISTS_NOT = { CONDITION, CONDITION_EXISTS_NOT };
|
||||
|
||||
private final Select<?> query;
|
||||
private final ExistsOperator operator;
|
||||
private final Select<?> query;
|
||||
private final ExistsOperator operator;
|
||||
|
||||
SelectQueryAsExistsCondition(Select<?> query, ExistsOperator operator) {
|
||||
this.query = query;
|
||||
@ -103,7 +106,7 @@ class SelectQueryAsExistsCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return operator == EXISTS ? CONDITION_EXISTS : CONDITION_EXISTS_NOT;
|
||||
public final Clause[] clauses() {
|
||||
return operator == EXISTS ? CLAUSES_EXISTS : CLAUSES_EXISTS_NOT;
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,7 +37,6 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.DataType;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.RenderContext;
|
||||
@ -102,9 +101,4 @@ class SelectQueryAsField<T> extends AbstractField<T> {
|
||||
.sql(")");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_COMPARISON;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
@ -50,11 +51,12 @@ import org.jooq.Select;
|
||||
*/
|
||||
class SelectQueryAsSubQueryCondition extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = -402776705884329740L;
|
||||
private static final long serialVersionUID = -402776705884329740L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_COMPARISON };
|
||||
|
||||
private final Select<?> query;
|
||||
private final Field<?> field;
|
||||
private final Comparator comparator;
|
||||
private final Select<?> query;
|
||||
private final Field<?> field;
|
||||
private final Comparator comparator;
|
||||
|
||||
SelectQueryAsSubQueryCondition(Select<?> query, Field<?> field, Comparator comparator) {
|
||||
this.query = query;
|
||||
@ -110,7 +112,7 @@ class SelectQueryAsSubQueryCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_COMPARISON;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
|
||||
@ -115,7 +115,7 @@ class SelectQueryAsTable<R extends Record> extends AbstractTable<R> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
public final Clause[] clauses() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -107,6 +107,7 @@ class SelectQueryImpl<R extends Record> extends AbstractSelect<R> implements Sel
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 1646393178384872967L;
|
||||
private static final Clause[] CLAUSES = { SELECT };
|
||||
|
||||
private final SelectFieldList select;
|
||||
private String hint;
|
||||
@ -165,8 +166,8 @@ class SelectQueryImpl<R extends Record> extends AbstractSelect<R> implements Sel
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return SELECT;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -166,7 +166,7 @@ class SortFieldImpl<T> extends AbstractQueryPart implements SortField<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
}
|
||||
|
||||
@ -129,8 +129,8 @@ class TableAlias<R extends Record> extends AbstractTable<R> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -37,6 +37,8 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.FIELD;
|
||||
import static org.jooq.Clause.FIELD_REFERENCE;
|
||||
import static org.jooq.impl.Utils.DATA_OMIT_CLAUSE_EVENT_EMISSION;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
@ -54,7 +56,8 @@ import org.jooq.tools.StringUtils;
|
||||
*/
|
||||
class TableFieldImpl<R extends Record, T> extends AbstractField<T> implements TableField<R, T> {
|
||||
|
||||
private static final long serialVersionUID = -2211214195583539735L;
|
||||
private static final long serialVersionUID = -2211214195583539735L;
|
||||
private static final Clause[] CLAUSES = { FIELD, FIELD_REFERENCE };
|
||||
|
||||
private final Table<R> table;
|
||||
|
||||
@ -69,24 +72,31 @@ class TableFieldImpl<R extends Record, T> extends AbstractField<T> implements Ta
|
||||
return table;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// XXX: QueryPart API
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void toSQL(RenderContext context) {
|
||||
context.data(DATA_OMIT_CLAUSE_EVENT_EMISSION, true);
|
||||
|
||||
if (context.qualify()) {
|
||||
context.visit(table);
|
||||
context.sql(".");
|
||||
}
|
||||
|
||||
context.literal(getName());
|
||||
context.data(DATA_OMIT_CLAUSE_EVENT_EMISSION, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void bind(BindContext context) {}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return FIELD;
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// XXX: Object API
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -37,6 +37,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.TABLE;
|
||||
import static org.jooq.Clause.TABLE_REFERENCE;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
@ -56,6 +57,7 @@ import org.jooq.tools.StringUtils;
|
||||
public class TableImpl<R extends Record> extends AbstractTable<R> {
|
||||
|
||||
private static final long serialVersionUID = 261033315221985068L;
|
||||
private static final Clause[] CLAUSES = { TABLE, TABLE_REFERENCE };
|
||||
|
||||
private final Fields<R> fields;
|
||||
private final Alias<Table<R>> alias;
|
||||
@ -98,8 +100,8 @@ public class TableImpl<R extends Record> extends AbstractTable<R> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return TABLE;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -36,6 +36,7 @@
|
||||
|
||||
package org.jooq.impl;
|
||||
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_COMPARISON;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
@ -47,7 +48,8 @@ import org.jooq.RenderContext;
|
||||
*/
|
||||
class TrueCondition extends AbstractCondition {
|
||||
|
||||
private static final long serialVersionUID = 775364624704563687L;
|
||||
private static final long serialVersionUID = 775364624704563687L;
|
||||
private static final Clause[] CLAUSES = { CONDITION, CONDITION_COMPARISON };
|
||||
|
||||
@Override
|
||||
public final void bind(BindContext context) {}
|
||||
@ -58,8 +60,8 @@ class TrueCondition extends AbstractCondition {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return CONDITION_COMPARISON;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
TrueCondition() {}
|
||||
|
||||
@ -59,7 +59,8 @@ class TruncateImpl<R extends Record> extends AbstractQuery implements
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 8904572826501186329L;
|
||||
private static final long serialVersionUID = 8904572826501186329L;
|
||||
private static final Clause[] CLAUSES = { TRUNCATE };
|
||||
|
||||
private final Table<R> table;
|
||||
private Boolean cascade;
|
||||
@ -137,7 +138,7 @@ class TruncateImpl<R extends Record> extends AbstractQuery implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return TRUNCATE;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
}
|
||||
|
||||
@ -140,8 +140,8 @@ public class UDTImpl<R extends UDTRecord<R>> extends AbstractQueryPart implement
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -64,6 +64,7 @@ class Union<R extends Record> extends AbstractSelect<R> {
|
||||
|
||||
private final List<Select<? extends R>> queries;
|
||||
private final CombineOperator operator;
|
||||
private final Clause[] clauses;
|
||||
|
||||
Union(Configuration configuration, Select<R> query1, Select<? extends R> query2, CombineOperator operator) {
|
||||
super(configuration);
|
||||
@ -72,6 +73,14 @@ class Union<R extends Record> extends AbstractSelect<R> {
|
||||
this.queries.add(query1);
|
||||
this.queries.add(query2);
|
||||
this.operator = operator;
|
||||
|
||||
switch (operator) {
|
||||
case EXCEPT: this.clauses = new Clause[] { SELECT_EXCEPT } ; break;
|
||||
case INTERSECT: this.clauses = new Clause[] { SELECT_INTERSECT } ; break;
|
||||
case UNION: this.clauses = new Clause[] { SELECT_UNION } ; break;
|
||||
case UNION_ALL: this.clauses = new Clause[] { SELECT_UNION_ALL } ; break;
|
||||
default: throw new IllegalArgumentException("Operator not supported : " + operator);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -134,14 +143,8 @@ class Union<R extends Record> extends AbstractSelect<R> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
switch (operator) {
|
||||
case EXCEPT: return SELECT_EXCEPT;
|
||||
case INTERSECT: return SELECT_INTERSECT;
|
||||
case UNION: return SELECT_UNION;
|
||||
case UNION_ALL: return SELECT_UNION_ALL;
|
||||
default: throw new IllegalArgumentException("Operator not supported : " + operator);
|
||||
}
|
||||
public final Clause[] clauses() {
|
||||
return clauses;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -115,6 +115,7 @@ import org.jooq.UpdateQuery;
|
||||
class UpdateQueryImpl<R extends Record> extends AbstractStoreQuery<R> implements UpdateQuery<R> {
|
||||
|
||||
private static final long serialVersionUID = -660460731970074719L;
|
||||
private static final Clause[] CLAUSES = { UPDATE };
|
||||
|
||||
private final FieldMapForUpdate updateMap;
|
||||
private final ConditionProviderImpl condition;
|
||||
@ -509,17 +510,21 @@ class UpdateQueryImpl<R extends Record> extends AbstractStoreQuery<R> implements
|
||||
.formatIndentLockEnd();
|
||||
}
|
||||
|
||||
context.end(UPDATE_SET);
|
||||
context.end(UPDATE_SET)
|
||||
.start(UPDATE_WHERE);
|
||||
|
||||
if (!(getWhere() instanceof TrueCondition)) {
|
||||
context.formatSeparator()
|
||||
.start(UPDATE_WHERE)
|
||||
.keyword("where ")
|
||||
.visit(getWhere())
|
||||
.end(UPDATE_WHERE);
|
||||
.visit(getWhere());
|
||||
}
|
||||
|
||||
toSQLReturning(context, UPDATE_RETURNING);
|
||||
context.end(UPDATE_WHERE)
|
||||
.start(UPDATE_RETURNING);
|
||||
|
||||
toSQLReturning(context);
|
||||
|
||||
context.end(UPDATE_RETURNING);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -550,8 +555,8 @@ class UpdateQueryImpl<R extends Record> extends AbstractStoreQuery<R> implements
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return UPDATE;
|
||||
public final Clause[] clauses() {
|
||||
return CLAUSES;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -183,6 +183,8 @@ final class Utils {
|
||||
*/
|
||||
static final String DATA_FORCE_STATIC_STATEMENT = "org.jooq.configuration.force-static-statement";
|
||||
|
||||
static final String DATA_OMIT_CLAUSE_EVENT_EMISSION = "org.jooq.configuration.omit-clause-event-emission";
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
// Other constants
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@ -161,8 +161,8 @@ class Values<R extends Record> extends AbstractTable<R> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -83,8 +83,8 @@ class WithTable<R extends Record> extends AbstractTable<R> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
return DUMMY;
|
||||
public final Clause[] clauses() {
|
||||
return new Clause[] { DUMMY };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -68,7 +68,7 @@ class WrappedList extends AbstractQueryPart {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause clause() {
|
||||
public final Clause[] clauses() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,20 +35,48 @@
|
||||
*/
|
||||
package org.jooq.test;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
import static junit.framework.Assert.fail;
|
||||
import static org.jooq.Clause.CONDITION;
|
||||
import static org.jooq.Clause.CONDITION_COMPARISON;
|
||||
import static org.jooq.Clause.FIELD;
|
||||
import static org.jooq.Clause.FIELD_REFERENCE;
|
||||
import static org.jooq.Clause.FIELD_ROW;
|
||||
import static org.jooq.Clause.FIELD_VALUE;
|
||||
import static org.jooq.Clause.SELECT_WHERE;
|
||||
import static org.jooq.Clause.TABLE;
|
||||
import static org.jooq.Clause.TABLE_REFERENCE;
|
||||
import static org.jooq.Clause.UPDATE;
|
||||
import static org.jooq.Clause.UPDATE_RETURNING;
|
||||
import static org.jooq.Clause.UPDATE_SET;
|
||||
import static org.jooq.Clause.UPDATE_SET_ASSIGNMENT;
|
||||
import static org.jooq.Clause.UPDATE_UPDATE;
|
||||
import static org.jooq.Clause.UPDATE_WHERE;
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
import static org.jooq.impl.DSL.row;
|
||||
import static org.jooq.impl.DSL.select;
|
||||
import static org.jooq.impl.DSL.using;
|
||||
import static org.jooq.impl.DSL.val;
|
||||
import static org.jooq.impl.DefaultVisitListenerProvider.providers;
|
||||
import static org.jooq.test.data.Table1.FIELD_DATE1;
|
||||
import static org.jooq.test.data.Table1.FIELD_ID1;
|
||||
import static org.jooq.test.data.Table1.FIELD_NAME1;
|
||||
import static org.jooq.test.data.Table1.TABLE1;
|
||||
import static org.jooq.tools.StringUtils.leftPad;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.Configuration;
|
||||
import org.jooq.DSLContext;
|
||||
import org.jooq.VisitContext;
|
||||
import org.jooq.VisitListener;
|
||||
import org.jooq.impl.DSL;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
@ -56,8 +84,26 @@ import org.junit.Test;
|
||||
*
|
||||
* @author Lukas Eder
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public class VisitContextTest extends AbstractTest {
|
||||
|
||||
private DSLContext ctx;
|
||||
private SimpleListener listener;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
listener = new SimpleListener();
|
||||
ctx = DSL.using(
|
||||
create.configuration().derive(providers(listener)));
|
||||
}
|
||||
|
||||
@After
|
||||
public void teardown() {
|
||||
ctx = null;
|
||||
listener = null;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testClauses() {
|
||||
Configuration c = create.configuration().derive(providers(new ClausesListener()));
|
||||
@ -130,4 +176,149 @@ public class VisitContextTest extends AbstractTest {
|
||||
public void visitEnd(VisitContext context) {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_UPDATE_SET_simple() {
|
||||
ctx.update(TABLE1)
|
||||
.set(FIELD_NAME1, "value")
|
||||
.getSQL();
|
||||
|
||||
assertEvents(asList(
|
||||
asList(UPDATE),
|
||||
asList(UPDATE, UPDATE_UPDATE),
|
||||
asList(UPDATE, UPDATE_UPDATE, TABLE),
|
||||
asList(UPDATE, UPDATE_UPDATE, TABLE, TABLE_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_VALUE),
|
||||
asList(UPDATE, UPDATE_WHERE),
|
||||
asList(UPDATE, UPDATE_RETURNING)
|
||||
));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_UPDATE_SET_twoValues() {
|
||||
ctx.update(TABLE1)
|
||||
.set(FIELD_NAME1, "value")
|
||||
.set(FIELD_DATE1, FIELD_DATE1)
|
||||
.getSQL();
|
||||
|
||||
assertEvents(asList(
|
||||
asList(UPDATE),
|
||||
asList(UPDATE, UPDATE_UPDATE),
|
||||
asList(UPDATE, UPDATE_UPDATE, TABLE),
|
||||
asList(UPDATE, UPDATE_UPDATE, TABLE, TABLE_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_VALUE),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_REFERENCE),
|
||||
asList(UPDATE, UPDATE_WHERE),
|
||||
asList(UPDATE, UPDATE_RETURNING)
|
||||
));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_UPDATE_SET_rowValueExpressions() {
|
||||
|
||||
// Postgres is known to support this syntax particularly well
|
||||
ctx.configuration().set(POSTGRES);
|
||||
|
||||
ctx.update(TABLE1)
|
||||
.set(row(FIELD_NAME1, FIELD_DATE1),
|
||||
row(val("value"), FIELD_DATE1))
|
||||
.getSQL();
|
||||
|
||||
assertEvents(asList(
|
||||
asList(UPDATE),
|
||||
asList(UPDATE, UPDATE_UPDATE),
|
||||
asList(UPDATE, UPDATE_UPDATE, TABLE),
|
||||
asList(UPDATE, UPDATE_UPDATE, TABLE, TABLE_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW, FIELD, FIELD_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW, FIELD, FIELD_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW, FIELD, FIELD_VALUE),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_ROW, FIELD, FIELD_REFERENCE),
|
||||
asList(UPDATE, UPDATE_WHERE),
|
||||
asList(UPDATE, UPDATE_RETURNING)
|
||||
));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_UPDATE_SET_WHERE() {
|
||||
ctx.update(TABLE1)
|
||||
.set(FIELD_NAME1, "value")
|
||||
.where(FIELD_ID1.eq(1))
|
||||
.getSQL();
|
||||
|
||||
assertEvents(asList(
|
||||
asList(UPDATE),
|
||||
asList(UPDATE, UPDATE_UPDATE),
|
||||
asList(UPDATE, UPDATE_UPDATE, TABLE),
|
||||
asList(UPDATE, UPDATE_UPDATE, TABLE, TABLE_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_REFERENCE),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD),
|
||||
asList(UPDATE, UPDATE_SET, UPDATE_SET_ASSIGNMENT, FIELD, FIELD_VALUE),
|
||||
asList(UPDATE, UPDATE_WHERE),
|
||||
asList(UPDATE, UPDATE_WHERE, CONDITION),
|
||||
asList(UPDATE, UPDATE_WHERE, CONDITION, CONDITION_COMPARISON),
|
||||
asList(UPDATE, UPDATE_WHERE, CONDITION, CONDITION_COMPARISON, FIELD),
|
||||
asList(UPDATE, UPDATE_WHERE, CONDITION, CONDITION_COMPARISON, FIELD, FIELD_REFERENCE),
|
||||
asList(UPDATE, UPDATE_WHERE, CONDITION, CONDITION_COMPARISON, FIELD),
|
||||
asList(UPDATE, UPDATE_WHERE, CONDITION, CONDITION_COMPARISON, FIELD, FIELD_VALUE),
|
||||
asList(UPDATE, UPDATE_RETURNING)
|
||||
));
|
||||
}
|
||||
|
||||
private void assertEvents(List<List<Clause>> expected) {
|
||||
// This assertion is a bit more verbose to be able to detect errors more easily
|
||||
for (int i = 0; i < expected.size() && i < listener.clauses.size(); i++) {
|
||||
assertEquals("Mismatch at position " + i + ":", expected.get(i), listener.clauses.get(i));
|
||||
}
|
||||
|
||||
if (expected.size() != listener.clauses.size()) {
|
||||
fail("Size mismatch:\n\tExpected: " + expected + "\n\tActual: " + listener.clauses);
|
||||
}
|
||||
}
|
||||
|
||||
private static class SimpleListener implements VisitListener {
|
||||
|
||||
List<List<Clause>> clauses = new ArrayList<List<Clause>>();
|
||||
|
||||
@Override
|
||||
public void clauseStart(VisitContext context) {
|
||||
clauses.add(asList(context.clauses()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clauseEnd(VisitContext context) {}
|
||||
|
||||
@Override
|
||||
public void visitStart(VisitContext context) {}
|
||||
|
||||
@Override
|
||||
public void visitEnd(VisitContext context) {}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user