Source:
<code>public Block readBlock() throws IOException { if (!rowGroupOpen) { openRowGroup(); } if (readOffset > 0) { if (presentStream != null) { readOffset = presentStream.countBitsSet(readOffset); } if (inDictionaryStream != null) { inDictionaryStream.skip(readOffset); } if (readOffset > 0) { if (dataStream == null) { throw new OrcCorruptionException(streamDescriptor.getOrcDataSourceId(), "Value is not null but data stream is not present"); } dataStream.skip(readOffset); } } BlockBuilder builder = type.createBlockBuilder(null, nextBatchSize); if (presentStream == null) { if (dataStream == null) { throw new OrcCorruptionException(streamDescriptor.getOrcDataSourceId(), "Value is not null but data stream is not present"); } if (inDictionaryStream == null) { for (int i = 0; i < nextBatchSize; i++) { type.writeLong(builder, dictionary[((int) dataStream.next())]); } } else { for (int i = 0; i < nextBatchSize; i++) { long id = dataStream.next(); if (inDictionaryStream.nextBit()) { type.writeLong(builder, dictionary[(int) id]); } else { type.writeLong(builder, id); } } } } else { if (dataStream == null) { <START> int notNullValues = presentStream.countBitsSet(nextBatchSize); <END> if (notNullValues != 0) { throw new OrcCorruptionException(streamDescriptor.getOrcDataSourceId(), "Value is not null but data stream is not present"); } for (int i = 0; i < nextBatchSize; i++) { builder.appendNull(); } } else { for (int i = 0; i < nextBatchSize; i++) { if (!presentStream.nextBit()) { builder.appendNull(); } else { long id = dataStream.next(); if (inDictionaryStream == null || inDictionaryStream.nextBit()) { type.writeLong(builder, dictionary[(int) id]); } else { type.writeLong(builder, id); } } } } } readOffset = 0; nextBatchSize = 0; return builder.build(); }</code><technical_language>This change related</technical_language>

Target:
public Block readBlock() throws IOException { if (!rowGroupOpen) { openRowGroup(); } if (readOffset > 0) { if (presentStream != null) { readOffset = presentStream.countBitsSet(readOffset); } if (inDictionaryStream != null) { inDictionaryStream.skip(readOffset); } if (readOffset > 0) { if (dataStream == null) { throw new OrcCorruptionException(streamDescriptor.getOrcDataSourceId(), "Value is not null but data stream is not present"); } dataStream.skip(readOffset); } } BlockBuilder builder = type.createBlockBuilder(null, nextBatchSize); if (presentStream == null) { if (dataStream == null) { throw new OrcCorruptionException(streamDescriptor.getOrcDataSourceId(), "Value is not null but data stream is not present"); } if (inDictionaryStream == null) { for (int i = 0; i < nextBatchSize; i++) { type.writeLong(builder, dictionary[((int) dataStream.next())]); } } else { for (int i = 0; i < nextBatchSize; i++) { long id = dataStream.next(); if (inDictionaryStream.nextBit()) { type.writeLong(builder, dictionary[(int) id]); } else { type.writeLong(builder, id); } } } } else { if (dataStream == null) { int nullValues = presentStream.getUnsetBits(nextBatchSize); if (nullValues != nextBatchSize) { throw new OrcCorruptionException(streamDescriptor.getOrcDataSourceId(), "Value is not null but data stream is not present"); } for (int i = 0; i < nextBatchSize; i++) { builder.appendNull(); } } else { for (int i = 0; i < nextBatchSize; i++) { if (!presentStream.nextBit()) { builder.appendNull(); } else { long id = dataStream.next(); if (inDictionaryStream == null || inDictionaryStream.nextBit()) { type.writeLong(builder, dictionary[(int) id]); } else { type.writeLong(builder, id); } } } } } readOffset = 0; nextBatchSize = 0; return builder.build(); }