Browse Source

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.
pull/134/head
Mark Paluch 7 years ago
parent
commit
7a738eed97
  1. 2
      spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/AssignmentVisitor.java
  2. 6
      spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ColumnVisitor.java
  3. 2
      spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/InsertStatementVisitor.java
  4. 4
      spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/InsertRendererUnitTests.java
  5. 8
      spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/UpdateRendererUnitTests.java

2
spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/AssignmentVisitor.java

@ -36,7 +36,7 @@ class AssignmentVisitor extends TypedSubtreeVisitor<Assignment> { @@ -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;
}

6
spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ColumnVisitor.java

@ -30,12 +30,14 @@ class ColumnVisitor extends TypedSubtreeVisitor<Column> { @@ -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> { @@ -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);

2
spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/InsertStatementVisitor.java

@ -49,7 +49,7 @@ class InsertStatementVisitor extends DelegatingVisitor implements PartRenderer { @@ -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(", ");

4
spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/InsertRendererUnitTests.java

@ -47,7 +47,7 @@ public class InsertRendererUnitTests { @@ -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 { @@ -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')");
}
}

8
spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/UpdateRendererUnitTests.java

@ -40,7 +40,7 @@ public class UpdateRendererUnitTests { @@ -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 { @@ -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 { @@ -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 { @@ -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");
}
}

Loading…
Cancel
Save