[
https://issues.apache.org/jira/browse/CASSANDRA-287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12729467#action_12729467
]
Jonathan Ellis commented on CASSANDRA-287:
------------------------------------------
thanks for having a look, Jun.
1. oops. one too many rebases before submitting. fixed.
2. fixed; if I'm feeling extra energetic I'll make it an enum
3. hmm, I'll need to take a closer look at this one -- making that change
breaks SystemTableTest
4. yes, so I'm cheating a bit here to make the merge easier -- this is
partially done in https://issues.apache.org/jira/browse/CASSANDRA-272 and will
be completed in another patch
5. IMO it's bad form to @override an abstract method; are there others that I
omitted?
> 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.