Class TransactionMap<K,V>
- Type Parameters:
K- the key typeV- the value type
- All Implemented Interfaces:
Map<K,V>
Methods of this class may be changed at any time without notice. If you use this class directly make sure that your application or library requires exactly the same version of MVStore or H2 jar as the version that you use during its development and build.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object, V extends Object> -
Field Summary
FieldsModifier and TypeFieldDescriptionfinal MVMap<K,VersionedValue<V>> The map used for writing (the latest version). -
Method Summary
Modifier and TypeMethodDescriptionvoidAppends entry to underlying map.ceilingEntry(K key) Get the entry with smallest key that is larger than or equal to this key, or null if no such key exists.ceilingKey(K key) Get the smallest key that is larger than or equal to this key, or null if no such key exists.voidclear()Clear the map.booleancontainsKey(Object key) Whether the map contains the key.entryIterator(K from, K to) Iterate over entries.entryIterator(K from, K to, boolean reverse) Iterate over entries.entrySet()Get the first entry.firstKey()Get the first key.floorEntry(K key) Get the entry with largest key that is smaller than or equal to this key, or null if no such key exists.Get the largest key that is smaller than or equal to this key, or null if no such key exists.Get the effective value for the given key.getFromSnapshot(K key) Get the value for the given key, or null if value does not exist in accordance with transactional rules.getImmediate(K key) Get the value for the given key, or null if not found.getInstance(Transaction transaction) Get a clone of this map for the given transaction.higherEntry(K key) Get the entry with smallest key that is larger than the given key, or null if no such key exists.Get the smallest key that is larger than the given key, or null if no such key exists.booleanisClosed()Check whether this map is closed.booleanCheck if the row was deleted by this transaction.booleanisSameTransaction(K key) Whether the entry for this key was added or removed from this session.keyIterator(K from) Iterate over keys.keyIterator(K from, boolean reverse) Iterate over keys in the specified order.keyIterator(K from, K to) Iterate over keys.keyIterator(K from, K to, boolean reverse) Iterate over keys.keyIteratorUncommitted(K from, K to) Iterate over keys, including keys from uncommitted entries.Get the last entry.lastKey()Get the last key.Lock row for the given key.Lock row for the given key.lowerEntry(K key) Get the entry with largest key that is smaller than the given key, or null if no such key exists.Get the largest key that is smaller than the given key, or null if no such key exists.Update the value for the given key.putCommitted(K key, V value) Update the value for the given key, without adding an undo log entry.putIfAbsent(K key, V value) Put the value for the given key if entry for this key does not exist.Remove an entry.intsize()Get the number of entries, as a integer.longGet the size of the map as seen by this transaction.longGet the size of the raw map.booleanTry to update the value for the given key.booleanTry to remove the value for the given key.booleanTry to set or remove the value.Methods inherited from class java.util.AbstractMap
clone, containsValue, equals, hashCode, isEmpty, keySet, putAll, toString, valuesMethods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, remove, replace, replace, replaceAll
-
Field Details
-
map
The map used for writing (the latest version).Key: key the key of the data. Value: { transactionId, oldVersion, value }
-
-
Method Details
-
getInstance
Get a clone of this map for the given transaction.- Parameters:
transaction- the transaction- Returns:
- the map
-
size
public int size()Get the number of entries, as a integer.Integer.MAX_VALUEis returned if there are more than this entries. -
sizeAsLongMax
public long sizeAsLongMax()Get the size of the raw map. This includes uncommitted entries, and transiently removed entries, so it is the maximum number of entries.- Returns:
- the maximum size
-
sizeAsLong
public long sizeAsLong()Get the size of the map as seen by this transaction.- Returns:
- the size
-
remove
Remove an entry.If the row is locked, this method will retry until the row could be updated or until a lock timeout.
- Specified by:
removein interfaceMap<K,V> - Overrides:
removein classAbstractMap<K,V> - Parameters:
key- the key- Throws:
MVStoreException- if a lock timeout occursClassCastException- if type of the specified key is not compatible with this map
-
put
Update the value for the given key.If the row is locked, this method will retry until the row could be updated or until a lock timeout.
- Specified by:
putin interfaceMap<K,V> - Overrides:
putin classAbstractMap<K,V> - Parameters:
key- the keyvalue- the new value (not null)- Returns:
- the old value
- Throws:
MVStoreException- if a lock timeout occurs
-
putIfAbsent
Put the value for the given key if entry for this key does not exist. It is atomic equivalent of the following expression: contains(key) ? get(k) : put(key, value);- Parameters:
key- the keyvalue- the new value (not null)- Returns:
- the old value
-
append
Appends entry to underlying map. This method may be used concurrently, but latest appended values are not guaranteed to be visible.- Parameters:
key- should be higher in map's order than any existing keyvalue- to be appended
-
lock
Lock row for the given key.If the row is locked, this method will retry until the row could be updated or until a lock timeout.
- Parameters:
key- the key- Returns:
- the locked value
- Throws:
MVStoreException- if a lock timeout occurs
-
lock
Lock row for the given key.If the row is locked, this method will retry until the row could be updated or until a lock timeout.
- Parameters:
key- the keytimeoutMillis- timeout in milliseconds,-1for default,-2to skip locking if row is already locked by another transaction- Returns:
- the locked value
- Throws:
MVStoreException- if a lock timeout occurs
-
putCommitted
Update the value for the given key, without adding an undo log entry.- Parameters:
key- the keyvalue- the value- Returns:
- the old value
-
tryRemove
Try to remove the value for the given key.This will fail if the row is locked by another transaction (that means, if another open transaction changed the row).
- Parameters:
key- the key- Returns:
- whether the entry could be removed
-
tryPut
Try to update the value for the given key.This will fail if the row is locked by another transaction (that means, if another open transaction changed the row).
- Parameters:
key- the keyvalue- the new value- Returns:
- whether the entry could be updated
-
trySet
Try to set or remove the value. When updating only unchanged entries, then the value is only changed if it was not changed after opening the map.- Parameters:
key- the keyvalue- the new value (null to remove the value)- Returns:
- true if the value was set, false if there was a concurrent update
-
get
Get the effective value for the given key.- Specified by:
getin interfaceMap<K,V> - Overrides:
getin classAbstractMap<K,V> - Parameters:
key- the key- Returns:
- the value or null
- Throws:
ClassCastException- if type of the specified key is not compatible with this map
-
getFromSnapshot
Get the value for the given key, or null if value does not exist in accordance with transactional rules. Value is taken from a snapshot, appropriate for an isolation level of the related transaction- Parameters:
key- the key- Returns:
- the value, or null if not found
-
getImmediate
Get the value for the given key, or null if not found. Operation is performed on a snapshot of the map taken during this call.- Parameters:
key- the key- Returns:
- the value, or null if not found
-
containsKey
Whether the map contains the key.- Specified by:
containsKeyin interfaceMap<K,V> - Overrides:
containsKeyin classAbstractMap<K,V> - Parameters:
key- the key- Returns:
- true if the map contains an entry for this key
- Throws:
ClassCastException- if type of the specified key is not compatible with this map
-
isDeletedByCurrentTransaction
Check if the row was deleted by this transaction.- Parameters:
key- the key- Returns:
trueif it was
-
isSameTransaction
Whether the entry for this key was added or removed from this session.- Parameters:
key- the key- Returns:
- true if yes
-
isClosed
public boolean isClosed()Check whether this map is closed.- Returns:
- true if closed
-
clear
public void clear()Clear the map. -
entrySet
-
firstEntry
Get the first entry.- Returns:
- the first entry, or null if empty
-
firstKey
Get the first key.- Returns:
- the first key, or null if empty
-
lastEntry
Get the last entry.- Returns:
- the last entry, or null if empty
-
lastKey
Get the last key.- Returns:
- the last key, or null if empty
-
higherEntry
Get the entry with smallest key that is larger than the given key, or null if no such key exists.- Parameters:
key- the key (may not be null)- Returns:
- the result
-
higherKey
Get the smallest key that is larger than the given key, or null if no such key exists.- Parameters:
key- the key (may not be null)- Returns:
- the result
-
ceilingEntry
Get the entry with smallest key that is larger than or equal to this key, or null if no such key exists.- Parameters:
key- the key (may not be null)- Returns:
- the result
-
ceilingKey
Get the smallest key that is larger than or equal to this key, or null if no such key exists.- Parameters:
key- the key (may not be null)- Returns:
- the result
-
floorEntry
Get the entry with largest key that is smaller than or equal to this key, or null if no such key exists.- Parameters:
key- the key (may not be null)- Returns:
- the result
-
floorKey
Get the largest key that is smaller than or equal to this key, or null if no such key exists.- Parameters:
key- the key (may not be null)- Returns:
- the result
-
lowerEntry
Get the entry with largest key that is smaller than the given key, or null if no such key exists.- Parameters:
key- the key (may not be null)- Returns:
- the result
-
lowerKey
Get the largest key that is smaller than the given key, or null if no such key exists.- Parameters:
key- the key (may not be null)- Returns:
- the result
-
keyIterator
Iterate over keys.- Parameters:
from- the first key to return- Returns:
- the iterator
-
keyIterator
Iterate over keys in the specified order.- Parameters:
from- the first key to returnreverse- if true, iterate in reverse (descending) order- Returns:
- the iterator
-
keyIterator
Iterate over keys.- Parameters:
from- the first key to returnto- the last key to return or null if there is no limit- Returns:
- the iterator
-
keyIterator
Iterate over keys.- Parameters:
from- the first key to returnto- the last key to return or null if there is no limitreverse- if true, iterate in reverse (descending) order- Returns:
- the iterator
-
keyIteratorUncommitted
Iterate over keys, including keys from uncommitted entries.- Parameters:
from- the first key to returnto- the last key to return or null if there is no limit- Returns:
- the iterator
-
entryIterator
Iterate over entries.- Parameters:
from- the first key to returnto- the last key to return- Returns:
- the iterator
-
entryIterator
Iterate over entries.- Parameters:
from- the first key to returnto- the last key to returnreverse- if true, iterate in reverse (descending) order- Returns:
- the iterator
-
getTransaction
-
getKeyType
-