Browse Source

Add failing test with multiple joins and `InlineQuery`.

Adds a test demonstrating that the join condition of inline queries messes up those of outer joins.

Closes: #1362
Original pull request: #1368
pull/1564/head
Koen Punt 3 years ago committed by Mark Paluch
parent
commit
59a114a4c0
No known key found for this signature in database
GPG Key ID: 4406B84C1661DCD1
  1. 30
      spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java

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

@ -232,6 +232,36 @@ class SelectRendererUnitTests { @@ -232,6 +232,36 @@ class SelectRendererUnitTests {
+ "ON one.department_id = department.id");
}
@Test // GH-1362
void shouldRenderNestedJoins() {
Table merchantCustomers = Table.create("merchants_customers");
Table customerDetails = Table.create("customer_details");
Select innerSelect = Select.builder()
.select(customerDetails.column("cd_user_id"))
.from(customerDetails).join(merchantCustomers)
.on(merchantCustomers.column("mc_user_id").isEqualTo(customerDetails.column("cd_user_id")))
.build();
InlineQuery innerTable = InlineQuery.create(innerSelect, "inner");
Select select = Select.builder().select(merchantCustomers.asterisk()) //
.from(merchantCustomers) //
.join(innerTable).on(innerTable.column("i_user_id").isEqualTo(merchantCustomers.column("mc_user_id"))) //
.build();
String sql = SqlRenderer.toString(select);
assertThat(sql).isEqualTo("SELECT merchants_customers.* FROM merchants_customers " + //
"JOIN (" + //
"SELECT customer_details.cd_user_id " + //
"FROM customer_details " + //
"JOIN merchants_customers ON merchants_customers.mc_user_id = customer_details.cd_user_id" + //
") inner " + //
"ON inner.i_user_id = merchants_customers.mc_user_id");
}
@Test // GH-1003
void shouldRenderJoinWithTwoInlineQueries() {

Loading…
Cancel
Save