Paul Rogers created DRILL-5344:
----------------------------------

             Summary: External sort priority queue copier fails with an empty 
batch
                 Key: DRILL-5344
                 URL: https://issues.apache.org/jira/browse/DRILL-5344
             Project: Apache Drill
          Issue Type: Bug
    Affects Versions: 1.10.0
            Reporter: Paul Rogers
            Assignee: Paul Rogers
            Priority: Minor
             Fix For: 1.11.0


The external sort uses a "priority queue copier" to merge batches when spilling 
or when merging spilled batches.

The code will fail with an {{IndexOutOfBoundsException}} if any record batch is 
empty. The reason is a faulty assumption in generated code:

{code}
  public void setup(...) {
    ...
      vector4.set(i, i, batchGroups.get(i).getNextIndex());
    ...
  }

  public int getNextIndex() {
    if (pointer == getRecordCount()) {
      return -1;
    }
    ...
  }
{code}

The code to get the next index returns -1 when the "position" in a record batch 
is zero. The -1 position translates (when truncated) into 65535 which produces 
the index exception.

The workaround has been to special case empty batches elsewhere in the code, 
apparently to avoid hitting this error.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to