Class BatchEncoder.MVEncoder

java.lang.Object
org.elasticsearch.compute.operator.mvdedupe.BatchEncoder
org.elasticsearch.compute.operator.mvdedupe.BatchEncoder.MVEncoder
All Implemented Interfaces:
Closeable, AutoCloseable, org.apache.lucene.util.Accountable, org.elasticsearch.core.Releasable
Direct Known Subclasses:
BatchEncoder.Booleans, BatchEncoder.BytesRefs, BatchEncoder.Doubles, BatchEncoder.Ints, BatchEncoder.Longs
Enclosing class:
BatchEncoder

protected abstract static class BatchEncoder.MVEncoder extends BatchEncoder
  • Field Details

    • bytes

      protected final org.apache.lucene.util.BytesRefBuilder bytes
      Buffer into which we encode values.
  • Method Details

    • firstPosition

      protected final int firstPosition()
      The first position in the current batch.
    • positionCount

      public final int positionCount()
      The number of positions in the current batch.
      Specified by:
      positionCount in class BatchEncoder
    • valueCount

      public final int valueCount(int positionOffset)
      The number of values at the position with this offset in the batch. The actual position in the block we're encoding is positionOffset + firstPosition().
      Specified by:
      valueCount in class BatchEncoder
    • read

      public final int read(int index, org.apache.lucene.util.BytesRefBuilder dst)
      Read the value at the specified index. Values at the first position start at index 0 and advance one per value. So the values at position n start at (0..n-1).sum(valueCount). There is no random-access way to get the first index for a position.
      Specified by:
      read in class BatchEncoder
      Returns:
      the number of bytes has read
    • encodeNextBatch

      public final void encodeNextBatch()
      Encodes the next batch of entries. This will encode values until the next value doesn't fit into the buffer. Callers should iterate on the values that have been encoded and then call this again for the next batch.

      It's possible for this batch to be empty if there isn't room for the first entry in the buffer. If so, call again to force the buffer to expand and encode that entry.

      Specified by:
      encodeNextBatch in class BatchEncoder
    • ramBytesUsed

      public long ramBytesUsed()
    • readNextBatch

      protected abstract void readNextBatch()
      Encodes the next batch of values. See encodeNextBatch().
    • startPosition

      protected final void startPosition()
      Implementations of readNextBatch() should call this before any values at the current position.
    • addingValue

      protected final void addingValue()
      Implementations of readNextBatch() should call this before adding each value to the current position to mark its start.
    • endPosition

      protected final void endPosition()
      Implementations of readNextBatch() should call this to end the current position.
    • encodeNull

      protected final void encodeNull()
      Implementations of readNextBatch() should call this to encode an entirely null position.