Class DiskHashtable
java.lang.Object
org.apache.derby.iapi.store.access.DiskHashtable
This class is used by BackingStoreHashtable when the BackingStoreHashtable
must spill to disk. It implements the methods of a hash table: put, get,
remove, elements, however it is not implemented as a hash table. In order to
minimize the amount of unique code it is implemented using a Btree and a
heap conglomerate. The Btree indexes the hash code of the row key. The
actual key may be too long for our Btree implementation.
Created: Fri Jan 28 13:58:03 2005
- Version:
- 1.0
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ConglomerateControllerprivate final longprivate final DataValueDescriptor[]private final booleanprivate booleanprivate final int[]private final booleanprivate final DataValueDescriptor[]private ConglomerateControllerprivate final longprivate final DataValueDescriptor[]private intprivate final TransactionController -
Constructor Summary
ConstructorsConstructorDescriptionDiskHashtable(TransactionController tc, DataValueDescriptor[] template, int[] collation_ids, int[] key_column_numbers, boolean remove_duplicates, boolean keepAfterCommit) Creates a newDiskHashtableinstance. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()elements()Return an Enumeration that can be used to scan entire table.Get a row from the overflow structure.private static ContextgetContextOrNull(String contextID) Privileged lookup of a Context.private ObjectbooleanPut a new row in the overflow structure.remove all rows with a given key from the hash table.private booleanrowMatches(DataValueDescriptor[] row, Object key) intsize()
-
Field Details
-
rowConglomerateId
private final long rowConglomerateId -
rowConglomerate
-
btreeConglomerateId
private final long btreeConglomerateId -
btreeConglomerate
-
btreeRow
-
key_column_numbers
private final int[] key_column_numbers -
remove_duplicates
private final boolean remove_duplicates -
tc
-
row
-
scanKey
-
size
private int size -
keepStatistics
private boolean keepStatistics -
keepAfterCommit
private final boolean keepAfterCommit
-
-
Constructor Details
-
DiskHashtable
public DiskHashtable(TransactionController tc, DataValueDescriptor[] template, int[] collation_ids, int[] key_column_numbers, boolean remove_duplicates, boolean keepAfterCommit) throws StandardException Creates a newDiskHashtableinstance.- Parameters:
tc-template- An array of DataValueDescriptors that serves as a template for the rows.key_column_numbers- The indexes of the key columns (0 based)remove_duplicates- If true then rows with duplicate keys are removed.keepAfterCommit- If true then the hash table is kept after a commit- Throws:
StandardException
-
-
Method Details
-
close
- Throws:
StandardException
-
put
Put a new row in the overflow structure.- Parameters:
row- The row to be inserted.- Returns:
- true if the row was added, false if it was not added (because it was a duplicate and we are eliminating duplicates).
- Throws:
StandardException- standard error policy
-
get
Get a row from the overflow structure.- Parameters:
key- If the rows only have one key column then the key value. If there is more than one key column then a KeyHasher- Returns:
- null if there is no corresponding row, the row (DataValueDescriptor[]) if there is exactly one row with the key, or a Vector of all the rows with the key if there is more than one.
- Throws:
StandardException
-
getRemove
private Object getRemove(Object key, boolean remove, boolean existenceOnly) throws StandardException - Throws:
StandardException
-
rowMatches
-
remove
remove all rows with a given key from the hash table.- Parameters:
key- The key of the rows to remove.- Returns:
- The removed row(s).
- Throws:
StandardException- Standard exception policy.
-
size
public int size()- Returns:
- The number of rows in the hash table
-
elements
Return an Enumeration that can be used to scan entire table.RESOLVE - is it worth it to support this routine?
- Returns:
- The Enumeration.
- Throws:
StandardException- Standard exception policy.
-
getContextOrNull
-