diff --git a/pom.xml b/pom.xml index d9ee91c910..1927dff350 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-relational-parent - 3.2.0-SNAPSHOT + 3.2.0-1651-asterisk-aliased-table-SNAPSHOT pom Spring Data Relational Parent diff --git a/spring-data-jdbc-distribution/pom.xml b/spring-data-jdbc-distribution/pom.xml index 271486f02a..ba4b5e6a55 100644 --- a/spring-data-jdbc-distribution/pom.xml +++ b/spring-data-jdbc-distribution/pom.xml @@ -14,7 +14,7 @@ org.springframework.data spring-data-relational-parent - 3.2.0-SNAPSHOT + 3.2.0-1651-asterisk-aliased-table-SNAPSHOT ../pom.xml diff --git a/spring-data-jdbc/pom.xml b/spring-data-jdbc/pom.xml index 2ac75e7993..c96fc20313 100644 --- a/spring-data-jdbc/pom.xml +++ b/spring-data-jdbc/pom.xml @@ -6,7 +6,7 @@ 4.0.0 spring-data-jdbc - 3.2.0-SNAPSHOT + 3.2.0-1651-asterisk-aliased-table-SNAPSHOT Spring Data JDBC Spring Data module for JDBC repositories. @@ -15,7 +15,7 @@ org.springframework.data spring-data-relational-parent - 3.2.0-SNAPSHOT + 3.2.0-1651-asterisk-aliased-table-SNAPSHOT diff --git a/spring-data-r2dbc/pom.xml b/spring-data-r2dbc/pom.xml index d65f06a082..b8e7ed3d85 100644 --- a/spring-data-r2dbc/pom.xml +++ b/spring-data-r2dbc/pom.xml @@ -6,7 +6,7 @@ 4.0.0 spring-data-r2dbc - 3.2.0-SNAPSHOT + 3.2.0-1651-asterisk-aliased-table-SNAPSHOT Spring Data R2DBC Spring Data module for R2DBC @@ -15,7 +15,7 @@ org.springframework.data spring-data-relational-parent - 3.2.0-SNAPSHOT + 3.2.0-1651-asterisk-aliased-table-SNAPSHOT diff --git a/spring-data-relational/pom.xml b/spring-data-relational/pom.xml index 74f350faa8..91f34f1da7 100644 --- a/spring-data-relational/pom.xml +++ b/spring-data-relational/pom.xml @@ -6,7 +6,7 @@ 4.0.0 spring-data-relational - 3.2.0-SNAPSHOT + 3.2.0-1651-asterisk-aliased-table-SNAPSHOT Spring Data Relational Spring Data Relational support @@ -14,7 +14,7 @@ org.springframework.data spring-data-relational-parent - 3.2.0-SNAPSHOT + 3.2.0-1651-asterisk-aliased-table-SNAPSHOT diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ExpressionVisitor.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ExpressionVisitor.java index c5b9f62c8f..b2a32c979f 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ExpressionVisitor.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ExpressionVisitor.java @@ -98,8 +98,16 @@ Delegation enterMatched(Expression segment) { } else { value = segment.toString(); } - } else if (segment instanceof AsteriskFromTable) { - value = NameRenderer.render(context, ((AsteriskFromTable) segment).getTable()) + ".*"; + } else if (segment instanceof AsteriskFromTable asteriskFromTable) { + + TableLike table = asteriskFromTable.getTable(); + CharSequence renderedTable; + if (table instanceof Aliased aliasedTable) { + renderedTable = NameRenderer.render(context, aliasedTable); + } else { + renderedTable = NameRenderer.render(context, table); + } + value = renderedTable + ".*"; } else if (segment instanceof Cast) { CastVisitor visitor = new CastVisitor(context); diff --git a/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java b/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java index d3277b84e2..67db2df6d9 100644 --- a/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java +++ b/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java @@ -635,6 +635,17 @@ void rendersAliasedExpression() { .isEqualTo("SELECT table.name AS alias FROM table"); } + @Test // GH-1651 + void asteriskOfAliasedTableUsesAlias() { + + Table employee = SQL.table("employee").as("e"); + Select select = Select.builder().select(employee.asterisk()).select(employee.column("id")).from(employee).build(); + + String rendered = SqlRenderer.toString(select); + + assertThat(rendered).isEqualTo("SELECT e.*, e.id FROM employee e"); + } + /** * Tests the rendering of analytic functions. */