org.apache.derby.impl.sql.execute
Class AggregateSortObserver
java.lang.Object
org.apache.derby.impl.sql.execute.BasicSortObserver
org.apache.derby.impl.sql.execute.AggregateSortObserver
- All Implemented Interfaces:
- SortObserver
- public class AggregateSortObserver
- extends BasicSortObserver
This sort observer performs aggregation.
- Author:
- jamie
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
aggsToProcess
protected GenericAggregator[] aggsToProcess
aggsToInitialize
protected GenericAggregator[] aggsToInitialize
firstAggregatorColumn
private int firstAggregatorColumn
AggregateSortObserver
public AggregateSortObserver(boolean doClone,
GenericAggregator[] aggsToProcess,
GenericAggregator[] aggsToInitialize,
ExecRow execRow)
- Simple constructor
- Parameters:
doClone
- If true, then rows that are retained
by the sorter will be cloned. This is needed
if language is reusing row wrappers.aggsToProcess
- the array of aggregates that
need to be accumulated/merged in the sorter.aggsToInitialize
- the array of aggregates that
need to be iniitialized as they are inserted
into the sorter. This may be different than
aggsToProcess in the case where some distinct
aggregates are dropped in the initial pass of
a two phase aggregation for scalar or vector
distinct aggregation. The initialization process
consists of replacing an empty UserValue with a new,
initialized aggregate of the appropriate type.
Note that for each row, only the first aggregate
in this list is checked to see whether initialization
is needed. If so, ALL aggregates are initialized;
otherwise, NO aggregates are initialized.execRow
- ExecRow to use as source of clone for store.
insertNonDuplicateKey
public DataValueDescriptor[] insertNonDuplicateKey(DataValueDescriptor[] insertRow)
throws StandardException
- Called prior to inserting a distinct sort
key.
- Specified by:
insertNonDuplicateKey
in interface SortObserver
- Overrides:
insertNonDuplicateKey
in class BasicSortObserver
- Parameters:
insertRow
- the current row that the sorter
is on the verge of retaining
- Returns:
- the row to be inserted by the sorter. If null,
then nothing is inserted by the sorter. Distinct
sorts will want to return null.
- Throws:
StandardException
- never thrown
insertDuplicateKey
public DataValueDescriptor[] insertDuplicateKey(DataValueDescriptor[] insertRow,
DataValueDescriptor[] existingRow)
throws StandardException
- Called prior to inserting a duplicate sort
key. We do aggregation here.
- Specified by:
insertDuplicateKey
in interface SortObserver
- Overrides:
insertDuplicateKey
in class BasicSortObserver
- Parameters:
insertRow
- the current row that the sorter
is on the verge of retaining. It is a duplicate
of existingRow.existingRow
- the row that is already in the
the sorter which is a duplicate of insertRow
- Throws:
StandardException
- never thrown
Apache Derby V10.0 Engine Documentation - Copyright © 1997,2004 The Apache Software Foundation or its licensors, as applicable.