From 7d37c6cfd897c94f51a68c780e5becba0c9e51a4 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Mon, 15 Jul 2019 19:04:43 +1200 Subject: [PATCH] #1753 - use selectId() for findCount() with Formula properties --- .../io/ebeaninternal/server/query/CQueryBuilder.java | 7 +------ .../tests/query/joins/TestQueryJoinOnFormula.java | 12 ++++++------ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java b/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java index 24953e857..f6e3620a9 100644 --- a/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java +++ b/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java @@ -264,12 +264,7 @@ class CQueryBuilder { boolean countDistinct = query.isDistinct(); if (!countDistinct) { // minimise select clause for standard count - if (manyWhereJoins.isFormulaWithJoin()) { - // Note that this is not yet optimal (split and join) - query.select(String.join(",", manyWhereJoins.getFormulaJoinProperties())); - } else { - query.setSelectId(); - } + query.setSelectId(); } CQueryPredicates predicates = new CQueryPredicates(binder, request); diff --git a/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java b/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java index 4171f8d58..d40430874 100644 --- a/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java +++ b/src/test/java/org/tests/query/joins/TestQueryJoinOnFormula.java @@ -36,7 +36,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { List loggedSql = LoggedSqlCollector.stop(); assertEquals(1, loggedSql.size()); - assertThat(loggedSql.get(0)).contains("join (select order_id, count(*) as total_items,"); + assertThat(loggedSql.get(0)).contains(" left join (select order_id, count(*) as total_items,"); } @Test @@ -51,7 +51,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { List loggedSql = LoggedSqlCollector.stop(); assertEquals(1, loggedSql.size()); - assertThat(loggedSql.get(0)).contains("join (select order_id, count(*) as total_items,"); + assertThat(loggedSql.get(0)).contains(" left join (select order_id, count(*) as total_items,"); } @Test @@ -67,7 +67,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { List loggedSql = LoggedSqlCollector.stop(); assertEquals(1, loggedSql.size()); assertThat(loggedSql.get(0)).contains("join (select order_id, count(*) as total_items,"); - assertThat(loggedSql.get(0)).contains("elect count(*) from ( select t0.id, z_bt0.total_items from o_order t0 join (select order_id,"); + assertThat(loggedSql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,"); } @Test @@ -85,7 +85,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { List loggedSql = LoggedSqlCollector.stop(); assertEquals(1, loggedSql.size()); - assertThat(loggedSql.get(0)).contains("select count(*) from ( select t0.id, z_bt0.total_items, z_bt0.total_amount from o_order t0 join (select order_id,"); + assertThat(loggedSql.get(0)).contains("select count(*) from ( select t0.id from o_order t0 left join (select order_id,"); } @Test @@ -101,7 +101,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { List loggedSql = LoggedSqlCollector.stop(); assertEquals(1, loggedSql.size()); - assertThat(loggedSql.get(0)).contains("join (select order_id, count(*) as total_items,"); + assertThat(loggedSql.get(0)).contains(" left join (select order_id, count(*) as total_items,"); assertThat(loggedSql.get(0)).contains("select t0.order_date from o_order t0"); } @@ -167,7 +167,7 @@ public class TestQueryJoinOnFormula extends BaseTestCase { List loggedSql = LoggedSqlCollector.stop(); assertEquals(1, loggedSql.size()); assertThat(loggedSql.get(0)).contains("where coalesce(f2.child_age, 0) = ?)"); - assertThat(loggedSql.get(0)).contains("select count(*) from ( select t0.identifier, coalesce(f2.child_age, 0) from parent_person t0"); + assertThat(loggedSql.get(0)).contains("select count(*) from ( select t0.identifier from parent_person t0 left join (select i2.parent_identifier, count(*) as child_count"); } @Test