[#3936] AbstractQuery unnecessarily creates two DefaultRenderContext instances

This commit is contained in:
lukaseder 2015-01-10 16:36:30 +01:00
parent a5e3421ca0
commit 4a876ee2f4
3 changed files with 56 additions and 87 deletions

View File

@ -46,6 +46,7 @@ import static org.jooq.ExecuteType.DDL;
// ...
// ...
// ...
// ...
import static org.jooq.conf.ParamType.INDEXED;
import static org.jooq.conf.ParamType.INLINED;
import static org.jooq.conf.SettingsTools.executePreparedStatements;
@ -63,11 +64,13 @@ import java.util.Map;
import org.jooq.AttachableInternal;
import org.jooq.Configuration;
import org.jooq.Constants;
import org.jooq.ExecuteContext;
import org.jooq.ExecuteListener;
import org.jooq.Param;
import org.jooq.Query;
import org.jooq.RenderContext;
import org.jooq.Select;
import org.jooq.conf.ParamType;
import org.jooq.conf.StatementType;
import org.jooq.exception.ControlFlowSignal;
@ -426,12 +429,14 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query, Attacha
}
private final String getSQL0(ExecuteContext ctx) {
String result;
/* [pro] xx
xx xxxxxxx xxxxxx xxx xxxxxxxxxx xx xxx xxxxxxx xxxx xxxxxx
xx xxxxxxxxxxx xx xxx xx xxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx
xxxxxx xxxxxxxxxxxxxxxx
xxxxxx x xxxxxxxxxxxxxxxx
x
xxxx
xx [/pro] */
@ -440,18 +445,62 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query, Attacha
try {
RenderContext render = new DefaultRenderContext(configuration);
render.data(DATA_COUNT_BIND_VALUES, true);
return render.render(this);
result = render.visit(this).render();
}
catch (DefaultRenderContext.ForceInlineSignal e) {
ctx.data(DATA_FORCE_STATIC_STATEMENT, true);
return getSQL(INLINED);
result = getSQL(INLINED);
}
}
else {
return getSQL(INLINED);
result = getSQL(INLINED);
}
/* [pro] xx xx xxxxxxx xx
xx xxxxxx xx xxx xxxxxx xx xxxxxxxxxx xxx xxxxx xxxxx
xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xx xxxx xxxxxxxxx xxx xxxxxxx xx x xxxxxxxx xxxxxxxx xxxx xxx xxx xxxxx
xx x xxxxxxxxxx xxxxxxx xx xxxx xxxx x xxxx xx xxxx xxxxx xxxxxxxx xx xx
xx xxx xxxx xx xxxxxx xxx xxxxxx xxxxxxxxx xxxx xxxxxxxx xxxxxxx
xx xxxxxxxxxxxxx xxx xx xxx xxxx xx xxxxxx xxx xxxxx xxxxxxx xxxxxxxx
xx xxxxxxxxxx x xxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xx xxxxx xxxxxxxxxx xxxxxxx x
xx xx xxxxx xx xxxxxx xx xxxxxx xxxxxx xxxxxx xxx xxx xxxxxxxx
xx xxxxxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
x
xxxx xx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
xxxxxx xx x xx xxx xxxxxxxx xxxx x xxxx xxxxx xxxxxxx xx xxxx x x xxxxxxxxxxxxxxxxxxxxxx x x xxxx
x
xxxx x
xxxxxx xx x xx xxx xxxxxxxx xxxx x xxxx xxxxx xxxxxxx xx xxxx x x xxxxxxxxxxxxxxxxxxxxxxx
x
x
xx xxxxxxxxxxxxxxxxxxxxxx x xxxxxxxxx x
xxxxx xxx xxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxx x xxxxxx xxxxxxx xxxx xxx xxxx xxxxx xxxxxxxx xxxxxx xxxxxxxx xxxxxxxxx xx x xxxxxxxxxx xxxxxxx xx xxxxxxx xxxxxxxxxxxxxxxxxxxxxx xx xxx xxxx xx xxx xxxx xxxxxxx xxxx xxxx xxxx xxxxxxxxx
x
xx xxxx x xxxxxxxxxxxxxxxxxxxxxxxxxxx x
xxxxx xxx xxxxxxxxxxxxxxxxxxxxxx xx xxx xxxxx xxxxxx xxx xxxxx xxxx xxxx xxxx xxxxxx xxxxxxxx xxxxxxxxx xx x xxxxxxxxxx xxxxxxx xx xxxxxxx xxxxxxxxxxxxxxxxxxxxxx xx xxx xxxx xx xxxxxx xxxx xxxx xxxxxxxxx
x
xx xxxxxxxx xx xx [/pro] */
return result;
}
/* [pro] xx xx xxxxxxx xx
xxxxxxx xxxxxx xxxxx xxxx xxxx
xxxxxxx xxxxxx xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx
xxxxxx x
xxx x xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x
xx xxxxxxxx xx xx [/pro] */
/**
* {@inheritDoc}
*/

View File

