public SSTableSliceIterator( SSTableReader ssTable, String key, byte[] startColumn, byte[] finishColumn, boolean reversed) throws IOException { this.reversed = reversed; /* Morph key into actual key based on the partition type. */ DecoratedKey decoratedKey = ssTable.getPartitioner().decorateKey(key); FileDataInput fdi = ssTable.getFileDataInput( decoratedKey, DatabaseDescriptor.getSlicedReadBufferSizeInKB() * 1024); this.comparator = ssTable.getColumnComparator(); this.startColumn = startColumn; this.finishColumn = finishColumn; if (fdi != null) { // BIGDATA: move up here DecoratedKey keyInDisk = ssTable.getPartitioner().convertFromDiskFormat(fdi.readUTF()); assert keyInDisk.equals(decoratedKey) : String.format("%s != %s in %s", keyInDisk, decoratedKey, fdi.getPath()); dataSize = fdi.readInt(); // row data size dataStart = fdi.getAbsolutePosition(); rowFormat = ColumnFamily.serializer().deserializeRowFormat(fdi); realDataStart = fdi.getAbsolutePosition(); // !BIGDATA: branch out to the different code process for new rowformat/compression. if (ColumnFamily.serializer().isNewRowFormat(rowFormat)) { // new row format reader = new BigdataColumnGroupReader(ssTable, decoratedKey, fdi); } else { // old row format reader = new ColumnGroupReader(ssTable, decoratedKey, fdi); } } }