Source:
<code>void readBatch( int total, ColumnVector column, TypeInfo columnType) throws IOException { int rowId = 0; while (total > 0) { consume(); int leftInPage = (int) (endOfPageValueCount - valuesRead); int num = Math.min(total, leftInPage); if (isCurrentPageDictionaryEncoded) { LongColumnVector dictionaryIds = new LongColumnVector(); readIntegers(num, dictionaryIds, rowId, maxDefLevel, (VectorizedValuesReader) dataColumn); decodeDictionaryIds(rowId, num, column, dictionaryIds); } else { PrimitiveTypeInfo primitiveColumnType = (PrimitiveTypeInfo) columnType; switch (primitiveColumnType.getPrimitiveCategory()) { case INT: case BYTE: case SHORT: <START> readIntegers(num, (LongColumnVector) column, rowId, maxDefLevel, <END> (VectorizedValuesReader) dataColumn); break; case DATE: case INTERVAL_YEAR_MONTH: case LONG: readLongs(num, (LongColumnVector) column, rowId, maxDefLevel, (VectorizedValuesReader) dataColumn); break; case BOOLEAN: readBooleans(num, (LongColumnVector) column, rowId, maxDefLevel, (VectorizedValuesReader) dataColumn); break; case DOUBLE: readDoubles(num, (DoubleColumnVector) column, rowId, maxDefLevel, (VectorizedValuesReader) dataColumn); break; case BINARY: case STRING: case CHAR: case VARCHAR: readBinarys(num, (BytesColumnVector) column, rowId, maxDefLevel, (VectorizedValuesReader) dataColumn); break; case FLOAT: readFloats(num, (DoubleColumnVector) column, rowId, maxDefLevel, (VectorizedValuesReader) dataColumn); break; case DECIMAL: readDecimal(num, (DecimalColumnVector) column, rowId, maxDefLevel, (VectorizedValuesReader) dataColumn); case INTERVAL_DAY_TIME: case TIMESTAMP: break; default: throw new IOException("Unsupported"); } } rowId += num; total -= num; } }</code><technical_language>readXX methods do need dataColumn maxDefLevel a parameter - fields</technical_language>

Target:
void readBatch( int total, ColumnVector column, TypeInfo columnType) throws IOException { int rowId = 0; while (total > 0) { int leftInPage = (int) (endOfPageValueCount - valuesRead); if (leftInPage == 0) { readPage(); leftInPage = (int) (endOfPageValueCount - valuesRead); } int num = Math.min(total, leftInPage); if (isCurrentPageDictionaryEncoded) { LongColumnVector dictionaryIds = new LongColumnVector(); readDictionaryIDs(num, dictionaryIds, rowId); decodeDictionaryIds(rowId, num, column, dictionaryIds); } else { PrimitiveTypeInfo primitiveColumnType = (PrimitiveTypeInfo) columnType; switch (primitiveColumnType.getPrimitiveCategory()) { case INT: case BYTE: case SHORT: readIntegers(num, (LongColumnVector) column, rowId); break; case DATE: case INTERVAL_YEAR_MONTH: case LONG: readLongs(num, (LongColumnVector) column, rowId); break; case BOOLEAN: readBooleans(num, (LongColumnVector) column, rowId); break; case DOUBLE: readDoubles(num, (DoubleColumnVector) column, rowId); break; case BINARY: case STRING: case CHAR: case VARCHAR: readBinaries(num, (BytesColumnVector) column, rowId); break; case FLOAT: readFloats(num, (DoubleColumnVector) column, rowId); break; case DECIMAL: readDecimal(num, (DecimalColumnVector) column, rowId); break; case INTERVAL_DAY_TIME: case TIMESTAMP: default: throw new IOException( "Unsupported type category: " + primitiveColumnType.getPrimitiveCategory()); } } rowId += num; total -= num; } }