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 ConglomerateController
private final long
private final DataValueDescriptor[]
private final boolean
private boolean
private final int[]
private final boolean
private final DataValueDescriptor[]
private ConglomerateController
private final long
private final DataValueDescriptor[]
private int
private final TransactionController
-
Constructor Summary
ConstructorsConstructorDescriptionDiskHashtable
(TransactionController tc, DataValueDescriptor[] template, int[] collation_ids, int[] key_column_numbers, boolean remove_duplicates, boolean keepAfterCommit) Creates a newDiskHashtable
instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
elements()
Return an Enumeration that can be used to scan entire table.Get a row from the overflow structure.private static Context
getContextOrNull
(String contextID) Privileged lookup of a Context.private Object
boolean
Put a new row in the overflow structure.remove all rows with a given key from the hash table.private boolean
rowMatches
(DataValueDescriptor[] row, Object key) int
size()
-
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 newDiskHashtable
instance.- 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
Privileged lookup of a Context. Must be private so that user code can't call this entry point.
-