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);
+ }
}