You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/08/22 08:50:18 UTC

cayenne git commit: CAY-2353 Broken paginated column select with only one entity in the result

Repository: cayenne
Updated Branches:
  refs/heads/master d189e5f2c -> 863c23e66


CAY-2353 Broken paginated column select with only one entity in the result


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/863c23e6
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/863c23e6
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/863c23e6

Branch: refs/heads/master
Commit: 863c23e66b84a616188adb8c7d18d5e3e2436636
Parents: d189e5f
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Aug 22 11:50:11 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Aug 22 11:50:11 2017 +0300

----------------------------------------------------------------------
 .../cayenne/access/DataContextQueryAction.java  |  7 +++--
 .../apache/cayenne/query/ColumnSelectIT.java    | 31 ++++++++++++++++++++
 docs/doc/src/main/resources/RELEASE-NOTES.txt   |  1 +
 3 files changed, 36 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/863c23e6/cayenne-server/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java
index 0ef2c0c..87a7b80 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java
@@ -112,7 +112,8 @@ class DataContextQueryAction extends ObjectContextQueryAction {
                 if(rsMapping.size() > 1) {
                     mixedResults = true;
                 } else if(rsMapping.size() == 1) {
-                    mixedResults = !(rsMapping.get(0) instanceof EntityResultSegment);
+                    mixedResults = !(rsMapping.get(0) instanceof EntityResultSegment)
+                            || !metadata.isSingleResultSetMapping();
                 }
             }
 
@@ -121,9 +122,9 @@ class DataContextQueryAction extends ObjectContextQueryAction {
             } else {
                 DbEntity dbEntity = metadata.getDbEntity();
                 if (dbEntity != null && dbEntity.getPrimaryKeys().size() == 1) {
-                    paginatedList = new SimpleIdIncrementalFaultList<Object>(actingDataContext, query, maxIdQualifierSize);
+                    paginatedList = new SimpleIdIncrementalFaultList<>(actingDataContext, query, maxIdQualifierSize);
                 } else {
-                    paginatedList = new IncrementalFaultList<Object>(actingDataContext, query, maxIdQualifierSize);
+                    paginatedList = new IncrementalFaultList<>(actingDataContext, query, maxIdQualifierSize);
                 }
             }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/863c23e6/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
index 3d8668f..d4798c9 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
@@ -556,6 +556,22 @@ public class ColumnSelectIT extends ServerCase {
     }
 
     @Test
+    public void testPageSizeOneScalarAsArray() {
+        List<Object[]> a = ObjectSelect.query(Artist.class)
+                .columns(Artist.ARTIST_NAME.trim())
+                .pageSize(10)
+                .select(context);
+        assertNotNull(a);
+        assertEquals(20, a.size());
+        int idx = 0;
+        for(Object[] next : a) {
+            assertNotNull(""+idx, next[0]);
+            assertTrue(next[0] instanceof String);
+            idx++;
+        }
+    }
+
+    @Test
     public void testPageSizeScalars() {
         List<Object[]> a = ObjectSelect.query(Artist.class)
                 .columns(Artist.ARTIST_NAME.trim(), Artist.DATE_OF_BIRTH, Artist.PAINTING_ARRAY.count())
@@ -588,6 +604,21 @@ public class ColumnSelectIT extends ServerCase {
     }
 
     @Test
+    public void testPageSizeOneObjectAsArray() {
+        Property<Artist> artistFull = Property.createSelf(Artist.class);
+        List<Object[]> a = ObjectSelect.query(Artist.class)
+                .columns(artistFull)
+                .pageSize(10)
+                .select(context);
+        assertNotNull(a);
+        assertEquals(20, a.size());
+        for(Object[] next : a){
+            assertNotNull(next[0]);
+            assertTrue(next[0] instanceof Artist);
+        }
+    }
+
+    @Test
     public void testPageSizeObjectAndScalars() {
         Property<Artist> artistFull = Property.createSelf(Artist.class);
         List<Object[]> a = ObjectSelect.query(Artist.class)

http://git-wip-us.apache.org/repos/asf/cayenne/blob/863c23e6/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 566e28d..0bf60cf 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -34,6 +34,7 @@ CAY-2331 cgen: broken templates for data map
 CAY-2347 cdbimport: can't get all relationships on the first pass
 CAY-2349 Cache issue: 'SelectQuery' with prefetches loses relationships
 CAY-2350 Expression: NotIn with empty collection returns empty result
+CAY-2353 Broken paginated column select with only one entity in the result
 
 ----------------------------------
 Release: 4.0.B1