private Pair<RecordBatchData, Integer> find(int index) { if (index >= getReturnedRowCount()) { throw new IllegalArgumentException(String.format("Invalid index %s", index)); } // Add the offset in the first batch int indexWorkspace = index; for(RecordBatchHolder batchHolder : delegate.getRecordBatches()) { if (indexWorkspace < batchHolder.size()) { return new Pair<>(batchHolder.getData(), batchHolder.getStart() + indexWorkspace); } indexWorkspace -= batchHolder.size(); } throw new IllegalArgumentException(String.format("Invalid index %s", index)); }
@Override public void serialize(JobData jobData, JsonGenerator generator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { generator.writeStartObject(); generator.writeFieldName("rowCount"); generator.writeNumber(jobData.getRowCount()); generator.writeFieldName("schema"); generator.writeStartArray(); for (Field field : jobData.getJobDataFragment().getSchema().getFields()) { writeField(field, generator, false); } generator.writeEndArray(); generator.writeFieldName("rows"); generator.writeStartArray(); final APIJobResultsSerializer jsonWriter = new APIJobResultsSerializer(generator); jsonWriter.setup(); for(RecordBatchHolder batchHolder : jobData.delegate.getRecordBatches()) { final EventBasedRecordWriter recordWriter = new EventBasedRecordWriter(batchHolder.getData().getContainer(), jsonWriter); for (int i = batchHolder.getStart(); i < batchHolder.getEnd(); i++) { recordWriter.writeOneRecord(i); } } generator.writeEndArray(); generator.writeEndObject(); } }
for(RecordBatchHolder batchHolder : data.delegate.getRecordBatches()) { final EventBasedRecordWriter recordWriter = new EventBasedRecordWriter(batchHolder.getData().getContainer(), jsonWriter);