[ https://issues.apache.org/jira/browse/CASSANDRA-7107?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13988852#comment-13988852 ]
Aleksey Yeschenko commented on CASSANDRA-7107: ---------------------------------------------- Overall LGTM, some very welcome cleanup. Nice catch with the empty check in CollationController#collectTimeOrderedData(), too. Squashed commit #1 and #3 together and added to extra commits with suggested changes, pushed to https://github.com/iamaleksey/cassandra/commits/7107 The second original commit is not included b/c I'm very uncomfortable with leaving a ColumnFamily#append() method around - it's going to be abused by some innocent sole, and there will be hard to debug suffering as a result. Inlined it into a new CF#maybeAppendColumn() method instead, that's less likely to be called by mistake (see the last commit). The second commit has a bugfix, some improvements, nits fixed, some extra cleanup and prettiness: - discovered only one bug - ABSC.CellCollection#size() was not calling maybeSortCells() - fixed in the commit #2 - refactored ABSC#slice() and ABTC#slice() for obviousness - made the second binary search in ABSC#slice() use the updated lowerBound, reducing the range to search - in CollationController#collectAllData(), in the memtable loop, using Iterables#transform() instead of copying the cells into a temporary ArrayList, to potentially reduce the amount of localCopy()-ing (esp. for low query LIMITs) - rolled back MergeIterator#getSimple() - here, I don't think that 1-1 duplication of MergeIterator#get() is worth removing a little bit of indirection, sorry. Hope you don't have a strong opinion here, because I, weirdly, do. > General minor tidying of CollationController path > ------------------------------------------------- > > Key: CASSANDRA-7107 > URL: https://issues.apache.org/jira/browse/CASSANDRA-7107 > Project: Cassandra > Issue Type: Improvement > Components: Core > Reporter: Benedict > Assignee: Benedict > Priority: Minor > Fix For: 2.1 rc1 > > > There is a lot of unnecessary boiler plate when grabbing an iterator from an > in-memory column family. This patch: > * Removes FakeCellName > * Avoids wrapping a non-OnDiskAtomIterator as an OnDiskAtomIterator except > when the wrapping is useful > * Removes ColumnSlice.NavigableSetIterator and creates a simpler more direct > equivalent in ABTC > * Does not construct a SliceIterator in either ABSC or ABTC if only one slice > is requested (just returns that slice as an Iterator) > * Does not construct multiple list indirections in ABSC when constructing a > slice > * Shares forward/reverse iterators in ABSC between slices and full-iteration > * Avoids O(N) comparisons during collation of results into an ABSC, by using > the knowledge that all columns are provided in insertion order from a merge > iterator -- This message was sent by Atlassian JIRA (v6.2#6252)