| Modifier and Type | Field and Description |
|---|---|
| private int | |
| pack-priv SortBuffer | sortBuffer
The Sort buffer where rows come from |
| private SortObserver | |
| protected TransactionManager | tran
The TransactionManager that opened this scan. |
| private boolean |
| Access | Constructor and Description |
|---|---|
| pack-priv | SortBufferRowSource(SortBuffer sortBuffer, TransactionManager tran, SortObserver sortObserver, boolean writingToDisk, int maxFreeListSize)
|
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public boolean | closeForEndTransaction(boolean
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. closeHeldScan)Implements org. Close the scan |
| public void | closeRowSource()
Implements org. Close the rowSource |
| public void | fetch(DataValueDescriptor[]
The row into which the value of the current
position in the scan is to be stored. result)Implements org. Fetch the row at the current position of the Scan. |
| public final boolean | fetchNext(DataValueDescriptor[]
The destRow row into which the value
of the next position in the scan is to be stored. row)Implements org. Fetch the (partial) row at the next position of the Scan. |
| public void | fetchWithoutQualify(DataValueDescriptor[]
The row into which the value of the current
position in the scan is to be stored. result)Implements org. Fetch the row at the current position of the Scan and does not apply the qualifiers. |
| public DataValueDescriptor[] | getNextRowFromRowSource()
Implements org. Get the next row as an array of column objects. |
| public FormatableBitSet | getValidColumns()
Implements org. All columns are always set from a sorter |
| public boolean | needsRowLocation()
Implements org. needsRowLocation returns true iff this the row source expects the drainer of the row source to call rowLocation after getting a row from getNextRowFromRowSource. |
| public boolean | |
| public boolean | needsToClone()
Implements org. Does the caller of getNextRowFromRowSource() need to clone the row in order to keep a reference to the row past the getNextRowFromRowSource() call which returned the row. |
| public boolean | next()
Implements org. Move to the next position in the scan. |
| public void | offendingRowLocation(RowLocation rl, long containdId)
Implements org.
|
| public void | rowLocation(RowLocation rl)
Implements org. rowLocation is a callback for the drainer of the row source to return the rowLocation of the current row, i.e, the row that is being returned by getNextRowFromRowSource. |
| maxFreeListSize | back to summary |
|---|---|
| private int maxFreeListSize | |
| sortBuffer | back to summary |
|---|---|
| pack-priv SortBuffer sortBuffer The Sort buffer where rows come from | |
| sortObserver | back to summary |
|---|---|
| private SortObserver sortObserver | |
| tran | back to summary |
|---|---|
| protected TransactionManager tran The TransactionManager that opened this scan. | |
| writingToDisk | back to summary |
|---|---|
| private boolean writingToDisk | |
| SortBufferRowSource | back to summary |
|---|---|
| pack-priv SortBufferRowSource(SortBuffer sortBuffer, TransactionManager tran, SortObserver sortObserver, boolean writingToDisk, int maxFreeListSize) | |
| close | back to summary |
|---|---|
| public void close() Implements org. Close the scan | |
| closeForEndTransaction | back to summary |
|---|---|
| public boolean closeForEndTransaction(boolean closeHeldScan) Implements org. Close the scan
| |
| closeRowSource | back to summary |
|---|---|
| public void closeRowSource() Implements org. Close the rowSource | |
| fetch | back to summary |
|---|---|
| public void fetch(DataValueDescriptor[] result) throws StandardException Implements org. Fetch the row at the current position of the Scan.
| |
| fetchNext | back to summary |
|---|---|
| public final boolean fetchNext(DataValueDescriptor[] row) throws StandardException Implements org. Doc from org. Fetch the (partial) row at the next position of the Scan. If there is a valid next position in the scan then the value in the destRow storable row is replaced with the value of the row at the current scan position. The columns of the destRow row must be of the same type as the actual columns in the underlying conglomerate. The resulting contents of destRow after a fetchNext() which returns false is undefined. The result of calling fetchNext(row) is exactly logically equivalent to making a next() call followed by a fetch(row) call. This interface allows implementations to optimize the 2 calls if possible.
| |
| fetchWithoutQualify | back to summary |
|---|---|
| public void fetchWithoutQualify(DataValueDescriptor[] result) throws StandardException Implements org. Fetch the row at the current position of the Scan and does not apply the qualifiers. This method will always throw an exception. (SQLState.SORT_IMPROPER_SCAN_METHOD)
| |
| getNextRowFromRowSource | back to summary |
|---|---|
| public DataValueDescriptor[] getNextRowFromRowSource() Implements org. Doc from org. Get the next row as an array of column objects. The column objects can
be a JBMS Storable or any
Serializable/Externalizable/Formattable/Streaming type.
A null column can be specified by leaving the object null, or indicated by returning a non-null getValidColumns. On streaming columns, it can be indicated by returning a non-null get FieldStates. If RowSource.needToClone() is true then the returned row (the DataValueDescriptor[]) is guaranteed not to be modified by drainer of the RowSource (except that the input stream will be read, of course) and drainer will keep no reference to it before making the subsequent nextRow call. So it is safe to return the same DataValueDescriptor[] in subsequent nextRow calls if that is desirable for performance reasons. If RowSource.needToClone() is false then the returned row (the DataValueDescriptor[]) may be be modified by drainer of the RowSource, and the drainer may keep a reference to it after making the subsequent nextRow call. In this case the client should severe all references to the row after returning it from getNextRowFromRowSource(). | |
| getValidColumns | back to summary |
|---|---|
| public FormatableBitSet getValidColumns() Implements org. All columns are always set from a sorter | |
| needsRowLocation | back to summary |
|---|---|
| public boolean needsRowLocation() Implements org. Doc from org. needsRowLocation returns true iff this the row source expects the drainer of the row source to call rowLocation after getting a row from getNextRowFromRowSource.
| |
| needsRowLocationForDeferredCheckConstraints | back to summary |
|---|---|
| public boolean needsRowLocationForDeferredCheckConstraints() Implements org. | |
| needsToClone | back to summary |
|---|---|
| public boolean needsToClone() Implements org. Doc from org. Does the caller of getNextRowFromRowSource() need to clone the row in order to keep a reference to the row past the getNextRowFromRowSource() call which returned the row. This call must always return the same for all rows in a RowSource (ie. the caller will call this once per scan from a RowSource and assume the behavior is true for all rows in the RowSource). | |
| next | back to summary |
|---|---|
| public boolean next() throws StandardException Implements org. Doc from org. Move to the next position in the scan. If this is the first call to next(), the position is set to the first row. Returns false if there is not a next row to move to. It is possible, but not guaranteed, that this method could return true again, after returning false, if some other operation in the same transaction appended a row to the underlying conglomerate.
| |
| offendingRowLocation | back to summary |
|---|---|
| public void offendingRowLocation(RowLocation rl, long containdId) throws StandardException Implements org. | |
| rowLocation | back to summary |
|---|---|
| public void rowLocation(RowLocation rl) Implements org. Doc from org. rowLocation is a callback for the drainer of the row source to return
the rowLocation of the current row, i.e, the row that is being returned
by getNextRowFromRowSource. This interface is for the purpose of
loading a base table with index. In that case, the indices can be
built at the same time the base table is laid down once the row
location of the base row is known. This is an example pseudo code on
how this call is expected to be used:
boolean needsRL = rowSource.needsRowLocation();
DataValueDescriptor[] row;
while((row = rowSource.getNextRowFromRowSource()) != null)
{
RowLocation rl = heapConglomerate.insertRow(row);
if (needsRL)
rowSource.rowLocation(rl);
}
NeedsRowLocation and rowLocation will ONLY be called by a drainer of the row source which CAN return a row location. Drainer of row source which cannot return rowLocation will guarantee to not call either callbacks. Conversely, if NeedsRowLocation is called and it returns true, then for every row return by getNextRowFromRowSource, a rowLocation callback must also be issued with the row location of the row. Implementor of both the source and the drain of the row source must be aware of this protocol. The RowLocation object is own by the caller of rowLocation, in other words, the drainer of the RowSource. This is so that we don't need to new a row location for every row. If the Row Source wants to keep the row location, it needs to clone it (RowLocation is a ClonableObject). | |