Class BPlusLeaf<KeyType,KeyBufferType>
java.lang.Object
com.semedy.reasoner.edb.persistentstore.bplustree.BPlusNode<KeyType,KeyBufferType>
com.semedy.reasoner.edb.persistentstore.bplustree.BPlusLeaf<KeyType,KeyBufferType>
- All Implemented Interfaces:
CacheUnit
- Direct Known Subclasses:
BPlusLeafRecords
A leaf is the node in a B+ tree containing records. Although we want them to be generic,
most B+ trees are specialized. As a result, the only thing generic about the tree is the key
most B+ trees are specialized. As a result, the only thing generic about the tree is the key
- Author:
- angele
-
Nested Class Summary
Nested classes/interfaces inherited from class com.semedy.reasoner.edb.persistentstore.bplustree.BPlusNode
BPlusNode.BPlusStatus
-
Constructor Summary
ConstructorDescriptionBPlusLeaf
(BPlusKeys<KeyType, KeyBufferType> keys, int maxSizeInBytes, BPlusTree<KeyType, KeyBufferType> bplustree) BPlusLeaf
(BPlusKeys<KeyType, KeyBufferType> keys, long[] records, int maxSizeInBytes, BPlusTree<KeyType, KeyBufferType> bplustree) Initializes leaf. -
Method Summary
Modifier and TypeMethodDescriptionboolean
append a key with a recordlong
Borrow the first recordlong
borrows the rightmost recordboolean
checkSanity
(String message, KeyType minKey, KeyType maxKey, DataFile df) checks whether all keys are sorted correctlybyte[]
Map node to an array of bytesstatic BPlusLeaf<long[],
TupleBuffer> createLeaf
(byte[] bytes, KeysFactory<long[], TupleBuffer> keysFactory, BPlusTree<long[], TupleBuffer> bplustree) Method for creating a leaf from the given byte array.boolean
Deletes the key (and the associated record offset) from this node.void
destroy()
free up ressources at the end (CacheManager.clear)void
performs several cleaning up actions after borrowing from the right.void
performs several cleanign up actions after borrowing from the left.getIndexBuffer
(int index) get attached object at indexlong
getObjectSize
(int index) get size of attached object at indexlong
getRecord
(int index) get record at indexlong[]
boolean
Inserts a key and the record offset into the node.boolean
isLeaf()
A quick checker to see if the node is a leaf- if so, we have found the final result of the search.void
remove()
void
replaces key at index by replacement keylong
Searches for the given value.long
int
searchIndex
(KeyType key) Searches for index of the key Returns -1 it key is not containedint
Searches for hte (possible) index of the keyint
Searches for insert position of keyint
Searches for insert position of keyboolean
sets for a given key the record.
returns false if key is not therevoid
substitute
(BPlusKeys<KeyType, KeyBufferType> key, long[] record, long leftOffs) Methods inherited from class com.semedy.reasoner.edb.persistentstore.bplustree.BPlusNode
borrowFirstKey, borrowKey, canBeBorrowedFrom, clear, detach, getFather, getIndexInFather, getKeys, getLast, getNext, getNumKeys, getOffset, getStatus, isEmpty, isFull, isReleasable, release, setFather, setLast, setNext, setStatus, sizeInBytes, toString, touch, underflow
-
Constructor Details
-
BPlusLeaf
public BPlusLeaf(BPlusKeys<KeyType, KeyBufferType> keys, int maxSizeInBytes, BPlusTree<KeyType, KeyBufferType> bplustree) - Parameters:
keys
- , given keysmaxSizeInBytes
- , max size of a node in bytesbplustree
-
-
BPlusLeaf
public BPlusLeaf(BPlusKeys<KeyType, KeyBufferType> keys, long[] records, int maxSizeInBytes, BPlusTree<KeyType, KeyBufferType> bplustree) Initializes leaf.- Parameters:
keys
-records
-maxSizeInBytes
-bplustree
-
-
-
Method Details
-
substitute
-
delete
Deletes the key (and the associated record offset) from this node.
First, we find the index of the key. Make a temp array containing keys[0, indexToSkip - 1]
copy keys[indexToSkip + 1, keys.length - 1] over. Do the same with the records.- Parameters:
keyToDelete
-
-
replace
replaces key at index by replacement key- Parameters:
replacement
-index
-
-
insert
Inserts a key and the record offset into the node. First, we find the index where these items need to be. Then copy all elements up to that point into a temp array. Shove the new key in, copy the rest of the elements. use the same index and do the same with the records.- Parameters:
key
-record
-- Throws:
IOException
-
set
sets for a given key the record.
returns false if key is not there- Parameters:
key
-record
-
-
append
append a key with a record- Parameters:
key
-record
-- Returns:
- Throws:
IOException
-
isLeaf
public boolean isLeaf()Description copied from class:BPlusNode
A quick checker to see if the node is a leaf- if so, we have found the final result of the search.- Specified by:
isLeaf
in classBPlusNode<KeyType,
KeyBufferType> - Returns:
- true if this is a leaf
-
search
Searches for the given value.- Parameters:
key
-- Returns:
- the value for the key, or -1 if not found.
-
searchIndexToInsert
Searches for insert position of key- Parameters:
key
-- Returns:
- (possible) index position
-
searchIndexToInsertByBuffer
Searches for insert position of key- Parameters:
key
-- Returns:
- (possible) index position
-
searchIndex
Searches for index of the key Returns -1 it key is not contained- Parameters:
key
-- Returns:
-
searchIndexBuffer
Searches for hte (possible) index of the key- Parameters:
key
-- Returns:
-
searchBuffer
-
getRecords
public long[] getRecords()- Returns:
- array of records
-
getRecord
public long getRecord(int index) get record at index- Parameters:
index
-- Returns:
-
getIndexBuffer
get attached object at index- Throws:
IOException
-
getObjectSize
get size of attached object at index- Throws:
IOException
-
borrowRecord
public long borrowRecord()borrows the rightmost record- Returns:
- the rightmost record
-
doneBorrowing
public void doneBorrowing()Description copied from class:BPlusNode
performs several cleaning up actions after borrowing from the right.- Specified by:
doneBorrowing
in classBPlusNode<KeyType,
KeyBufferType>
-
borrowFirstRecord
public long borrowFirstRecord()Borrow the first record- Returns:
- the first record
-
doneBorrowingFirst
public void doneBorrowingFirst()Description copied from class:BPlusNode
performs several cleanign up actions after borrowing from the left.- Specified by:
doneBorrowingFirst
in classBPlusNode<KeyType,
KeyBufferType>
-
checkSanity
Description copied from class:BPlusNode
checks whether all keys are sorted correctly- Specified by:
checkSanity
in classBPlusNode<KeyType,
KeyBufferType> - Returns:
-
remove
public void remove() -
destroy
public void destroy()Description copied from interface:CacheUnit
free up ressources at the end (CacheManager.clear) -
createBytes
public byte[] createBytes()Map node to an array of bytes- Returns:
-
createLeaf
public static BPlusLeaf<long[],TupleBuffer> createLeaf(byte[] bytes, KeysFactory<long[], TupleBuffer> keysFactory, BPlusTree<long[], TupleBuffer> bplustree) Method for creating a leaf from the given byte array.- Parameters:
bytes
-- Returns:
-