org.apache.derby.impl.store.access.heap
Class HeapCompressScan

java.lang.Object
  extended by org.apache.derby.impl.store.access.conglomerate.GenericController
      extended by org.apache.derby.impl.store.access.conglomerate.GenericScanController
          extended by org.apache.derby.impl.store.access.heap.HeapScan
              extended by org.apache.derby.impl.store.access.heap.HeapCompressScan
All Implemented Interfaces:
ScanManager, GenericScanController, GroupFetchScanController, RowCountable, ScanController

 class HeapCompressScan
extends HeapScan

A heap scan object represents an instance of a scan on a heap conglomerate.


Field Summary
private  long pagenum_to_start_moving_rows
          Fields of HeapScan
 
Fields inherited from class org.apache.derby.impl.store.access.conglomerate.GenericScanController
rowLocationsInvalidated, SCAN_DONE, SCAN_HOLD_INIT, SCAN_HOLD_INPROGRESS, SCAN_INIT, SCAN_INPROGRESS, scan_position, stat_numpages_visited, stat_numrows_qualified, stat_numrows_visited
 
Fields inherited from class org.apache.derby.impl.store.access.conglomerate.GenericController
open_conglom
 
Fields inherited from interface org.apache.derby.iapi.store.access.ScanController
GE, GT, NA
 
Constructor Summary
HeapCompressScan()
          The only constructor for a HeapCompressScan returns a scan in the closed state, the caller must call open.
 
Method Summary
 int fetchNextGroup(DataValueDescriptor[][] row_array, RowLocation[] old_rowloc_array, RowLocation[] new_rowloc_array)
          Protected override implementation of routines in GenericController class:
private  int fetchRowsForCompress(DataValueDescriptor[][] row_array, RowLocation[] oldrowloc_array, RowLocation[] newrowloc_array)
          Fetch the next N rows from the table.
private  void positionAfterThisPage(RowPosition pos)
          Set scan position to just after current page.
protected  void positionAtResumeScan(RowPosition pos)
          Reposition the scan upon entering the fetchRows loop.
protected  void positionAtStartForForwardScan(RowPosition pos)
          Move the scan from SCAN_INIT to SCAN_INPROGRESS.
 
Methods inherited from class org.apache.derby.impl.store.access.heap.HeapScan
fetchLocation, fetchNext, fetchNextGroup, getScanInfo, next, positionAtRowLocation, queueDeletePostCommitWork, reopenScanByRowLocation, setRowLocationArray, setRowLocationArray
 
Methods inherited from class org.apache.derby.impl.store.access.conglomerate.GenericScanController
allocateScanPosition, close, closeForEndTransaction, delete, didNotQualify, doesCurrentPositionQualify, fetch, fetchRows, fetchSet, fetchWithoutQualify, getNumPagesVisited, getNumRowsQualified, getNumRowsVisited, getQualifier, getScanColumnList, getScanPosition, getScanState, getStartKeyValue, getStartSearchOperator, getStopKeyValue, getStopSearchOperator, init, isCurrentPositionDeleted, isHeldAfterCommit, positionAtDoneScan, positionAtInitScan, positionAtNextPage, reopenAfterEndTransaction, reopenScan, reopenScanByRecordHandle, replace, setScanPosition, setScanState
 
Methods inherited from class org.apache.derby.impl.store.access.conglomerate.GenericController
checkConsistency, debugConglomerate, getEstimatedRowCount, getInternalTablePropertySet, getOpenConglom, getRowPositionFromRowLocation, getSpaceInfo, getTableProperties, init, isKeyed, isTableLocked, newRowLocationTemplate, setEstimatedRowCount
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.derby.iapi.store.access.conglomerate.ScanManager
closeForEndTransaction, fetchSet
 
Methods inherited from interface org.apache.derby.iapi.store.access.ScanController
delete, didNotQualify, doesCurrentPositionQualify, fetch, fetchWithoutQualify, isCurrentPositionDeleted, isHeldAfterCommit, replace
 
Methods inherited from interface org.apache.derby.iapi.store.access.GenericScanController
close, isKeyed, isTableLocked, newRowLocationTemplate, reopenScan
 
Methods inherited from interface org.apache.derby.iapi.store.access.RowCountable
getEstimatedRowCount, setEstimatedRowCount
 

Field Detail

pagenum_to_start_moving_rows

private long pagenum_to_start_moving_rows
Fields of HeapScan

Constructor Detail

HeapCompressScan

public HeapCompressScan()
The only constructor for a HeapCompressScan returns a scan in the closed state, the caller must call open.

Method Detail

fetchNextGroup

public int fetchNextGroup(DataValueDescriptor[][] row_array,
                          RowLocation[] old_rowloc_array,
                          RowLocation[] new_rowloc_array)
                   throws StandardException
Protected override implementation of routines in GenericController class:

Specified by:
fetchNextGroup in interface GroupFetchScanController
Overrides:
fetchNextGroup in class HeapScan
Throws:
StandardException

fetchRowsForCompress

private int fetchRowsForCompress(DataValueDescriptor[][] row_array,
                                 RowLocation[] oldrowloc_array,
                                 RowLocation[] newrowloc_array)
                          throws StandardException
Fetch the next N rows from the table.

Utility routine used by both fetchSet() and fetchNextGroup().

Throws:
StandardException - Standard exception policy.

positionAtResumeScan

protected void positionAtResumeScan(RowPosition pos)
                             throws StandardException
Reposition the scan upon entering the fetchRows loop.

Called upon entering fetchRows() while in the SCAN_INPROGRESS state. Do work necessary to look at rows in the current page of the scan.

The default implementation uses a record handle to maintain a scan position. It will get the latch again on the current scan position and set the slot to the current record handle.

Overrides:
positionAtResumeScan in class GenericScanController
Throws:
StandardException - Standard exception policy.

positionAtStartForForwardScan

protected void positionAtStartForForwardScan(RowPosition pos)
                                      throws StandardException
Move the scan from SCAN_INIT to SCAN_INPROGRESS.

This routine is called to move the scan from SCAN_INIT to SCAN_INPROGRESS. Upon return from this routine it is expected that scan_position is set such that calling the generic scan loop will reach the first row of the scan. Note that this usually means setting the scan_postion to one before the 1st row to be returned.

Overrides:
positionAtStartForForwardScan in class GenericScanController
Throws:
StandardException - Standard exception policy.

positionAfterThisPage

private void positionAfterThisPage(RowPosition pos)
                            throws StandardException
Set scan position to just after current page.

Used to set the position of the scan if a record handle is not avaliable. In this case current_rh will be set to null, and current_pageno will be set to the current page number. On resume of the scan, the scan will be set to just before the first row returned form a getNextPage(current_pageno) call.

A positionAtResumeScan(scan_position) is necessary to continue the scan after this call.

Throws:
StandardException - Standard exception policy.

Built on Thu 2012-03-29 21:53:33+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.