From ba80ae20f4e1e4a33bda6a0454e3360f03561b34 Mon Sep 17 00:00:00 2001 From: Noemi Szemenyei Date: Mon, 22 Nov 2021 08:30:50 +0100 Subject: [PATCH] NPE Fix with .setCountDistinct(CountDistinctOrder.NO_ORDERING) --- .../java/io/ebeaninternal/server/query/CQueryBuilder.java | 2 ++ .../org/tests/query/other/TestQuerySingleAttribute.java | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java index 87a9f9b10..278603f5b 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/CQueryBuilder.java @@ -736,6 +736,8 @@ final class CQueryBuilder { return " order by count(*) desc, r1.attribute_"; case COUNT_DESC_ATTR_DESC: return " order by count(*) desc, r1.attribute_ desc"; + case NO_ORDERING: + return ""; default: throw new IllegalArgumentException("Illegal enum: " + orderBy); } diff --git a/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java b/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java index 085a6b18a..43f7162cb 100644 --- a/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java +++ b/ebean-test/src/test/java/org/tests/query/other/TestQuerySingleAttribute.java @@ -646,6 +646,14 @@ public class TestQuerySingleAttribute extends BaseTestCase { .findSingleAttributeList(); assertThat(list1.get(0)).isInstanceOf(CountedValue.class); //assertThat(list1.toString()).isEqualTo("[1: Tracy, 3: Jim1, 1: Jack, 3: Fred1, 1: Fiona, 3: Bugs1]"); + + query = DB.find(Contact.class).select("firstName"); + list1 = query + .setCountDistinct(CountDistinctOrder.NO_ORDERING) + .findSingleAttributeList(); + assertThat(list1.get(0)).isInstanceOf(CountedValue.class); + assertThat(sqlOf(query)).contains("select r1.attribute_, count(*) from (" + + "select t0.first_name as attribute_ from contact t0"); query = DB.find(Contact.class).select("firstName"); list1 = query