Description
It seems that transformers are not executed during pagination which leads to ClassCastExceptions because the result list also contains instances of GridCacheQueryResponseEntry.
To reproduce open GridCacheQueryTransformerSelfTest.testGetKeys() and set a page size of 1 so that
List<Integer> keys = cache.query(new ScanQuery<Integer, String>(), transformer).getAll();
becomes to
List<Integer> keys = cache.query(new ScanQuery<Integer, String>().setPageSize(1), transformer).getAll();
this leads to following stack trace:
java.lang.ClassCastException: org.apache.ignite.internal.processors.cache.query.GridCacheQueryResponseEntry cannot be cast to java.lang.Comparable at java.util.ComparableTimSort.binarySort(ComparableTimSort.java:249) at java.util.ComparableTimSort.sort(ComparableTimSort.java:207) at java.util.Arrays.sort(Arrays.java:1312) at java.util.Arrays.sort(Arrays.java:1506) at java.util.ArrayList.sort(ArrayList.java:1454) at java.util.Collections.sort(Collections.java:141) at org.apache.ignite.internal.processors.cache.query.GridCacheQueryTransformerSelfTest.testGetKeys(GridCacheQueryTransformerSelfTest.java:102) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at junit.framework.TestCase.runTest(TestCase.java:176) at org.apache.ignite.testframework.junits.GridAbstractTest.runTestInternal(GridAbstractTest.java:2001) at org.apache.ignite.testframework.junits.GridAbstractTest.access$000(GridAbstractTest.java:133) at org.apache.ignite.testframework.junits.GridAbstractTest$5.run(GridAbstractTest.java:1916) at java.lang.Thread.run(Thread.java:745)
Attachments
Issue Links
- duplicates
-
IGNITE-5804 ScanQuery transformer applies to first results page only.
- Resolved