Package org.h2.mvstore.tx

# Class TransactionStore

java.lang.Object
org.h2.mvstore.tx.TransactionStore

public class TransactionStore extends Object
A store that supports concurrent MVCC read-committed transactions.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`TransactionStore.Change`
A change in a map.
`static interface`
`TransactionStore.RollbackListener`
This listener can be registered with the transaction to be notified of every compensating change during transaction rollback.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final String`
`UNDO_LOG_NAME_PREFIX`
The prefix for undo log entries.

## Constructor Summary

Constructors
Constructor
Description
`TransactionStore(MVStore store)`
Create a new transaction store.
`TransactionStore(MVStore store, DataType<?> dataType)`
`TransactionStore(MVStore store, MetaType<?> metaDataType, DataType<?> dataType, int timeoutMillis)`
Create a new transaction store.

## Method Summary

Modifier and Type
Method
Description
`Transaction`
`begin()`
Begin a new transaction.
`Transaction`
`begin(TransactionStore.RollbackListener listener, int timeoutMillis, int ownerId, IsolationLevel isolationLevel)`
Begin a new transaction.
`void`
`close()`
Close the transaction store.
`void`
`endLeftoverTransactions()`
Commit all transactions that are in the committed state, and rollback all open transactions.
`List<Transaction>`
`getOpenTransactions()`
Get the list of unclosed transactions that have pending writes.
`boolean`
`hasMap(String name)`
Check whether a given map exists.
`void`
`init()`
Initialize the store without any RollbackListener.
`void`
`init(TransactionStore.RollbackListener listener)`
Initialize the store.
`<K, V> MVMap<K,V>`
`openMap(String name, DataType<K> keyType, DataType<V> valueType)`
Open the map with the given name.
`void`
`setMaxTransactionId(int max)`
Set the maximum transaction id, after which ids are re-used.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### UNDO_LOG_NAME_PREFIX

public static final String UNDO_LOG_NAME_PREFIX
The prefix for undo log entries.

See Also:
  - Constant Field Values

## Constructor Details

### TransactionStore

public TransactionStore(MVStore store)
Create a new transaction store.

Parameters:
  `store` - the store

### TransactionStore

public TransactionStore(MVStore store, DataType<?> dataType)

### TransactionStore

public TransactionStore(MVStore store, MetaType<?> metaDataType, DataType<?> dataType, int timeoutMillis)
Create a new transaction store.

Parameters:
  `store` - the store
  `metaDataType` - the data type for type registry map values
  `dataType` - default data type for map keys and values
  `timeoutMillis` - lock acquisition timeout in milliseconds, 0 means no wait

## Method Details

### init

public void init()
Initialize the store without any RollbackListener.

See Also:
  - `init(RollbackListener)`

### init

public void init(TransactionStore.RollbackListener listener)
Initialize the store. This is needed before a transaction can be opened. If the transaction store is corrupt, this method can throw an exception, in which case the store can only be used for reading.

Parameters:
  `listener` - to notify about transaction rollback

### endLeftoverTransactions

public void endLeftoverTransactions()
Commit all transactions that are in the committed state, and rollback all open transactions.

### setMaxTransactionId

public void setMaxTransactionId(int max)
Set the maximum transaction id, after which ids are re-used. If the old transaction is still in use when re-using an old id, the new transaction fails.

Parameters:
  `max` - the maximum id

### hasMap

public boolean hasMap(String name)
Check whether a given map exists.

Parameters:
  `name` - the map name
Returns:
  true if it exists

### getOpenTransactions

public List<Transaction> getOpenTransactions()
Get the list of unclosed transactions that have pending writes.

Returns:
  the list of transactions (sorted by id)

### close

public void close()
Close the transaction store.

### begin

public Transaction begin()
Begin a new transaction.

Returns:
  the transaction

### begin

public Transaction begin(TransactionStore.RollbackListener listener, int timeoutMillis, int ownerId, IsolationLevel isolationLevel)
Begin a new transaction.

Parameters:
  `listener` - to be notified in case of a rollback
  `timeoutMillis` - to wait for a blocking transaction
  `ownerId` - of the owner (Session?) to be reported by getBlockerId
  `isolationLevel` - of new transaction
Returns:
  the transaction

### openMap

public <K, V> MVMap<K,V> openMap(String name, DataType<K> keyType, DataType<V> valueType)
Open the map with the given name.

Type Parameters:
  `K` - the key type
  `V` - the value type
Parameters:
  `name` - the map name
  `keyType` - the key type
  `valueType` - the value type
Returns:
  the map