Class ValueIterator<CONCRETE extends ValueIterator<CONCRETE>>

java.lang.Object
org.apache.cassandra.io.tries.Walker<CONCRETE>
org.apache.cassandra.io.tries.ValueIterator<CONCRETE>
All Implemented Interfaces:
AutoCloseable
Direct Known Subclasses:
PartitionIndex.IndexPosIterator

@NotThreadSafe public class ValueIterator<CONCRETE extends ValueIterator<CONCRETE>> extends Walker<CONCRETE>
Thread-unsafe value iterator for on-disk tries. Uses the assumptions of Walker.

The main utility of this class is the nextPayloadedNode() method, which lists all nodes that contain a payload within the requested bounds. The treatment of the bounds is non-standard (see ValueIterator(Rebufferer, long, ByteComparable, ByteComparable, boolean)), necessary to properly walk tries of prefixes and separators.

  • Field Details

  • Constructor Details

    • ValueIterator

      protected ValueIterator(Rebufferer source, long root)
    • ValueIterator

      protected ValueIterator(Rebufferer source, long root, boolean collecting)
    • ValueIterator

      protected ValueIterator(Rebufferer source, long root, ByteComparable start, ByteComparable end, boolean admitPrefix)
    • ValueIterator

      protected ValueIterator(Rebufferer source, long root, ByteComparable start, ByteComparable end, boolean admitPrefix, boolean collecting)
      Constrained iterator. The end position is always treated as inclusive, and we have two possible treatments for the start:
      • When admitPrefix=false, exact matches and any prefixes of the start are excluded.
      • When admitPrefix=true, the longest prefix of the start present in the trie is also included, provided that there is no entry in the trie between that prefix and the start. An exact match also satisfies this and is included.
      This behaviour is shared with the reverse counterpart ReverseValueIterator.
  • Method Details

    • peekNode

      protected long peekNode()
      Returns the payload node position without advancing.
    • nextPayloadedNode

      protected long nextPayloadedNode()
      Returns the position of the next node with payload contained in the iterated span.
    • nextCollectedValue

      protected ByteComparable nextCollectedValue()
    • advanceNode

      protected long advanceNode()