What version are you looking at ? I *think* it should be testing against the start of the next slice. It should not have to test any more as per the comments at the top of IndexedSliceReader, the slices are ordered. (I'm not sure if slices can overlap though)
The best way I can think to exercise that code is create a CQL 3 table with a list column, add some elements to it and then delete the column. That should trigger a multi range read, see the code in DeleteStatement. Good catch, can you raise a ticket if you find a problem ? Thanks ----------------- Aaron Morton Freelance Cassandra Developer New Zealand @aaronmorton http://www.thelastpickle.com On 2/02/2013, at 1:01 AM, Ravikumar Govindarajan <ravikumar.govindara...@gmail.com> wrote: > The issue is described at the bottom. Pinging user-list since am not sure how > to confirm this bug > > SimpleBlockFetcher.java, constructor > > for (int i = 0; i < columns; i++) > { > OnDiskAtom column = > atomSerializer.deserializeFromSSTable(file, sstable.descriptor.version); > > // col is before slice > // (If in slice, don't bother checking that until we change > slice) > if (!inSlice && isColumnBeforeSliceStart(column)) > continue; > > // col is within slice > if (isColumnBeforeSliceFinish(column)) > { > inSlice = true; > addColumn(column); > } > else > { > inSlice = false; > if (!setNextSlice()) > { > break; > } > /** > We have moved to the next slice here. But the > current "column" is not checked against the next slice. > Ex: my ColumnSlices are [a-c], [d-f] and I search > for [e] and the current "column" = [e]. > > In-fact it need not be just next slice. It could be > any arbitrary slice that might match the current "column" > **/ > } > > -- > Ravi