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

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


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

commit 7802667fc288a1d2e89d90e6893b97b2d24e6d58
Author: Nikita Timofeev <[email protected]>
AuthorDate: Tue Oct 28 17:25:17 2025 +0400

    CAY-2836 ObjectSelect.selectCount() throws if a query contains ordering
---
 RELEASE-NOTES.txt                                                 | 1 +
 cayenne/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 0bcd2458a..c0c3a9579 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -22,6 +22,7 @@ CAY-2897 Add no-op default implementations to the 
GraphChangeHandler interface
 Bug Fixes:
 
 CAY-2701 MySQL DST-related LocalDateTime issues
+CAY-2836 ObjectSelect.selectCount() throws if a query contains ordering
 CAY-2871 QualifierTranslator breaks on a relationship with a compound FK
 CAY-2872 CayenneModeler "Documentation" link is broken
 CAY-2876 Memory leak in the ObjectStore
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/ObjectSelect.java 
b/cayenne/src/main/java/org/apache/cayenne/query/ObjectSelect.java
index 5fa6d2c6a..01fb96e30 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/ObjectSelect.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/ObjectSelect.java
@@ -328,7 +328,10 @@ public class ObjectSelect<T> extends FluentSelect<T, 
ObjectSelect<T>> implements
      * @return count of rows
      */
     public long selectCount(ObjectContext context) {
-        return count().selectOne(context);
+        ColumnSelect<Long> count = count();
+        // reset orderings, see CAY-2836
+        count.orderings = List.of();
+        return count.selectOne(context);
     }
 
     @Override
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java 
b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
index 6ef648e43..183842bad 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
@@ -246,4 +246,12 @@ public class ObjectSelect_RunIT extends RuntimeCase {
                        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