[#1502] Avoid replacing table expressions in the absence of join graphs
This commit is contained in:
parent
47b5551982
commit
724739ca88
@ -61,11 +61,11 @@ import static org.jooq.SQLDialect.POSTGRES;
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.impl.DSL.asterisk;
|
||||
import static org.jooq.impl.DSL.falseCondition;
|
||||
import static org.jooq.impl.DSL.field;
|
||||
import static org.jooq.impl.DSL.select;
|
||||
import static org.jooq.impl.Keywords.K_AS;
|
||||
import static org.jooq.impl.Tools.list;
|
||||
import static org.jooq.impl.Tools.DataKey.DATA_UNALIAS_ALIASES_IN_ORDER_BY;
|
||||
|
||||
import java.util.EnumSet;
|
||||
@ -145,7 +145,7 @@ final class Alias<Q extends QueryPart> extends AbstractQueryPart {
|
||||
&& (wrapped instanceof TableImpl || wrapped instanceof CommonTableExpressionImpl)) {
|
||||
|
||||
Select<Record> select =
|
||||
select(list(field("*"))).from(((Table<?>) wrapped).as(alias));
|
||||
select(asterisk()).from(((Table<?>) wrapped).as(alias));
|
||||
|
||||
context.sql('(').formatIndentStart().formatNewLine()
|
||||
.visit(select).formatIndentEnd().formatNewLine()
|
||||
@ -187,7 +187,7 @@ final class Alias<Q extends QueryPart> extends AbstractQueryPart {
|
||||
? (Select<?>) wrapped
|
||||
: wrapped instanceof DerivedTable
|
||||
? ((DerivedTable<?>) wrapped).query()
|
||||
: select(field("*")).from(((Table<?>) wrapped).as(alias))
|
||||
: select(asterisk()).from(((Table<?>) wrapped).as(alias))
|
||||
|
||||
);
|
||||
|
||||
|
||||
@ -224,19 +224,21 @@ class DefaultRenderContext extends AbstractContext<RenderContext> implements Ren
|
||||
if (e1.positions == null || e1.joinNode == null)
|
||||
continue outer;
|
||||
|
||||
String replaced = "(" + DSL.using(configuration).renderContext().declareTables(true).render(e1.joinNode.joinTree()) + ")";
|
||||
sql.replace(e1.positions[0], e1.positions[1], replaced);
|
||||
if (!e1.joinNode.children.isEmpty()) {
|
||||
String replaced = "(" + DSL.using(configuration).renderContext().declareTables(true).render(e1.joinNode.joinTree()) + ")";
|
||||
sql.replace(e1.positions[0], e1.positions[1], replaced);
|
||||
|
||||
int shift = replaced.length() - (e1.positions[1] - e1.positions[0]);
|
||||
int shift = replaced.length() - (e1.positions[1] - e1.positions[0]);
|
||||
|
||||
inner:
|
||||
for (ScopeStackElement e2 : scopeStack) {
|
||||
if (e2.positions == null)
|
||||
continue inner;
|
||||
inner:
|
||||
for (ScopeStackElement e2 : scopeStack) {
|
||||
if (e2.positions == null)
|
||||
continue inner;
|
||||
|
||||
if (e2.positions[0] > e1.positions[0]) {
|
||||
e2.positions[0] = e2.positions[0] + shift;
|
||||
e2.positions[1] = e2.positions[1] + shift;
|
||||
if (e2.positions[0] > e1.positions[0]) {
|
||||
e2.positions[0] = e2.positions[0] + shift;
|
||||
e2.positions[1] = e2.positions[1] + shift;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user