Top Methods
org.apache.derby.iapi.store.access

public Interface SortCostController

Known Direct Implementers
org.apache.derby.impl.store.access.sort.ExternalSortFactory
Imports
org.apache.derby.shared.common.error.StandardException, org.apache.derby.iapi.types.DataValueDescriptor, java.util.Properties

Method Summary

Modifier and TypeMethod and Description
public void
close()

Close the controller.

public double

Returns:

The cost of the sort.
getSortCost
(DataValueDescriptor[]
A row which is prototypical for the sort. All rows inserted into the sort controller must have exactly the same number of columns as the template row. Every column in an inserted row must have the same type as the corresponding column in the template.
template
,
ColumnOrdering[]
An array which specifies which columns participate in ordering - see interface ColumnOrdering for details. The column referenced in the 0th columnOrdering object is compared first, then the 1st, etc.
columnOrdering
,
boolean
Indicates that the rows inserted into the sort controller will already be in order. This is used to perform aggregation only.
alreadyInOrder
,
long
The number of rows that the caller estimates will be inserted into the sort. This number must be >= 0.
estimatedInputRows
,
long
The number of rows that the caller estimates will be exported by the sorter. For instance if the sort is doing duplicate elimination and all rows are expected to be duplicates then the estimatedExportRows would be 1. If no duplicate eliminate is to be done then estimatedExportRows would be the same as estimatedInputRows. This number must be >= 0.
estimatedExportRows
,
int
The estimated average row size of the rows being sorted. This is the client portion of the rowsize, it should not attempt to calculate Store's overhead. -1 indicates that the caller has no idea (and the sorter will use 100 bytes in that case. Used by the sort to make good choices about in-memory vs. external sorting, and to size merge runs. The client is not expected to estimate the per column/ per row overhead of raw store, just to make a guess about the storage associated with each row (ie. reasonable estimates for some implementations would be 4 for int, 8 for long, 102 for char(100), 202 for varchar(200), a number out of hat for user types, ...).
estimatedRowSize
)

Calculate the cost of a sort.

Method Detail

closeback to summary
public void close()

Close the controller.

Close the open controller. This method always succeeds, and never throws any exceptions. Callers must not use the StoreCostController after closing it; they are strongly advised to clear out the StoreCostController reference after closing.

getSortCostback to summary
public double getSortCost(DataValueDescriptor[] template, ColumnOrdering[] columnOrdering, boolean alreadyInOrder, long estimatedInputRows, long estimatedExportRows, int estimatedRowSize) throws StandardException

Calculate the cost of a sort.

The cost of a sort includes the time spent in the sorter inserting the rows into the sort, and the time spent in the sorter returning the rows. Note that it does not include the cost of scanning the rows from the source table, for insert into the sort.

Arguments to getSortCost(), should be the same as those to be passed to TransactionController.createSort().

Parameters
template:DataValueDescriptor[]

A row which is prototypical for the sort. All rows inserted into the sort controller must have exactly the same number of columns as the template row. Every column in an inserted row must have the same type as the corresponding column in the template.

columnOrdering:ColumnOrdering[]

An array which specifies which columns participate in ordering - see interface ColumnOrdering for details. The column referenced in the 0th columnOrdering object is compared first, then the 1st, etc.

alreadyInOrder:boolean

Indicates that the rows inserted into the sort controller will already be in order. This is used to perform aggregation only.

estimatedInputRows:long

The number of rows that the caller estimates will be inserted into the sort. This number must be >= 0.

estimatedExportRows:long

The number of rows that the caller estimates will be exported by the sorter. For instance if the sort is doing duplicate elimination and all rows are expected to be duplicates then the estimatedExportRows would be 1. If no duplicate eliminate is to be done then estimatedExportRows would be the same as estimatedInputRows. This number must be >= 0.

estimatedRowSize:int

The estimated average row size of the rows being sorted. This is the client portion of the rowsize, it should not attempt to calculate Store's overhead. -1 indicates that the caller has no idea (and the sorter will use 100 bytes in that case. Used by the sort to make good choices about in-memory vs. external sorting, and to size merge runs. The client is not expected to estimate the per column/ per row overhead of raw store, just to make a guess about the storage associated with each row (ie. reasonable estimates for some implementations would be 4 for int, 8 for long, 102 for char(100), 202 for varchar(200), a number out of hat for user types, ...).

Returns:double

The cost of the sort.

Exceptions
StandardException:
Standard exception policy.