[
https://issues.apache.org/jira/browse/CASSANDRA-287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12729289#action_12729289
]
Jonathan Ellis commented on CASSANDRA-287:
------------------------------------------
(01 and 02 are automated refactorings.)
06
add IdentityQueryFilter; finish removing IFilter
05
add TimeQueryFilter and nuke Timefilter
04
replace namesfilter with NamesQueryFilter. mv filter code into separate
package.
03
refactor out QueryFilter, SliceQueryFilter
02
rename lock_ -> sstableLock_
01
CASSANDRA-287 r/m unused (and dangerous) RowReadCommand
> Make iterator-based read code the One True Path
> -----------------------------------------------
>
> Key: CASSANDRA-287
> URL: https://issues.apache.org/jira/browse/CASSANDRA-287
> Project: Cassandra
> Issue Type: Bug
> Reporter: Jonathan Ellis
> Assignee: Jonathan Ellis
> Attachments:
> 0001-CASSANDRA-287-r-m-unused-and-dangerous-RowReadComman.txt,
> 0002-rename-lock_-sstableLock_.txt,
> 0003-refactor-out-QueryFilter-SliceQueryFilter.txt,
> 0004-replace-namesfilter-with-NamesQueryFilter.-mv-filter.txt,
> 0005-nuke-timefilter.txt,
> 0006-add-IdentityQueryFilter-finish-removing-IFilter.txt
>
>
> Since CASSANDRA-172 we've had two read paths; the old, ad-hoc path based on
> the faulty assumption that we could skip checking older sstables if we got a
> hit earlier in the path (fixed in CASSANDRA-223 but still bearing the marks
> of its origin) and the new iterator-based path.
> This makes all read operations go through the iterator path, which cleans
> things up enormously and sets the stage for CASSANDRA-139.
> I introduce a new QueryFilter interface, which has 3 main methods:
> /**
> * returns an iterator that returns columns from the given memtable
> * matching the Filter criteria in sorted order.
> */
> public abstract ColumnIterator getMemColumnIterator(Memtable memtable);
> /**
> * returns an iterator that returns columns from the given SSTable
> * matching the Filter criteria in sorted order.
> */
> public abstract ColumnIterator getSSTableColumnIterator(SSTableReader
> sstable) throws IOException;
> /**
> * subcolumns of a supercolumn are unindexed, so to pick out parts of
> those we operate in-memory.
> * @param superColumn
> */
> public abstract void filterSuperColumn(SuperColumn superColumn);
> The first two are for pulling out indexed top-level columns, from a memtable
> or an sstable, respectively.
> If the query is on subcolumns of a supercolumn, which are unindexed,
> CFS.getColumnFamily does an indexed Name filter on the supercolumn, then asks
> filterSuperColumn on the primary QueryFilter to pick out the parts the user
> is requesting.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.