[#1502] Proper formatting of generated implicit JOIN

This commit is contained in:
lukaseder 2018-02-12 10:33:23 +01:00
parent 724739ca88
commit 3546388af1
2 changed files with 15 additions and 2 deletions

View File

@ -749,6 +749,7 @@ abstract class AbstractContext<C extends Context<C>> extends AbstractScope imple
static class ScopeStackElement {
int[] positions;
int indent;
JoinNode joinNode;
}

View File

@ -170,6 +170,7 @@ class DefaultRenderContext extends AbstractContext<RenderContext> implements Ren
void scopeMarkStart0(QueryPart part) {
ScopeStackElement e = scopeStack.get(part);
e.positions = new int[] { sql.length(), -1 };
e.indent = indent;
}
@Override
@ -225,9 +226,20 @@ class DefaultRenderContext extends AbstractContext<RenderContext> implements Ren
continue outer;
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);
String replaced = configuration
.dsl()
.renderContext()
.declareTables(true)
.sql('(')
.formatIndentStart(e1.indent)
.formatIndentStart()
.formatNewLine()
.visit(e1.joinNode.joinTree())
.formatNewLine()
.sql(')')
.render();
sql.replace(e1.positions[0], e1.positions[1], replaced);
int shift = replaced.length() - (e1.positions[1] - e1.positions[0]);
inner: