[#2694] Unify RenderContext and BindContext traversal
This commit is contained in:
parent
451c02d819
commit
65999dc6f6
@ -1723,7 +1723,7 @@ xxxxxx xxxxx xxxxxxxxxx xxxxxxx xxxxxxxxxxxxxxxxx
|
||||
|
||||
xxxxx
|
||||
xxxxxx xxxx xxxxxxxxxxxxxxxxxxxxx x
|
||||
xxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxxxxxxxxxxx x xxxxxx
|
||||
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxx xxxxx
|
||||
|
||||
@ -45,12 +45,10 @@ import static org.jooq.conf.ParamType.INLINED;
|
||||
import static org.jooq.impl.DSL.inline;
|
||||
import static org.jooq.impl.DSL.val;
|
||||
|
||||
import org.jooq.BindContext;
|
||||
import org.jooq.Clause;
|
||||
import org.jooq.Context;
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Param;
|
||||
import org.jooq.RenderContext;
|
||||
import org.jooq.RenderContext.CastMode;
|
||||
import org.jooq.conf.ParamType;
|
||||
import org.jooq.exception.DataAccessException;
|
||||
@ -72,7 +70,7 @@ class Limit extends AbstractQueryPart {
|
||||
private boolean rendersParams;
|
||||
|
||||
@Override
|
||||
public final void toSQL(RenderContext context) {
|
||||
public final void accept(Context<?> context) {
|
||||
ParamType paramType = context.paramType();
|
||||
CastMode castMode = context.castMode();
|
||||
|
||||
@ -227,121 +225,6 @@ class Limit extends AbstractQueryPart {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void bind(BindContext context) {
|
||||
switch (context.configuration().dialect()) {
|
||||
|
||||
// OFFSET .. LIMIT support provided by the following dialects
|
||||
// ----------------------------------------------------------
|
||||
/* [pro] xx
|
||||
xxxx xxxxxxxxxx
|
||||
xxxx xxxxxxxxxxxxxx
|
||||
xx [/pro] */
|
||||
case DERBY: {
|
||||
context.visit(offsetOrZero);
|
||||
context.visit(numberOfRows);
|
||||
break;
|
||||
}
|
||||
|
||||
// LIMIT .. OFFSET support provided by the following dialects
|
||||
// ----------------------------------------------------------
|
||||
case MARIADB:
|
||||
case MYSQL:
|
||||
case HSQLDB:
|
||||
case H2:
|
||||
case POSTGRES:
|
||||
case SQLITE: {
|
||||
context.visit(numberOfRows);
|
||||
context.visit(offsetOrZero);
|
||||
break;
|
||||
}
|
||||
|
||||
// LIMIT [offset], [limit] supported by CUBRID
|
||||
// -------------------------------------------
|
||||
case CUBRID: {
|
||||
context.visit(offsetOrZero);
|
||||
context.visit(numberOfRows);
|
||||
break;
|
||||
}
|
||||
|
||||
// No bind variables in the FIRST .. SKIP clause
|
||||
// ---------------------------------------------
|
||||
case FIREBIRD: {
|
||||
context.visit(getLowerRownum());
|
||||
context.visit(getUpperRownum());
|
||||
break;
|
||||
}
|
||||
|
||||
/* [pro] xx
|
||||
xx xxxxx xxxxxxxx xxxxx xxxxxxx xxxx xxxxxxxxx xx xxx
|
||||
xxxx xxxx
|
||||
xxxx xxxxxxx x
|
||||
xxxxxx
|
||||
x
|
||||
|
||||
xx xx xxxx xxxxxxxxx xx xxx xxx xx xxxxx xx xxxxxx
|
||||
xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
xxxx xxxxxxx x
|
||||
|
||||
xx xxx xx xxxxx xx xxxxxxx xxxxxxx xxxx xxxxxxxxx
|
||||
xx xxxxxxxxxxxxxxxx x
|
||||
x
|
||||
|
||||
xx xxxx xxxxxxxxx xxxxxxxx xx xxxxxx xxxx xxxxxxx
|
||||
xxxx x
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
x
|
||||
|
||||
xxxxxx
|
||||
x
|
||||
|
||||
xx xxxxx xxxxxxxx xxxxx xxxxx xxxx xxxxxxxxx xx xxxxx xxx xxxxxxx
|
||||
xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
xxxx xxxxxxx
|
||||
xxxx xxxxxxxxxxx
|
||||
xxxx xxxx
|
||||
xxxx xxxxxx
|
||||
xxxx xxxxxxx
|
||||
xxxx xxxxxxxxxxxxxx x
|
||||
|
||||
xx xxx xxxxxxx xxxxxxx xxxx xxxxxxxxx
|
||||
xx xxxxxxx xx xxxx xx xxxxxxxxxxxxxxx x
|
||||
x
|
||||
|
||||
xx xxxx xxxxxxxxx xxxxxxxx xx xxxxxx xxxx xxxxxxx
|
||||
xxxx x
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
x
|
||||
|
||||
xxxxxx
|
||||
x
|
||||
|
||||
xx xxxxxx xxxxx xx xxxxx xx xxx xxxxxxx xxxxxx xxx xxxxxx xxxxx
|
||||
xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
xxxx xxxxxxx
|
||||
xxxx xxxxxxxxxx
|
||||
xxxx xxxxxxxxxx
|
||||
xxxx xxxxxxxxxx x
|
||||
|
||||
xx xxxxxxx xxxx xxx xxxxxx xxxxxxxxx xxxxxxxxxxxx xxx xxxxx
|
||||
xx xxxxx xx xxxxx xxxxxx xxx xxxxx xxxxx
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxx
|
||||
x
|
||||
|
||||
xx [/pro] */
|
||||
// [#2057] Bind the same values as rendered in toSQL() by default
|
||||
default: {
|
||||
context.visit(numberOfRows);
|
||||
context.visit(offsetOrZero);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final Clause[] clauses(Context<?> ctx) {
|
||||
return null;
|
||||
|
||||
@ -69,6 +69,7 @@ import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SortOrder.ASC;
|
||||
import static org.jooq.impl.DSL.inline;
|
||||
import static org.jooq.impl.DSL.name;
|
||||
@ -626,7 +627,7 @@ class SelectQueryImpl<R extends Record> extends AbstractSelect<R> implements Sel
|
||||
context.visit(getSelect1());
|
||||
}
|
||||
|
||||
|
||||
|
||||
context.declareFields(false)
|
||||
.end(SELECT_SELECT);
|
||||
|
||||
@ -793,7 +794,7 @@ class SelectQueryImpl<R extends Record> extends AbstractSelect<R> implements Sel
|
||||
/* [pro] xx
|
||||
xx xxxxxxx xxx xxxxxx xxxx xxxxxxxx xx xxxxx xx xxxxxxx xxxxx xxxx
|
||||
xx xxxxxx xx xxxxx
|
||||
xxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
|
||||
xxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxx xx xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
|
||||
xxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
xxxxxxxxxxxxxxx xxxx
|
||||
xxxxxx xx
|
||||
|
||||
@ -59,6 +59,7 @@ import static org.jooq.SQLDialect.POSTGRES;
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.conf.ParamType.INLINED;
|
||||
import static org.jooq.conf.ParamType.NAMED;
|
||||
import static org.jooq.impl.DSL.name;
|
||||
import static org.jooq.impl.DSL.using;
|
||||
@ -106,13 +107,12 @@ class Val<T> extends AbstractParam<T> {
|
||||
@Override
|
||||
public void accept(Context<?> ctx) {
|
||||
if (ctx instanceof RenderContext)
|
||||
toSQL((RenderContext) ctx);
|
||||
toSQL0((RenderContext) ctx);
|
||||
else
|
||||
bind((BindContext) ctx);
|
||||
bind0((BindContext) ctx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void toSQL(RenderContext context) {
|
||||
final void toSQL0(RenderContext context) {
|
||||
|
||||
// Casting can be enforced or prevented
|
||||
switch (context.castMode()) {
|
||||
@ -610,11 +610,10 @@ class Val<T> extends AbstractParam<T> {
|
||||
return val.toString().replace("'", "''");
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void bind(BindContext context) {
|
||||
final void bind0(BindContext context) {
|
||||
|
||||
// [#1302] Bind value only if it was not explicitly forced to be inlined
|
||||
if (!isInline()) {
|
||||
if (!isInline() && context.paramType() != INLINED) {
|
||||
context.bindValue(value, this);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user