@ -173,8 +173,8 @@ abstract class AbstractStoreQuery<R extends Record> extends AbstractQuery implem
public final void accept(Context<?> ctx) {
/* [pro] xx
xx xxxxxxxxxxxxxxxxxxxxx
xx xxxxxxxxxxxx xx xxx
xx xxxxxxxxxxxxx xx xxx
xx xxxxxxxxxxxxxxxxxxxx
xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx xxxxx x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxx

View File

@ -40,9 +40,6 @@
*/
package org.jooq.impl;
import static java.util.Arrays.asList;
// ...
// ...
import static org.jooq.SQLDialect.SQLITE;
import static org.jooq.conf.ParamType.INDEXED;
import static org.jooq.conf.ParamType.INLINED;
@ -71,7 +68,6 @@ import org.jooq.QueryPart;
import org.jooq.QueryPartInternal;
import org.jooq.RenderContext;
import org.jooq.SQLDialect;
import org.jooq.Select;
import org.jooq.conf.RenderKeywordStyle;
import org.jooq.conf.RenderNameStyle;
import org.jooq.conf.Settings;
@ -153,85 +149,9 @@ class DefaultRenderContext extends AbstractContext<RenderContext> implements Ren
return sql.toString();
}
/* [pro] xx xx xxxxxxx xx
xxxxxxx xxxxxx xxxxx xxxx xxxx
xxxxxxx xxxxxx xxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx
xxxxxx x
xxxxxx x x xxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx x x xxxxx
xxx x
x x xxx xxxxxxxxxxxxxxxxxxxxxxxxx
xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxx
xxxxxx xxx x xxxxx
xxxxxx xxxxxxxx x xxx xxxxxxxxxx xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
xxx x xxx xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx x x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx x x xxxxxxxxxxxxxxx
xx xxxxxxxxxx x
x x xxxxxxxxxxx
x
x
xxxxx xxxxxxxxxx xxxxxxx xx
xxxxxxx x
xx xx xx xxxxx x
xxx x
xxxxxxxxxx
x
xxxxx xxxxxxxxxx xxxxxxx xx
x
x
xx xxxxxx xxxxxxx xxxx xxxxxxxxxx
xxx x xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x
xx xxxxxxxx xx xx [/pro] */
@Override
public final String render(QueryPart part) {
RenderContext local = new DefaultRenderContext(this).visit(part);
/* [pro] xx xx xxxxxxx xx
xx xxxxxx xx xxx xxxxxx xx xxxxxxxxxx xxx xxxxx xxxxx
xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xx xxxx xxxxxxxxx xxx xxxxxxx xx x xxxxxxxx xxxxxxxx xxxx xxx xxx xxxxx
xx x xxxxxxxxxx xxxxxxx xx xxxx xxxx x xxxx xx xxxx xxxxx xxxxxxxx xx xx
xx xxx xxxx xx xxxxxx xxx xxxxxx xxxxxxxxx xxxx xxxxxxxx xxxxxxx
xx xxxxxxxxxxxxx xxx xx xxx xxxx xx xxxxxx xxx xxxxx xxxxxxx xxxxxxxx
xx xxxxxxxxxx x xxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xx xxxxx xxxxxxxxxx xxxxxxx x
xx xx xxxxx xx xxxxxx xx xxxxxx xxxxxx xxxxxx xxx xxx xxxxxxxx
xx xxxxxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
x
xxxx xx xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
xxxxxxxxxxx xx xxx xxxxxxxx xxxx x xxxx xxxxx xxxxxxx xx xxxx x x xxxxxxxxxxxxxxxxxxxxxx x x xxxxx
x
xxxx x
xxxxxxxxxxx xx xxx xxxxxxxx xxxx x xxxx xxxxx xxxxxxx xx xxxx x x xxxxxxxxxxxxxxxxxxxxxxxx
x
x
xx xxxxxxxxxxxxxxxxxxxxxx x xxxxxxx x
xxxxx xxx xxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxx x xxxxxx xxxxxxx xxxx xxx xxxx xxxxx xxxxxxxx xxxxxx xxxxxxxx xxxxxxxxx xx x xxxxxxxxxx xxxxxxx xx xxxxxxx xxxxxxxxxxxxxxxxxxxxxx xx xxx xxxx xx xxx xxxx xxxxxxx xxxx xxxx xxxx xxxxxxxxx
x
xx xxxx x xxxxxxxxxxxxxxxxxxxxxxxxxxx x
xxxxx xxx xxxxxxxxxxxxxxxxxxxxxx xx xxx xxxxx xxxxxx xxx xxxxx xxxx xxxx xxxx xxxxxx xxxxxxxx xxxxxxxxx xx x xxxxxxxxxx xxxxxxx xx xxxxxxx xxxxxxxxxxxxxxxxxxxxxx xx xxx xxxx xx xxxxxx xxxx xxxx xxxxxxxxx
x
xx xxxxxxxx xx xx [/pro] */
return local.render();
return new DefaultRenderContext(this).visit(part).render();
}
@Override