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)