Class BasicSortObserver
java.lang.Object
org.apache.derby.impl.sql.execute.BasicSortObserver
- All Implemented Interfaces:
SortObserver
- Direct Known Subclasses:
AggregateSortObserver
,UniqueIndexSortObserver
,UniqueWithDuplicateNullsIndexSortObserver
This is the most basic sort observer. It
handles distinct sorts and non-distinct sorts.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
protected boolean
private ExecRow
private boolean
private Vector
<DataValueDescriptor[]> -
Constructor Summary
ConstructorsConstructorDescriptionBasicSortObserver
(boolean doClone, boolean distinct, ExecRow execRow, boolean reuseWrappers) Simple constructor -
Method Summary
Modifier and TypeMethodDescriptionvoid
addToFreeList
(DataValueDescriptor[] objectArray, int maxFreeListSize) boolean
Overridden by subclasses that observe sorters with uniqueness checking.boolean
deferred()
Overridden by subclasses that observe sorters with uniqueness checking.private DataValueDescriptor[]
getClone
(DataValueDescriptor[] origArray) insertDuplicateKey
(DataValueDescriptor[] insertRow, DataValueDescriptor[] existingRow) Called prior to inserting a duplicate sort key.insertNonDuplicateKey
(DataValueDescriptor[] insertRow) Called prior to inserting a distinct sort key.void
Overridden by subclasses that observe sorters with uniqueness checking.
-
Field Details
-
doClone
protected boolean doClone -
distinct
protected boolean distinct -
reuseWrappers
private boolean reuseWrappers -
execRow
-
vector
-
-
Constructor Details
-
BasicSortObserver
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.distinct
- If true, toss out duplicates. Otherwise, retain them.execRow
- ExecRow to use as source of clone for store.reuseWrappers
- Whether or not we can reuse the wrappers
-
-
Method Details
-
insertNonDuplicateKey
public DataValueDescriptor[] insertNonDuplicateKey(DataValueDescriptor[] insertRow) throws StandardException Called prior to inserting a distinct sort key.- Specified by:
insertNonDuplicateKey
in interfaceSortObserver
- 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.- Specified by:
insertDuplicateKey
in interfaceSortObserver
- 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- 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
-
addToFreeList
- Specified by:
addToFreeList
in interfaceSortObserver
-
getArrayClone
- Specified by:
getArrayClone
in interfaceSortObserver
- Throws:
StandardException
-
getClone
-
deferred
public boolean deferred()Description copied from interface:SortObserver
Overridden by subclasses that observe sorters with uniqueness checking.- Specified by:
deferred
in interfaceSortObserver
- Returns:
- true if constraint mode of the index's constraint is effectively deferred. Any SortObserver implementations that implement uniqueness checking need to keep track of this information.
-
deferrable
public boolean deferrable()Description copied from interface:SortObserver
Overridden by subclasses that observe sorters with uniqueness checking.- Specified by:
deferrable
in interfaceSortObserver
- Returns:
- true if the index's constraint is deferrable. Any SortObserver implementations that implement uniqueness checking need to keep track of this information.
-
rememberDuplicate
Description copied from interface:SortObserver
Overridden by subclasses that observe sorters with uniqueness checking. Will be called by sorters iff deferrable() and deferred() and uniqueness violation, so implementations that sometimes return true to these must implement this method to save duplicate information till commit time.- Specified by:
rememberDuplicate
in interfaceSortObserver
- Parameters:
row
- data of offending key- Throws:
StandardException
- standard error policy
-