Interface InternalScanner

All Superinterfaces:
AutoCloseable, Closeable
All Known Subinterfaces:
RegionScanner
All Known Implementing Classes:
DelegatingInternalScanner, KeyValueHeap, MobStoreScanner, RegionScannerImpl, ReversedKeyValueHeap, ReversedMobStoreScanner, ReversedRegionScannerImpl, ReversedStoreScanner, StoreScanner

@LimitedPrivate("Coprocesssor") @Evolving public interface InternalScanner extends Closeable
Internal scanners differ from client-side scanners in that they operate on HStoreKeys and byte[] instead of RowResults. This is because they are actually close to how the data is physically stored, and therefore it is more convenient to interact with them that way. It is also much easier to merge the results across SortedMaps than RowResults.

Additionally, we need to be able to determine if the scanner is doing wildcard column matches (when only a column family is specified or if a column regex is specified) or if multiple members of the same column family were specified. If so, we need to ignore the timestamp to ensure that we get all the family members, as they may have been last updated at different times.

  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Closes the scanner and releases any resources it has allocated
    default boolean
    next(List<? super ExtendedCell> result)
    Grab the next row's worth of values.
    boolean
    next(List<? super ExtendedCell> result, ScannerContext scannerContext)
    Grab the next row's worth of values.
  • Method Details

    • next

      default boolean next(List<? super ExtendedCell> result) throws IOException
      Grab the next row's worth of values.

      The generic type for the output list result means we will only add ExtendedCell to it. This is useful for the code in HBase as we can pass List<ExtendedCell> here to avoid casting, but may cause some troubles for coprocessors which implement this method. In general, all cells created via the CellBuilder are actually ExtendedCells, so if you want to add something to the result list, you can just cast it to ExtendedCell, although it is marked as IA.Private.

      Parameters:
      result - return output array. We will only add ExtendedCell to this list, but for CP users, you'd better just use RawCell as ExtendedCell is IA.Private.
      Returns:
      true if more rows exist after this one, false if scanner is done
      Throws:
      IOException
    • next

      boolean next(List<? super ExtendedCell> result, ScannerContext scannerContext) throws IOException
      Grab the next row's worth of values.

      The generic type for the output list result means we will only add ExtendedCell to it. This is useful for the code in HBase as we can pass List<ExtendedCell> here to avoid casting, but may cause some troubles for coprocessors which implement this method. In general, all cells created via the CellBuilder are actually ExtendedCells, so if you want to add something to the result list, you can just cast it to ExtendedCell, although it is marked as IA.Private.

      Parameters:
      result - return output array. We will only add ExtendedCell to this list, but for CP users, you'd better just use RawCell as ExtendedCell is IA.Private.
      Returns:
      true if more rows exist after this one, false if scanner is done
      Throws:
      IOException
    • close

      void close() throws IOException
      Closes the scanner and releases any resources it has allocated
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException