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 booleanprotected booleanprivate ExecRowprivate booleanprivate Vector<DataValueDescriptor[]> -
Constructor Summary
ConstructorsConstructorDescriptionBasicSortObserver(boolean doClone, boolean distinct, ExecRow execRow, boolean reuseWrappers) Simple constructor -
Method Summary
Modifier and TypeMethodDescriptionvoidaddToFreeList(DataValueDescriptor[] objectArray, int maxFreeListSize) booleanOverridden by subclasses that observe sorters with uniqueness checking.booleandeferred()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.voidOverridden 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:
insertNonDuplicateKeyin 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:
insertDuplicateKeyin 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:
addToFreeListin interfaceSortObserver
-
getArrayClone
- Specified by:
getArrayClonein interfaceSortObserver- Throws:
StandardException
-
getClone
-
deferred
public boolean deferred()Description copied from interface:SortObserverOverridden by subclasses that observe sorters with uniqueness checking.- Specified by:
deferredin 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:SortObserverOverridden by subclasses that observe sorters with uniqueness checking.- Specified by:
deferrablein 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:SortObserverOverridden 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:
rememberDuplicatein interfaceSortObserver- Parameters:
row- data of offending key- Throws:
StandardException- standard error policy
-