saurabhd336 commented on code in PR #11729:
URL: https://github.com/apache/pinot/pull/11729#discussion_r1349856661
##########
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/segment/index/readers/forward/VarByteChunkSVForwardIndexReader.java:
##########
@@ -195,4 +212,61 @@ private long getValueEndOffset(int chunkId, int
chunkRowId, long chunkStartOffse
}
}
}
+
+ private long getValueEndOffsetAndRecordRanges(int chunkId, int chunkRowId,
long chunkStartOffset,
+ List<ValueRange> ranges) {
+ if (chunkId == _numChunks - 1) {
+ // Last chunk
+ if (chunkRowId == _numDocsPerChunk - 1) {
+ // Last row in the last chunk
+ return _dataBuffer.size();
+ } else {
+ ranges.add(ValueRange.newByteRange(chunkStartOffset + (chunkRowId + 1)
* ROW_OFFSET_SIZE, Integer.BYTES));
+ int valueEndOffsetInChunk = _dataBuffer.getInt(chunkStartOffset +
(chunkRowId + 1) * ROW_OFFSET_SIZE);
+ if (valueEndOffsetInChunk == 0) {
+ // Last row in the last chunk (chunk is incomplete, which stores 0
as the offset for the absent rows)
+ return _dataBuffer.size();
+ } else {
+ return chunkStartOffset + valueEndOffsetInChunk;
+ }
+ }
+ } else {
+ if (chunkRowId == _numDocsPerChunk - 1) {
+ // Last row in the chunk
+ return getChunkPositionAndRecordRanges(chunkId + 1, ranges);
+ } else {
+ ranges.add(ValueRange.newByteRange(chunkStartOffset + (chunkRowId + 1)
* ROW_OFFSET_SIZE, Integer.BYTES));
+ return chunkStartOffset + _dataBuffer.getInt(chunkStartOffset +
(chunkRowId + 1) * ROW_OFFSET_SIZE);
+ }
+ }
+ }
+
+ @Override
+ public List<ValueRange> getDocIdRange(int docId, ChunkReaderContext context,
@Nullable List<ValueRange> ranges) {
+ if (ranges == null) {
+ ranges = new ArrayList<>();
+ }
+ if (_isCompressed) {
+ recordDocIdRanges(docId, context, ranges);
+ } else {
+ recordDocIdRanges(docId, ranges);
+ }
+
+ return ranges;
+ }
+
+ @Override
+ public boolean isFixedLengthType() {
+ return false;
+ }
+
+ @Override
+ public long getBaseOffset() {
+ throw new IllegalStateException("Operation not supported since the forward
index is not of fixed length type");
Review Comment:
Ack
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]