I'm working on writing Birch for trunk and I noticed the following: https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java#L503
Prior to 3.0 the offset was the literal offset into the data file, yet now we seem to be doing the position encoded with the key (for all rows regardless of if they're > 64kb and thus have an index component) plus the serialized offset. I also see there is now a a "header" offset. In RowIndexEntry there is: /** * @return the offset to the start of the header information for this row. * For some formats this may not be the start of the row. */ public long headerOffset() { return 0; } /** * The length of the row header (partition key, partition deletion and static row). * This value is only provided for indexed entries and this method will throw * {@code UnsupportedOperationException} if {@code !isIndexed()}. */ public long headerLength() { throw new UnsupportedOperationException(); } In 2.1 we stored the partition key, deletion, but not static row -- but we didn't need or use this so I'm guessing this is actually just to support static rows? Is there any further documentation around the header in other classes that I just haven't come across yet? Any thoughts on position + offset and why this behavior changed? Thanks best, kjellman