org.h2.mvstore.tx

## Class TransactionStore

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

    public class TransactionStore
    extends java.lang.Object

A store that supports concurrent MVCC read-committed transactions.

### Nested Class Summary

Nested Classes
`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
`static java.lang.String` `UNDO_LOG_NAME_PREFIX` The prefix for undo log entries.

### Constructor Summary

Constructors
Constructor and 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

All Methods Instance Methods Concrete Methods
`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.
`java.util.List<Transaction>` `getOpenTransactions()` Get the list of unclosed transactions that have pending writes.
`boolean` `hasMap(java.lang.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(java.lang.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 Detail

#### UNDO_LOG_NAME_PREFIX

    public static final java.lang.String UNDO_LOG_NAME_PREFIX

The prefix for undo log entries.

See Also:
  Constant Field Values

### Constructor Detail

#### 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 Detail

#### 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(java.lang.String name)

Check whether a given map exists.

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

#### getOpenTransactions

    public java.util.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(java.lang.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