[jira] [Updated] (DRILL-5344) External sort priority queue copier fails with an empty batch
[ https://issues.apache.org/jira/browse/DRILL-5344?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Boaz Ben-Zvi updated DRILL-5344: Labels: ready-to-commit (was: ) > 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 > Labels: ready-to-commit > 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)
[jira] [Updated] (DRILL-5344) External sort priority queue copier fails with an empty batch
[ https://issues.apache.org/jira/browse/DRILL-5344?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Zelaine Fong updated DRILL-5344: Reviewer: Boaz Ben-Zvi Assigned Reviewer to [~ben-zvi] > 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)