Fix rendering of asterisk projection (table.*) for aliased tables.
Closes #1651 Original pull request: #1662
This commit is contained in:
committed by
Mark Paluch
parent
6440f9e6dc
commit
1f3bec7f15
@@ -98,8 +98,16 @@ class ExpressionVisitor extends TypedSubtreeVisitor<Expression> implements PartR
|
||||
} 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);
|
||||
|
||||
@@ -652,6 +652,17 @@ class SelectRendererUnitTests {
|
||||
assertThat(sql).isEqualTo("SELECT atable.* FROM atable WHERE NOT (atable.id = 1 AND atable.id = 2)");
|
||||
}
|
||||
|
||||
@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.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user