This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch STABLE-4.2
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/STABLE-4.2 by this push:
     new 8b4c46e75 CAY-2836 ObjectSelect.selectCount() throws if a query 
contains ordering
8b4c46e75 is described below

commit 8b4c46e757e08f7b7d92275e202d694a2db6c616
Author: Nikita Timofeev <[email protected]>
AuthorDate: Tue Oct 28 17:23:15 2025 +0400

    CAY-2836 ObjectSelect.selectCount() throws if a query contains ordering
---
 RELEASE-NOTES.txt                                                 | 1 +
 .../src/main/java/org/apache/cayenne/query/ObjectSelect.java      | 5 ++++-
 .../test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java    | 8 ++++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 14c0c80f5..983651e0a 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -19,6 +19,7 @@ CAY-2897 Add no-op default implementations to the 
GraphChangeHandler interface
 
 Bug Fixes:
 
+CAY-2836 ObjectSelect.selectCount() throws if a query contains ordering
 CAY-2883 License and notice templates are not processed by the Gradle build
 CAY-2885 Modeler: DbImport fails to load DB schema view
 CAY-2887 Expressions: Incorrect serialization to string of numeric literals
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java 
b/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java
index 4a54d784c..07ce0cd1e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ObjectSelect.java
@@ -678,7 +678,10 @@ public class ObjectSelect<T> extends FluentSelect<T> 
implements ParameterizedQue
      * @return count of rows
      */
     public long selectCount(ObjectContext context) {
-        return count().selectOne(context);
+        ColumnSelect<Long> count = count();
+        // reset orderings, see CAY-2836
+        count.orderings = Collections.emptyList();
+        return count.selectOne(context);
     }
 
     @Override
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java 
b/cayenne-server/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
index 025428f53..f27b45467 100644
--- 
a/cayenne-server/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
+++ 
b/cayenne-server/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
@@ -236,4 +236,12 @@ public class ObjectSelect_RunIT extends ServerCase {
                        assertNotNull(artist);
                }
        }
+
+       @Test
+       public void test_CAY_2836_countWithOrdering() {
+               long count = ObjectSelect.query(Artist.class)
+                               .orderBy(Artist.ARTIST_NAME.asc())
+                               .selectCount(context);
+               assertEquals(20, count);
+       }
 }

Reply via email to