You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Samarth Jain (JIRA)" <ji...@apache.org> on 2016/04/19 02:40:25 UTC

[jira] [Created] (PHOENIX-2842) Queries with offset shouldn't be using Spooling and chunked result iterators

Samarth Jain created PHOENIX-2842:
-------------------------------------

             Summary: Queries with offset shouldn't be using Spooling and chunked result iterators
                 Key: PHOENIX-2842
                 URL: https://issues.apache.org/jira/browse/PHOENIX-2842
             Project: Phoenix
          Issue Type: Bug
            Reporter: Samarth Jain
            Assignee: Ankit Singhal


While reworking our serial queries for PHOENIX-2724, I noticed that queries with offset are always using SpoolingResultIterator and ChunkedResultIterator when there is no non-row key order by. 

In ScanPlan.java
{code}
private static ParallelIteratorFactory buildResultIteratorFactory(StatementContext context, FilterableStatement statement,
            TableRef table, OrderBy orderBy, Integer limit,Integer offset, boolean allowPageFilter) throws SQLException {

        if ((isSerial(context, statement, table, orderBy, limit, offset, allowPageFilter)
                || ScanUtil.isRoundRobinPossible(orderBy, context) || ScanUtil.isPacingScannersPossible(context))
                && *offset == null*) { return ParallelIteratorFactory.NOOP_FACTORY; }

{code}

Spooling and chunking is deprecated. So the code shouldn't be relying on them to be used always. Removing the offset != null check, unfortunately causes tests to fail in QueryWithOffsetIT.java. This is because if we don't create chunked result iterators, server side scanners are not getting advanced up to the offset. 

[~ankit.singhal] - can you please check?  



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)