Documentation ¶
Index ¶
- Variables
- type Manager
- type SessionCtx
- type StagedDB
- type Tx
- type TxSession
- func (s *TxSession) Commit(ctx context.Context) error
- func (s *TxSession) Context() *SessionCtx
- func (s *TxSession) Delete(ctx context.Context, key keys.Key) error
- func (s *TxSession) Get(ctx context.Context, key []byte) ([]byte, error)
- func (s *TxSession) GetTxCtx() *api.TransactionCtx
- func (s *TxSession) Insert(ctx context.Context, key keys.Key, data *internal.TableData) error
- func (s *TxSession) Read(ctx context.Context, key keys.Key) (kv.Iterator, error)
- func (s *TxSession) Replace(ctx context.Context, key keys.Key, data *internal.TableData) error
- func (s *TxSession) Rollback(ctx context.Context) error
- func (s *TxSession) SetVersionstampedKey(ctx context.Context, key []byte, value []byte) error
- func (s *TxSession) SetVersionstampedValue(ctx context.Context, key []byte, value []byte) error
- func (s *TxSession) Update(ctx context.Context, key keys.Key, ...) (int32, error)
Constants ¶
This section is empty.
Variables ¶
var ( // ErrSessionIsNotStarted is returned when the session is not started but is getting used ErrSessionIsNotStarted = api.Errorf(api.Code_INTERNAL, "session not started") // ErrSessionIsGone is returned when the session is gone but getting used ErrSessionIsGone = api.Errorf(api.Code_INTERNAL, "session is gone") )
Functions ¶
This section is empty.
Types ¶
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager is used to track all the sessions and provide all the functionality related to transactions. Once created this will create a session tracker for tracking the sessions.
func NewManager ¶
func NewManager(kvStore kv.KeyValueStore) *Manager
type SessionCtx ¶
type SessionCtx struct {
// contains filtered or unexported fields
}
SessionCtx is used to store any baggage for the lifetime of the transaction. We use it to stage the database inside a transaction when the transaction is performing any DDLs.
func (*SessionCtx) GetStagedDatabase ¶
func (c *SessionCtx) GetStagedDatabase() StagedDB
func (*SessionCtx) StageDatabase ¶
func (c *SessionCtx) StageDatabase(db StagedDB)
type StagedDB ¶
type StagedDB interface { Name() string GetCollection(string) *schema.DefaultCollection }
type Tx ¶
type Tx interface { Context() *SessionCtx GetTxCtx() *api.TransactionCtx Insert(ctx context.Context, key keys.Key, data *internal.TableData) error Replace(ctx context.Context, key keys.Key, data *internal.TableData) error Update(ctx context.Context, key keys.Key, apply func(*internal.TableData) (*internal.TableData, error)) (int32, error) Delete(ctx context.Context, key keys.Key) error Read(ctx context.Context, key keys.Key) (kv.Iterator, error) Get(ctx context.Context, key []byte) ([]byte, error) Commit(ctx context.Context) error Rollback(ctx context.Context) error SetVersionstampedValue(ctx context.Context, key []byte, value []byte) error SetVersionstampedKey(ctx context.Context, key []byte, value []byte) error }
Tx interface exposes a method to execute and then other method to end the transaction. When Tx is returned at that point transaction is already started so no need for explicit start.
type TxSession ¶
TxSession is used to start an explicit transaction. Caller can control whether this transaction's session needs to be tracked inside session tracker. Tracker a session is useful if the object is shared across the requests otherwise it is not useful in the same request flow.
func (*TxSession) Context ¶
func (s *TxSession) Context() *SessionCtx
func (*TxSession) GetTxCtx ¶
func (s *TxSession) GetTxCtx() *api.TransactionCtx