Class MergeScan

All Implemented Interfaces:
ScanManager, GenericScanController, GroupFetchScanController, RowCountable, ScanController, ScanInfo
Direct Known Subclasses:
MergeScanRowSource

public class MergeScan extends SortScan
A sort scan that is capable of merging as many merge runs as will fit in the passed-in sort buffer.
  • Field Details

    • sortBuffer

      protected SortBuffer sortBuffer
      The sort buffer we will use.
    • mergeRuns

      protected Vector<Long> mergeRuns
      The merge runs.
    • openScans

      protected StreamContainerHandle[] openScans
      Array of scan controllers for the merge runs. Entries in the array become null as the last row is pulled out and the scan is closed.
    • sortObserver

      private SortObserver sortObserver
  • Constructor Details

  • Method Details

    • next

      public boolean next() throws StandardException
      Move to the next position in the scan.
      Returns:
      True if there is a next position in the scan, false if there isn't.
      Throws:
      StandardException - Standard exception policy.
      See Also:
    • close

      public void close()
      Close the scan.
      Specified by:
      close in interface GenericScanController
      Overrides:
      close in class SortScan
      See Also:
    • closeForEndTransaction

      public boolean closeForEndTransaction(boolean closeHeldScan)
      Close the scan.
      Parameters:
      closeHeldScan - If true, means to close scan even if it has been opened to be kept opened across commit. This is used to close these scans on abort.
      Returns:
      boolean indicating that the close has resulted in a real close of the scan. A held scan will return false if called by closeForEndTransaction(false), otherwise it will return true. A non-held scan will always return true.
      See Also:
    • init

      public boolean init(TransactionManager tran) throws StandardException
      Initialize the scan, returning false if there was some error.
      Throws:
      StandardException
    • mergeARow

      void mergeARow(int scanindex) throws StandardException
      Insert rows while we keep getting duplicates from the merge run whose scan is in the open scan array entry indexed by scanindex.
      Throws:
      StandardException