Paul Rogers created DRILL-7303: ---------------------------------- Summary: Filter record batch does not handle zero-length batches Key: DRILL-7303 URL: https://issues.apache.org/jira/browse/DRILL-7303 Project: Apache Drill Issue Type: Bug Affects Versions: 1.16.0 Reporter: Paul Rogers Assignee: Paul Rogers
Testing of the row-set-based JSON reader revealed a limitation of the Filter record batch: if an incoming batch has zero records, the length of the associated SV2 is left at -1. In particular: {code:java} public class SelectionVector2 implements AutoCloseable { // Indicates actual number of rows in the RecordBatch // container which owns this SV2 instance private int batchActualRecordCount = -1; {code} Then: {code:java} public abstract class FilterTemplate2 implements Filterer { @Override public void filterBatch(int recordCount) throws SchemaChangeException{ if (recordCount == 0) { outgoingSelectionVector.setRecordCount(0); return; } {code} Notice there is no call to set the actual record count. The solution is to insert one line of code: {code:java} if (recordCount == 0) { outgoingSelectionVector.setRecordCount(0); outgoingSelectionVector.setBatchActualRecordCount(0); // <-- Add this return; } {code} Without this, the query fails with an error due to an invalid index of -1. -- This message was sent by Atlassian JIRA (v7.6.3#76005)