cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jun Rao (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CASSANDRA-287) Make iterator-based read code the One True Path
Date Thu, 09 Jul 2009 23:06:15 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12729442#action_12729442
] 

Jun Rao commented on CASSANDRA-287:
-----------------------------------

Review comments:
1. 0006 patch breaks compilation in unit test (merge conflicts included in the patch)
2. We should remove unused CMD_TYPE_GET_ROW,GET_SLICE AND SLICE_BY_RANGE in ReadCommand and
renumber the rest.
3. SystemTable.StorageMetadata, 2nd line, change IdentityQueryFilter  to NamesQueryFilter.
4. What happens to those updateReadStatistics calls in various getRow in Table? Are they just
got removed?
5. Need to add @override to all overridden methods in various filters class.


> 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.


Mime
View raw message