## org.apache.cassandra.db.compaction
Class LazilyCompactedRow

    java.lang.Object
      org.apache.cassandra.db.compaction.AbstractCompactedRow
          org.apache.cassandra.db.compaction.LazilyCompactedRow

All Implemented Interfaces:
  java.io.Closeable, java.lang.Iterable<IColumn>, IIterableColumns

    public class LazilyCompactedRow

extends AbstractCompactedRow
implements IIterableColumns

LazilyCompactedRow only computes the row bloom filter and column index in memory (at construction time); it does this by reading one column at a time from each of the rows being compacted, and merging them as it does so. So the most we have in memory at a time is the bloom filter, the index, and one column from each pre-compaction row. When write() or update() is called, a second pass is made over the pre-compaction rows to write the merged columns or update the hash, again with at most one column from each row deserialized at a time.

Field Summary

Fields inherited from class org.apache.cassandra.db.compaction.AbstractCompactedRow
`key`

Constructor Summary
`LazilyCompactedRow(CompactionController controller, java.util.List<? extends ICountableColumnIterator> rows)`

Method Summary
`void` `close()`
`int` `columnCount()`
`AbstractType<?>` `getComparator()`
`int` `getEstimatedColumnCount()`
`boolean` `isEmpty()`
`java.util.Iterator<IColumn>` `iterator()`
`long` `maxTimestamp()`
`void` `update(java.security.MessageDigest digest)` update @param digest with the data bytes of the row (not including row key or row size).
`long` `write(java.io.DataOutput out)` write the row (size + column index + filter + column data, but NOT row key) to @param out.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### LazilyCompactedRow

    public LazilyCompactedRow(CompactionController controller,
                              java.util.List<? extends ICountableColumnIterator> rows)

Method Detail

### write

    public long write(java.io.DataOutput out)
               throws java.io.IOException

  Description copied from class: `AbstractCompactedRow`
  write the row (size + column index + filter + column data, but NOT row key) to @param out. It is an error to call this if isEmpty is false. (Because the key is appended first, so we'd have an incomplete row written.) write() may change internal state; it is NOT valid to call write() or update() a second time.

  Specified by:
    `write` in class `AbstractCompactedRow`
  Throws:
    `java.io.IOException`

### update

    public void update(java.security.MessageDigest digest)

  Description copied from class: `AbstractCompactedRow`
  update @param digest with the data bytes of the row (not including row key or row size). May be called even if empty. update() may change internal state; it is NOT valid to call write() or update() a second time.

  Specified by:
    `update` in class `AbstractCompactedRow`

### isEmpty

    public boolean isEmpty()

  Specified by:
    `isEmpty` in class `AbstractCompactedRow`
  Returns:
    true if there are no columns in the row AND there are no row-level tombstones to be preserved

### getEstimatedColumnCount

    public int getEstimatedColumnCount()

  Specified by:
    `getEstimatedColumnCount` in interface `IIterableColumns`

### getComparator

    public AbstractType<?> getComparator()

  Specified by:
    `getComparator` in interface `IIterableColumns`

### iterator

    public java.util.Iterator<IColumn> iterator()

  Specified by:
    `iterator` in interface `java.lang.Iterable<IColumn>`

### columnCount

    public int columnCount()

  Specified by:
    `columnCount` in class `AbstractCompactedRow`
  Returns:
    the number of columns in the row

### maxTimestamp

    public long maxTimestamp()

  Specified by:
    `maxTimestamp` in class `AbstractCompactedRow`
  Returns:
    the max column timestamp in the row or Long.MIN_VALUE if computing this value would require extra effort we're not willing to make.

### close

    public void close()

  Specified by:
    `close` in interface `java.io.Closeable`

Copyright © 2013 The Apache Software Foundation