Mikhail Petrov created IGNITE-17509:
---------------------------------------

             Summary: [Extensions] Spring Data pageable request result contains 
incorrect total value.
                 Key: IGNITE-17509
                 URL: https://issues.apache.org/jira/browse/IGNITE-17509
             Project: Ignite
          Issue Type: Bug
            Reporter: Mikhail Petrov
         Attachments: Reproduces_incorrect_pageable_request_total_value_.patch

Assume that Spring Data repository contains the following method 

{code:java}
    public Page<Person> findByFirstNameContaining(String val, Pageable 
pageable);
{code}

In this case the following checks will fail

{code:java}
        Page<Person> res = repo.findByFirstNameContaining("person", 
PageRequest.of(2, 100));

        assertEquals(CACHE_SIZE, res.getTotalElements());
{code}

where 'repo' is the instance of the previously mention repository.

The full reproduccer is attached.

The main reason of the such behaviour is that  IgniteRepositoryQuery.java:614
does not make a separate request of the total rows count and just sets Page 
'total' value to 0. 
See also org.springframework.data.domain.PageImpl#PageImpl(java.util.List<T>, 
org.springframework.data.domain.Pageable, long) logic to understand the how the 
final result of 'getTotalElements()' is calculated.

It seems that as a workaround, you can explicitly request the total number of 
rows with a separate query.

 





--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to