private Integer seekToSubColumn( CFMetaData metadata, FileDataInput file, ByteBuffer sblockId, List<IndexHelper.IndexInfo> indexList) throws IOException { file.readInt(); // column count /* get the various column ranges we have to read */ AbstractType comparator = metadata.comparator; int index = IndexHelper.indexFor(sblockId, indexList, comparator, false); if (index == indexList.size()) return null; IndexHelper.IndexInfo indexInfo = indexList.get(index); if (comparator.compare(sblockId, indexInfo.firstName) < 0) return null; FileMark mark = file.mark(); FileUtils.skipBytesFully(file, indexInfo.offset); while (file.bytesPastMark(mark) < indexInfo.offset + indexInfo.width) { Integer dataLength = isSubBlockFound(metadata, file, sblockId); if (dataLength == null) return null; if (dataLength < 0) continue; return dataLength; } return null; }
IndexedBlockFetcher(RowIndexEntry indexEntry) { basePosition = indexEntry.position; curRangeIndex = IndexHelper.indexFor(startColumn, indexes, comparator, reversed); }
IndexedBlockFetcher() throws IOException { file.readInt(); // column count basePosition = file.getFilePointer(); curRangeIndex = IndexHelper.indexFor(startColumn, indexes, comparator, reversed); }