Skip to content

Commit 7a738ee

Browse files
committed
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.
1 parent 78f26aa commit 7a738ee

File tree

5 files changed

+12
-10
lines changed

5 files changed

+12
-10
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class AssignmentVisitor extends TypedSubtreeVisitor<Assignment> {
3636
private final StringBuilder part = new StringBuilder();
3737

3838
AssignmentVisitor(RenderContext context, RenderTarget target) {
39-
this.columnVisitor = new ColumnVisitor(context, part::append);
39+
this.columnVisitor = new ColumnVisitor(context, false, part::append);
4040
this.expressionVisitor = new ExpressionVisitor(context);
4141
this.target = target;
4242
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@ class ColumnVisitor extends TypedSubtreeVisitor<Column> {
3030

3131
private final RenderContext context;
3232
private final RenderTarget target;
33+
private final boolean considerTablePrefix;
3334

3435
private @Nullable String tableName;
3536

36-
ColumnVisitor(RenderContext context, RenderTarget target) {
37+
ColumnVisitor(RenderContext context, boolean considerTablePrefix, RenderTarget target) {
3738
this.context = context;
3839
this.target = target;
40+
this.considerTablePrefix = considerTablePrefix;
3941
}
4042

4143
/*
@@ -48,7 +50,7 @@ Delegation leaveMatched(Column segment) {
4850
String column = context.getNamingStrategy().getName(segment);
4951
StringBuilder builder = new StringBuilder(
5052
tableName != null ? tableName.length() + column.length() : column.length());
51-
if (tableName != null) {
53+
if (considerTablePrefix && tableName != null) {
5254
builder.append(tableName);
5355
}
5456
builder.append(column);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class InsertStatementVisitor extends DelegatingVisitor implements PartRenderer {
4949
into.append(it);
5050
});
5151

52-
this.columnVisitor = new ColumnVisitor(context, it -> {
52+
this.columnVisitor = new ColumnVisitor(context, false, it -> {
5353

5454
if (columns.length() != 0) {
5555
columns.append(", ");

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void shouldRenderInsertColumn() {
4747

4848
Insert insert = Insert.builder().into(bar).column(bar.column("foo")).values(SQL.bindMarker()).build();
4949

50-
assertThat(SqlRenderer.toString(insert)).isEqualTo("INSERT INTO bar (bar.foo) VALUES(?)");
50+
assertThat(SqlRenderer.toString(insert)).isEqualTo("INSERT INTO bar (foo) VALUES(?)");
5151
}
5252

5353
@Test // DATAJDBC-335
@@ -58,6 +58,6 @@ public void shouldRenderInsertMultipleColumns() {
5858
Insert insert = Insert.builder().into(bar).columns(bar.columns("foo", "baz")).value(SQL.bindMarker())
5959
.value(SQL.literalOf("foo")).build();
6060

61-
assertThat(SqlRenderer.toString(insert)).isEqualTo("INSERT INTO bar (bar.foo, bar.baz) VALUES(?, 'foo')");
61+
assertThat(SqlRenderer.toString(insert)).isEqualTo("INSERT INTO bar (foo, baz) VALUES(?, 'foo')");
6262
}
6363
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void shouldRenderSimpleUpdate() {
4040

4141
Update update = StatementBuilder.update(table).set(column.set(SQL.bindMarker())).build();
4242

43-
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET mytable.foo = ?");
43+
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET foo = ?");
4444
}
4545

4646
@Test // DATAJDBC-335
@@ -54,7 +54,7 @@ public void shouldRenderMultipleColumnUpdate() {
5454
.set(foo.set(SQL.bindMarker()), bar.set(SQL.bindMarker())) //
5555
.build();
5656

57-
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET mytable.foo = ?, mytable.bar = ?");
57+
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET foo = ?, bar = ?");
5858
}
5959

6060
@Test // DATAJDBC-335
@@ -65,7 +65,7 @@ public void shouldRenderUpdateWithLiteral() {
6565

6666
Update update = StatementBuilder.update(table).set(column.set(SQL.literalOf(20))).build();
6767

68-
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET mytable.foo = 20");
68+
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET foo = 20");
6969
}
7070

7171
@Test // DATAJDBC-335
@@ -76,6 +76,6 @@ public void shouldCreateUpdateWIthCondition() {
7676

7777
Update update = StatementBuilder.update(table).set(column.set(SQL.bindMarker())).where(column.isNull()).build();
7878

79-
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET mytable.foo = ? WHERE mytable.foo IS NULL");
79+
assertThat(SqlRenderer.toString(update)).isEqualTo("UPDATE mytable SET foo = ? WHERE mytable.foo IS NULL");
8080
}
8181
}

0 commit comments

Comments
 (0)