DATAJDBC-343 - Omit table prefixes for assignment columns.

INSERT and UPDATE assignments/column lists no longer include the table prefix for a column as columns as the support is Dialect-specific and we should generally assume columns in these clauses to belong to the table used in the statement.
This commit is contained in:
Mark Paluch
2019-03-18 14:44:15 +01:00
parent 78f26aa0a7
commit 7a738eed97
5 changed files with 12 additions and 10 deletions

View File

@@ -36,7 +36,7 @@ class AssignmentVisitor extends TypedSubtreeVisitor<Assignment> {
private final StringBuilder part = new StringBuilder();
AssignmentVisitor(RenderContext context, RenderTarget target) {
this.columnVisitor = new ColumnVisitor(context, part::append);
this.columnVisitor = new ColumnVisitor(context, false, part::append);
this.expressionVisitor = new ExpressionVisitor(context);
this.target = target;
}

View File

@@ -30,12 +30,14 @@ class ColumnVisitor extends TypedSubtreeVisitor<Column> {
private final RenderContext context;
private final RenderTarget target;
private final boolean considerTablePrefix;
private @Nullable String tableName;
ColumnVisitor(RenderContext context, RenderTarget target) {
ColumnVisitor(RenderContext context, boolean considerTablePrefix, RenderTarget target) {
this.context = context;
this.target = target;
this.considerTablePrefix = considerTablePrefix;
}
/*
@@ -48,7 +50,7 @@ class ColumnVisitor extends TypedSubtreeVisitor<Column> {
String column = context.getNamingStrategy().getName(segment);
StringBuilder builder = new StringBuilder(
tableName != null ? tableName.length() + column.length() : column.length());
if (tableName != null) {
if (considerTablePrefix && tableName != null) {
builder.append(tableName);
}
builder.append(column);

View File

@@ -49,7 +49,7 @@ class InsertStatementVisitor extends DelegatingVisitor implements PartRenderer {
into.append(it);
});
this.columnVisitor = new ColumnVisitor(context, it -> {
this.columnVisitor = new ColumnVisitor(context, false, it -> {
if (columns.length() != 0) {
columns.append(", ");

View File

@@ -47,7 +47,7 @@ public class InsertRendererUnitTests {
Insert insert = Insert.builder().into(bar).column(bar.column("foo")).values(SQL.bindMarker()).build();
assertThat(SqlRenderer.toString(insert)).isEqualTo("INSERT INTO bar (bar.foo) VALUES(?)");
assertThat(SqlRenderer.toString(insert)).isEqualTo("INSERT INTO bar (foo) VALUES(?)");
}
@Test // DATAJDBC-335
@@ -58,6 +58,6 @@ public class InsertRendererUnitTests {
Insert insert = Insert.builder().into(bar).columns(bar.columns("foo", "baz")).value(SQL.bindMarker())
.value(SQL.literalOf("foo")).build();
assertThat(SqlRenderer.toString(insert)).isEqualTo("INSERT INTO bar (bar.foo, bar.baz) VALUES(?, 'foo')");
assertThat(SqlRenderer.toString(insert)).isEqualTo("INSERT INTO bar (foo, baz) VALUES(?, 'foo')");
}
}

View File

@@ -40,7 +40,7 @@ public class UpdateRendererUnitTests {
Update update = StatementBuilder.update(table).set(column.set(SQL.bindMarker())).build();
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET mytable.foo = ?");
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET foo = ?");
}
@Test // DATAJDBC-335
@@ -54,7 +54,7 @@ public class UpdateRendererUnitTests {
.set(foo.set(SQL.bindMarker()), bar.set(SQL.bindMarker())) //
.build();
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET mytable.foo = ?, mytable.bar = ?");
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET foo = ?, bar = ?");
}
@Test // DATAJDBC-335
@@ -65,7 +65,7 @@ public class UpdateRendererUnitTests {
Update update = StatementBuilder.update(table).set(column.set(SQL.literalOf(20))).build();
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET mytable.foo = 20");
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET foo = 20");
}
@Test // DATAJDBC-335
@@ -76,6 +76,6 @@ public class UpdateRendererUnitTests {
Update update = StatementBuilder.update(table).set(column.set(SQL.bindMarker())).where(column.isNull()).build();
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET mytable.foo = ? WHERE mytable.foo IS NULL");
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET foo = ? WHERE mytable.foo IS NULL");
}
}