Skip to content

Commit 1f3bec7

Browse files
schaudermp911de
authored andcommitted
Fix rendering of asterisk projection (table.*) for aliased tables.
Closes #1651 Original pull request: #1662
1 parent 6440f9e commit 1f3bec7

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,16 @@ Delegation enterMatched(Expression segment) {
9898
} else {
9999
value = segment.toString();
100100
}
101-
} else if (segment instanceof AsteriskFromTable) {
102-
value = NameRenderer.render(context, ((AsteriskFromTable) segment).getTable()) + ".*";
101+
} else if (segment instanceof AsteriskFromTable asteriskFromTable) {
102+
103+
TableLike table = asteriskFromTable.getTable();
104+
CharSequence renderedTable;
105+
if (table instanceof Aliased aliasedTable) {
106+
renderedTable = NameRenderer.render(context, aliasedTable);
107+
} else {
108+
renderedTable = NameRenderer.render(context, table);
109+
}
110+
value = renderedTable + ".*";
103111
} else if (segment instanceof Cast) {
104112

105113
CastVisitor visitor = new CastVisitor(context);

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,17 @@ void notOfNested() {
652652
assertThat(sql).isEqualTo("SELECT atable.* FROM atable WHERE NOT (atable.id = 1 AND atable.id = 2)");
653653
}
654654

655+
@Test // GH-1651
656+
void asteriskOfAliasedTableUsesAlias() {
657+
658+
Table employee = SQL.table("employee").as("e");
659+
Select select = Select.builder().select(employee.asterisk()).select(employee.column("id")).from(employee).build();
660+
661+
String rendered = SqlRenderer.toString(select);
662+
663+
assertThat(rendered).isEqualTo("SELECT e.*, e.id FROM employee e");
664+
}
665+
655666
/**
656667
* Tests the rendering of analytic functions.
657668
*/

0 commit comments

Comments
 (0)