org.apache.cassandra.db.columniterator

## Class AbstractSSTableIterator

- java.lang.Object
- - org.apache.cassandra.db.columniterator.AbstractSSTableIterator

All Implemented Interfaces:
  java.lang.AutoCloseable, java.util.Iterator<Unfiltered>, BaseRowIterator<Unfiltered>, UnfilteredRowIterator, CloseableIterator<Unfiltered>

Direct Known Subclasses:
  SSTableIterator, SSTableReversedIterator

    public abstract class AbstractSSTableIterator
    extends java.lang.Object
    implements UnfilteredRowIterator

### Nested Class Summary

Nested Classes
`static class` `AbstractSSTableIterator.IndexState`
`protected class` `AbstractSSTableIterator.Reader`

### Field Summary

Fields
`protected ColumnFilter` `columns`
`protected SerializationHelper` `helper`
`protected FileHandle` `ifile`
`protected DecoratedKey` `key`
`protected DeletionTime` `partitionLevelDeletion`
`protected AbstractSSTableIterator.Reader` `reader`
`protected Slices` `slices`
`protected SSTableReader` `sstable`
`protected Row` `staticRow`

### Constructor Summary

Constructors
`protected` `AbstractSSTableIterator(SSTableReader sstable, FileDataInput file, DecoratedKey key, RowIndexEntry indexEntry, Slices slices, ColumnFilter columnFilter, boolean isForThrift, FileHandle ifile)`

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `close()`
`PartitionColumns` `columns()` A subset of the columns for the (static and regular) rows returned by this iterator.
`protected abstract AbstractSSTableIterator.Reader` `createReaderInternal(RowIndexEntry indexEntry, FileDataInput file, boolean shouldCloseFile)`
`protected abstract boolean` `hasMoreSlices()` Checks if there are more slice to process.
`boolean` `hasNext()`
`CFMetaData` `metadata()` The metadata for the table this iterator on.
`Unfiltered` `next()`
`protected abstract int` `nextSliceIndex()` Returns the index of the next slice to process.
`DecoratedKey` `partitionKey()` The partition key of the partition this in an iterator over.
`DeletionTime` `partitionLevelDeletion()` The partition level deletion for the partition this iterate over.
`void` `remove()`
`Row` `staticRow()` The static part corresponding to this partition (this can be an empty row but cannot be `null`).
`EncodingStats` `stats()` Return "statistics" about what is returned by this iterator.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.cassandra.db.rows.UnfilteredRowIterator

`isEmpty`

### Methods inherited from interface org.apache.cassandra.db.rows.BaseRowIterator

`isReverseOrder`

### Methods inherited from interface java.util.Iterator

`forEachRemaining`

### Field Detail

#### sstable

    protected final SSTableReader sstable

#### key

    protected final DecoratedKey key

#### partitionLevelDeletion

    protected final DeletionTime partitionLevelDeletion

#### columns

    protected final ColumnFilter columns

#### helper

    protected final SerializationHelper helper

#### staticRow

    protected final Row staticRow

#### reader

    protected final AbstractSSTableIterator.Reader reader

#### ifile

    protected final FileHandle ifile

#### slices

    protected final Slices slices

### Constructor Detail

#### AbstractSSTableIterator

    protected AbstractSSTableIterator(SSTableReader sstable,
                                      FileDataInput file,
                                      DecoratedKey key,
                                      RowIndexEntry indexEntry,
                                      Slices slices,
                                      ColumnFilter columnFilter,
                                      boolean isForThrift,
                                      FileHandle ifile)

### Method Detail

#### nextSliceIndex

    protected abstract int nextSliceIndex()

Returns the index of the next slice to process.

Returns:
  the index of the next slice to process

#### hasMoreSlices

    protected abstract boolean hasMoreSlices()

Checks if there are more slice to process.

Returns:
  `true` if there are more slice to process, `false` otherwise.

#### createReaderInternal

    protected abstract AbstractSSTableIterator.Reader createReaderInternal(RowIndexEntry indexEntry,
                                                                           FileDataInput file,
                                                                           boolean shouldCloseFile)

#### metadata

    public CFMetaData metadata()

Description copied from interface: `BaseRowIterator`
The metadata for the table this iterator on.

Specified by:
  `metadata` in interface `BaseRowIterator<Unfiltered>`

#### columns

    public PartitionColumns columns()

Description copied from interface: `BaseRowIterator`
A subset of the columns for the (static and regular) rows returned by this iterator. Every row returned by this iterator must guarantee that it has only those columns.

Specified by:
  `columns` in interface `BaseRowIterator<Unfiltered>`

#### partitionKey

    public DecoratedKey partitionKey()

Description copied from interface: `BaseRowIterator`
The partition key of the partition this in an iterator over.

Specified by:
  `partitionKey` in interface `BaseRowIterator<Unfiltered>`

#### partitionLevelDeletion

    public DeletionTime partitionLevelDeletion()

Description copied from interface: `UnfilteredRowIterator`
The partition level deletion for the partition this iterate over.

Specified by:
  `partitionLevelDeletion` in interface `UnfilteredRowIterator`

#### staticRow

    public Row staticRow()

Description copied from interface: `BaseRowIterator`
The static part corresponding to this partition (this can be an empty row but cannot be `null`).

Specified by:
  `staticRow` in interface `BaseRowIterator<Unfiltered>`

#### stats

    public EncodingStats stats()

Description copied from interface: `UnfilteredRowIterator`
Return "statistics" about what is returned by this iterator. Those are used for performance reasons (for delta-encoding for instance) and code should not expect those to be exact.

Specified by:
  `stats` in interface `UnfilteredRowIterator`

#### hasNext

    public boolean hasNext()

Specified by:
  `hasNext` in interface `java.util.Iterator<Unfiltered>`

#### next

    public Unfiltered next()

Specified by:
  `next` in interface `java.util.Iterator<Unfiltered>`

#### remove

    public void remove()

Specified by:
  `remove` in interface `java.util.Iterator<Unfiltered>`

#### close

    public void close()

Specified by:
  `close` in interface `java.lang.AutoCloseable`
Specified by:
  `close` in interface `CloseableIterator<Unfiltered>`