Class DistinctScalarAggregateResultSet
java.lang.Object
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
org.apache.derby.impl.sql.execute.NoPutResultSetImpl
org.apache.derby.impl.sql.execute.GenericAggregateResultSet
org.apache.derby.impl.sql.execute.ScalarAggregateResultSet
org.apache.derby.impl.sql.execute.DistinctScalarAggregateResultSet
- All Implemented Interfaces:
CursorResultSet, NoPutResultSet, ResultSet, RowLocationRetRowSource, RowSource
This ResultSet evaluates scalar aggregates where
1 (or more, in the future) of the aggregates are distinct.
It will scan the entire source result set and calculate
the scalar aggregates when scanning the source during the
first call to next().
-
Nested Class Summary
Nested classes/interfaces inherited from class BasicNoPutResultSetImpl
BasicNoPutResultSetImpl.FieldComparator -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate intprivate ColumnOrdering[]private ScanControllerprivate booleanprivate longprivate ExecIndexRowFields inherited from class ScalarAggregateResultSet
countOfRows, isInSortedOrder, rowsInput, singleInputRow, sourceExecIndexRowFields inherited from class GenericAggregateResultSet
aggInfoList, aggregates, originalSource, sourceFields inherited from class NoPutResultSetImpl
checkNullCols, clonedExecRow, cncLen, resultSetNumber, targetResultSetFields inherited from class BasicNoPutResultSetImpl
activation, beginTime, closeTime, compactRow, constructorTime, currentRow, endExecutionTime, finished, isOpen, isTopResultSet, nextTime, numOpens, openTime, optimizerEstimatedCost, optimizerEstimatedRowCount, resultDescription, rowsFiltered, rowsSeen, startExecutionTime, subqueryTrackingArrayFields inherited from interface NoPutResultSet
ABSOLUTE, FIRST, LAST, NEXT, PREVIOUS, RELATIVE, TEMPORARY_RESULT_SET_NUMBERFields inherited from interface ResultSet
CURRENT_RESULTSET_ONLY, ENTIRE_RESULTSET_TREE, ISAFTERLAST, ISBEFOREFIRST, ISFIRST, ISLAST -
Constructor Summary
ConstructorsConstructorDescriptionDistinctScalarAggregateResultSet(NoPutResultSet s, boolean isInSortedOrder, int aggregateItem, int orderingItem, Activation a, int ra, int maxRowSize, int resultSetNumber, boolean singleInputRow, double optimizerEstimatedRowCount, double optimizerEstimatedCost) Constructor -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()If the result set has been opened, close the open scan.protected voidClose the source of whatever we have been scanning.Return the next row.getRowFromResultSet(boolean doClone) Get a row from the sorter.private ScanControllerLoad up the sorter.voidopenCore()Open the scan.voidreopen a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...Methods inherited from class ScalarAggregateResultSet
accumulateScalarAggregation, getCurrentRow, getRowLocation, getTimeSpentMethods inherited from class GenericAggregateResultSet
finish, finishAggregation, getRowTemplate, getSortAggregators, toXMLMethods inherited from class NoPutResultSetImpl
clearCurrentRow, clearOrderableCache, closeRowSource, getCursorName, getNextRowFromRowSource, getResultDescription, getValidColumns, isForUpdate, markRowAsDeleted, needsRowLocation, needsRowLocationForDeferredCheckConstraints, needsToClone, offendingRowLocation, positionScanAtRowLocation, printQualifiers, resultSetNumber, rowLocation, setCurrentRow, setHasDeferrableChecks, setNeedsRowLocation, setTargetResultSet, skipRow, skipScan, unpackHashValue, updateRowMethods inherited from class BasicNoPutResultSetImpl
addWarning, attachStatementContext, checkCancellationFlag, checkRowPosition, childrenToXML, cleanUp, dumpTimeStats, finishAndRTS, getAbsoluteRow, getActivation, getAutoGeneratedKeysResultset, getBeginExecutionTimestamp, getCompactRow, getCurrentTimeMillis, getElapsedMillis, getEndExecutionTimestamp, getEstimatedRowCount, getExecuteTime, getExecutionFactory, getFirstRow, getLanguageConnectionContext, getLastRow, getNextRow, getPointOfAttachment, getPreviousRow, getRelativeRow, getRowNumber, getScanIsolationLevel, getSubqueryTrackingArray, getTransactionController, getWarnings, isClosed, isXplainOnlyMode, markAsTopResultSet, modifiedRowCount, open, recordConstructorTime, requiresRelocking, returnsRows, setAfterLastRow, setBeforeFirstRow, setCompactRow, setCompatRow, toXMLMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ResultSet
addWarning, checkRowPosition, cleanUp, clearCurrentRow, finish, getAbsoluteRow, getActivation, getAutoGeneratedKeysResultset, getBeginExecutionTimestamp, getCursorName, getEndExecutionTimestamp, getExecuteTime, getFirstRow, getLastRow, getNextRow, getPreviousRow, getRelativeRow, getResultDescription, getRowNumber, getSubqueryTrackingArray, getWarnings, isClosed, modifiedRowCount, open, returnsRows, setAfterLastRow, setBeforeFirstRow, toXML
-
Field Details
-
order
-
maxRowSize
private int maxRowSize -
dropDistinctAggSort
private boolean dropDistinctAggSort -
sortId
private long sortId -
scanController
-
sortResultRow
-
sorted
private boolean sorted
-
-
Constructor Details
-
DistinctScalarAggregateResultSet
DistinctScalarAggregateResultSet(NoPutResultSet s, boolean isInSortedOrder, int aggregateItem, int orderingItem, Activation a, int ra, int maxRowSize, int resultSetNumber, boolean singleInputRow, double optimizerEstimatedRowCount, double optimizerEstimatedCost) throws StandardException Constructor- Parameters:
s- input result setisInSortedOrder- true if the source results are in sorted orderaggregateItem- indicates the number of the SavedObject off of the PreparedStatement that holds the AggregatorInfoList used by this routine.a- activationra- saved object that builds an empty output rowresultSetNumber- The resultSetNumber for this result set- Throws:
StandardException- Thrown on error
-
-
Method Details
-
openCore
Open the scan. Load the sorter and prepare to get rows from it.- Specified by:
openCorein interfaceNoPutResultSet- Overrides:
openCorein classScalarAggregateResultSet- Throws:
StandardException- thrown if cursor finished.
-
getNextRowCore
Return the next row. If it is a scalar aggregate scan- Specified by:
getNextRowCorein interfaceNoPutResultSet- Overrides:
getNextRowCorein classScalarAggregateResultSet- Returns:
- the next row in the result
- Throws:
StandardException- thrown on failure.StandardException- ResultSetNotOpen thrown if not yet open.- See Also:
-
reopenCore
reopen a scan on the table. scan parameters are evaluated at each open, so there is probably some way of altering their values...- Specified by:
reopenCorein interfaceNoPutResultSet- Overrides:
reopenCorein classScalarAggregateResultSet- Throws:
StandardException- thrown if cursor finished.- See Also:
-
close
If the result set has been opened, close the open scan.- Specified by:
closein interfaceResultSet- Overrides:
closein classScalarAggregateResultSet- Throws:
StandardException- thrown on error
-
getRowFromResultSet
Get a row from the sorter. Side effects: sets currentRow.- Overrides:
getRowFromResultSetin classScalarAggregateResultSet- Parameters:
doClone- - true of the row should be cloned- Throws:
StandardException- Thrown on error
-
closeSource
Close the source of whatever we have been scanning.- Throws:
StandardException- thrown on error
-
loadSorter
Load up the sorter. Feed it every row from the source scan. If we have a vector aggregate, initialize the aggregator for each source row. When done, close the source scan and open the sort. Return the sort scan controller.- Returns:
- the sort controller
- Throws:
StandardException- thrown on failure.
-