Documentation ¶
Index ¶
- Constants
- Variables
- func NewStoreError(code StoreErrCode, msg string, args ...interface{}) error
- func WrapEventListenerCtx(ctx context.Context) context.Context
- type DefaultListener
- type Event
- type EventListener
- type EventListenerCtxKey
- type Iterator
- type IteratorImpl
- type KV
- type Key
- type KeyPart
- type KeyValue
- type KeyValueStore
- type KeyValueStoreImpl
- func (d KeyValueStoreImpl) Batch() (baseTx, error)
- func (k *KeyValueStoreImpl) BeginTx(ctx context.Context) (Tx, error)
- func (d KeyValueStoreImpl) CreateTable(_ context.Context, name []byte) error
- func (d KeyValueStoreImpl) Delete(ctx context.Context, table []byte, key Key) error
- func (d KeyValueStoreImpl) DeleteRange(ctx context.Context, table []byte, lKey Key, rKey Key) error
- func (d KeyValueStoreImpl) DropTable(ctx context.Context, name []byte) error
- func (d KeyValueStoreImpl) Get(ctx context.Context, key []byte) ([]byte, error)
- func (k *KeyValueStoreImpl) GetInternalDatabase() (interface{}, error)
- func (k *KeyValueStoreImpl) Insert(ctx context.Context, table []byte, key Key, data *internal.TableData) error
- func (k *KeyValueStoreImpl) Read(ctx context.Context, table []byte, key Key) (Iterator, error)
- func (k *KeyValueStoreImpl) ReadRange(ctx context.Context, table []byte, lkey Key, rkey Key) (Iterator, error)
- func (k *KeyValueStoreImpl) Replace(ctx context.Context, table []byte, key Key, data *internal.TableData) error
- func (d KeyValueStoreImpl) SetVersionstampedKey(ctx context.Context, key []byte, value []byte) error
- func (d KeyValueStoreImpl) SetVersionstampedValue(ctx context.Context, key []byte, value []byte) error
- func (d KeyValueStoreImpl) TableSize(ctx context.Context, name []byte) (int64, error)
- func (k *KeyValueStoreImpl) Update(ctx context.Context, table []byte, key Key, ...) (int32, error)
- func (k *KeyValueStoreImpl) UpdateRange(ctx context.Context, table []byte, lKey Key, rKey Key, ...) (int32, error)
- type KeyValueStoreImplWithMetrics
- func (m *KeyValueStoreImplWithMetrics) BeginTx(ctx context.Context) (Tx, error)
- func (m *KeyValueStoreImplWithMetrics) CreateTable(ctx context.Context, name []byte) (err error)
- func (m *KeyValueStoreImplWithMetrics) Delete(ctx context.Context, table []byte, key Key) (err error)
- func (m *KeyValueStoreImplWithMetrics) DeleteRange(ctx context.Context, table []byte, lKey Key, rKey Key) (err error)
- func (m *KeyValueStoreImplWithMetrics) DropTable(ctx context.Context, name []byte) (err error)
- func (m *KeyValueStoreImplWithMetrics) Get(ctx context.Context, key []byte) (val []byte, err error)
- func (m *KeyValueStoreImplWithMetrics) GetInternalDatabase() (k interface{}, err error)
- func (m *KeyValueStoreImplWithMetrics) Insert(ctx context.Context, table []byte, key Key, data *internal.TableData) (err error)
- func (m *KeyValueStoreImplWithMetrics) Read(ctx context.Context, table []byte, key Key) (it Iterator, err error)
- func (m *KeyValueStoreImplWithMetrics) ReadRange(ctx context.Context, table []byte, lkey Key, rkey Key) (it Iterator, err error)
- func (m *KeyValueStoreImplWithMetrics) Replace(ctx context.Context, table []byte, key Key, data *internal.TableData) (err error)
- func (m *KeyValueStoreImplWithMetrics) SetVersionstampedKey(ctx context.Context, key []byte, value []byte) (err error)
- func (m *KeyValueStoreImplWithMetrics) SetVersionstampedValue(ctx context.Context, key []byte, value []byte) (err error)
- func (m *KeyValueStoreImplWithMetrics) TableSize(ctx context.Context, name []byte) (size int64, err error)
- func (m *KeyValueStoreImplWithMetrics) Update(ctx context.Context, table []byte, key Key, ...) (encoded int32, err error)
- func (m *KeyValueStoreImplWithMetrics) UpdateRange(ctx context.Context, table []byte, lKey Key, rKey Key, ...) (encoded int32, err error)
- type NoopEventListener
- type NoopIterator
- type NoopKV
- func (n *NoopKV) Delete(ctx context.Context, table []byte, key Key) error
- func (n *NoopKV) DeleteRange(ctx context.Context, table []byte, lKey Key, rKey Key) error
- func (n *NoopKV) Get(ctx context.Context, key []byte) ([]byte, error)
- func (n *NoopKV) Insert(ctx context.Context, table []byte, key Key, data *internal.TableData) error
- func (n *NoopKV) Read(ctx context.Context, table []byte, key Key) (Iterator, error)
- func (n *NoopKV) ReadRange(ctx context.Context, table []byte, lkey Key, rkey Key) (Iterator, error)
- func (n *NoopKV) Replace(ctx context.Context, table []byte, key Key, data *internal.TableData) error
- func (n *NoopKV) SetVersionstampedKey(ctx context.Context, key []byte, value []byte) error
- func (n *NoopKV) SetVersionstampedValue(ctx context.Context, key []byte, value []byte) error
- func (n *NoopKV) Update(ctx context.Context, table []byte, key Key, ...) (int32, error)
- func (n *NoopKV) UpdateRange(ctx context.Context, table []byte, lKey Key, rKey Key, ...) (int32, error)
- type NoopKVStore
- func (n *NoopKVStore) BeginTx(_ context.Context) (Tx, error)
- func (n *NoopKVStore) CreateTable(_ context.Context, _ []byte) error
- func (n *NoopKVStore) DropTable(_ context.Context, _ []byte) error
- func (n *NoopKVStore) GetInternalDatabase() (interface{}, error)
- func (n *NoopKVStore) TableSize(_ context.Context, _ []byte) (int64, error)
- type NoopTx
- type StoreErrCode
- type StoreError
- type Tx
- type TxImpl
- func (t TxImpl) Commit(ctx context.Context) error
- func (t TxImpl) Delete(ctx context.Context, table []byte, key Key) error
- func (t TxImpl) DeleteRange(ctx context.Context, table []byte, lKey Key, rKey Key) error
- func (t TxImpl) Get(_ context.Context, key []byte) ([]byte, error)
- func (tx *TxImpl) Insert(ctx context.Context, table []byte, key Key, data *internal.TableData) error
- func (t TxImpl) IsRetriable() bool
- func (tx *TxImpl) Read(ctx context.Context, table []byte, key Key) (Iterator, error)
- func (tx *TxImpl) ReadRange(ctx context.Context, table []byte, lkey Key, rkey Key) (Iterator, error)
- func (tx *TxImpl) Replace(ctx context.Context, table []byte, key Key, data *internal.TableData) error
- func (t TxImpl) Rollback(ctx context.Context) error
- func (t TxImpl) SetVersionstampedKey(ctx context.Context, key []byte, value []byte) error
- func (t TxImpl) SetVersionstampedValue(_ context.Context, key []byte, value []byte) error
- func (tx *TxImpl) Update(ctx context.Context, table []byte, key Key, ...) (int32, error)
- func (tx *TxImpl) UpdateRange(ctx context.Context, table []byte, lKey Key, rKey Key, ...) (int32, error)
- type TxImplWithMetrics
- func (m *TxImplWithMetrics) Commit(ctx context.Context) (err error)
- func (m *TxImplWithMetrics) Delete(ctx context.Context, table []byte, key Key) (err error)
- func (m *TxImplWithMetrics) DeleteRange(ctx context.Context, table []byte, lKey Key, rKey Key) (err error)
- func (m *TxImplWithMetrics) Get(ctx context.Context, key []byte) (val []byte, err error)
- func (m *TxImplWithMetrics) Insert(ctx context.Context, table []byte, key Key, data *internal.TableData) (err error)
- func (m *TxImplWithMetrics) IsRetriable() bool
- func (m *TxImplWithMetrics) Read(ctx context.Context, table []byte, key Key) (it Iterator, err error)
- func (m *TxImplWithMetrics) ReadRange(ctx context.Context, table []byte, lkey Key, rkey Key) (it Iterator, err error)
- func (m *TxImplWithMetrics) Replace(ctx context.Context, table []byte, key Key, data *internal.TableData) (err error)
- func (m *TxImplWithMetrics) Rollback(ctx context.Context) (err error)
- func (m *TxImplWithMetrics) SetVersionstampedKey(ctx context.Context, key []byte, value []byte) (err error)
- func (m *TxImplWithMetrics) SetVersionstampedValue(ctx context.Context, key []byte, value []byte) (err error)
- func (m *TxImplWithMetrics) Update(ctx context.Context, table []byte, key Key, ...) (encoded int32, err error)
- func (m *TxImplWithMetrics) UpdateRange(ctx context.Context, table []byte, lKey Key, rKey Key, ...) (encoded int32, err error)
Constants ¶
const ( InsertEvent = "insert" ReplaceEvent = "replace" UpdateEvent = "update" UpdateRangeEvent = "updateRange" DeleteEvent = "delete" DeleteRangeEvent = "deleteRange" )
Variables ¶
var ( // ErrDuplicateKey is returned when an insert call is made for a key that already exist. ErrDuplicateKey = NewStoreError(ErrCodeDuplicateKey, "duplicate key value, violates key constraint") // ErrConflictingTransaction is returned when there are conflicting transactions. ErrConflictingTransaction = NewStoreError(ErrCodeConflictingTransaction, "transaction not committed due to conflict with another transaction") )
Functions ¶
func NewStoreError ¶
func NewStoreError(code StoreErrCode, msg string, args ...interface{}) error
Types ¶
type DefaultListener ¶
type DefaultListener struct {
Events []*Event
}
func (*DefaultListener) GetEvents ¶
func (l *DefaultListener) GetEvents() []*Event
func (*DefaultListener) OnClearRange ¶
func (l *DefaultListener) OnClearRange(op string, table []byte, lKey []byte, rKey []byte)
type EventListener ¶
type EventListener interface { // OnSet buffers insert/replace/update events OnSet(op string, table []byte, key []byte, data []byte) // OnClearRange buffers delete events OnClearRange(op string, table []byte, lKey []byte, rKey []byte) // GetEvents is used to access buffered events. These events may be shared by different participants callers are // strongly discourage to modify the event and if needed copy it to some other buffer. Once transaction completes // session may discard all the buffered events. GetEvents() []*Event }
EventListener is listener to buffer all the changes in a transaction. It is attached by server layer in the context, and it is only responsible for buffering of the events but doesn't participate in the outcome of the transaction i.e. EventListener has no knowledge whether the transaction was committed or rolled back. The lifecycle of this listener is managed by QuerySession in server package.
func GetEventListener ¶
func GetEventListener(ctx context.Context) EventListener
type EventListenerCtxKey ¶
type EventListenerCtxKey struct{}
type IteratorImpl ¶
type IteratorImpl struct {
// contains filtered or unexported fields
}
func (*IteratorImpl) Err ¶
func (i *IteratorImpl) Err() error
func (*IteratorImpl) Next ¶
func (i *IteratorImpl) Next(value *KeyValue) bool
type KV ¶
type KV interface { Insert(ctx context.Context, table []byte, key Key, data *internal.TableData) error Replace(ctx context.Context, table []byte, key Key, data *internal.TableData) error Delete(ctx context.Context, table []byte, key Key) error DeleteRange(ctx context.Context, table []byte, lKey Key, rKey Key) error Read(ctx context.Context, table []byte, key Key) (Iterator, error) ReadRange(ctx context.Context, table []byte, lkey Key, rkey Key) (Iterator, error) Update(ctx context.Context, table []byte, key Key, apply func(*internal.TableData) (*internal.TableData, error)) (int32, error) UpdateRange(ctx context.Context, table []byte, lKey Key, rKey Key, apply func(*internal.TableData) (*internal.TableData, error)) (int32, error) SetVersionstampedValue(ctx context.Context, key []byte, value []byte) error SetVersionstampedKey(ctx context.Context, key []byte, value []byte) error Get(ctx context.Context, key []byte) ([]byte, error) }
type KeyValueStore ¶
type KeyValueStore interface { KV BeginTx(ctx context.Context) (Tx, error) CreateTable(ctx context.Context, name []byte) error DropTable(ctx context.Context, name []byte) error GetInternalDatabase() (interface{}, error) // TODO: CDC remove workaround TableSize(ctx context.Context, name []byte) (int64, error) }
func NewKeyValueStore ¶
func NewKeyValueStore(cfg *config.FoundationDBConfig) (KeyValueStore, error)
func NewKeyValueStoreWithMetrics ¶
func NewKeyValueStoreWithMetrics(cfg *config.FoundationDBConfig) (KeyValueStore, error)
type KeyValueStoreImpl ¶
type KeyValueStoreImpl struct {
// contains filtered or unexported fields
}
func (*KeyValueStoreImpl) BeginTx ¶
func (k *KeyValueStoreImpl) BeginTx(ctx context.Context) (Tx, error)
func (KeyValueStoreImpl) CreateTable ¶
func (KeyValueStoreImpl) DeleteRange ¶
func (*KeyValueStoreImpl) GetInternalDatabase ¶
func (k *KeyValueStoreImpl) GetInternalDatabase() (interface{}, error)
func (KeyValueStoreImpl) SetVersionstampedKey ¶
func (KeyValueStoreImpl) SetVersionstampedValue ¶
func (KeyValueStoreImpl) TableSize ¶
TableSize calculates approximate table size in bytes It also works with the prefix of the table name, allowing to calculate sizes of multiple table with the same prefix
type KeyValueStoreImplWithMetrics ¶
type KeyValueStoreImplWithMetrics struct {
// contains filtered or unexported fields
}
func (*KeyValueStoreImplWithMetrics) BeginTx ¶
func (m *KeyValueStoreImplWithMetrics) BeginTx(ctx context.Context) (Tx, error)
func (*KeyValueStoreImplWithMetrics) CreateTable ¶
func (m *KeyValueStoreImplWithMetrics) CreateTable(ctx context.Context, name []byte) (err error)
func (*KeyValueStoreImplWithMetrics) DeleteRange ¶
func (*KeyValueStoreImplWithMetrics) DropTable ¶
func (m *KeyValueStoreImplWithMetrics) DropTable(ctx context.Context, name []byte) (err error)
func (*KeyValueStoreImplWithMetrics) GetInternalDatabase ¶
func (m *KeyValueStoreImplWithMetrics) GetInternalDatabase() (k interface{}, err error)
func (*KeyValueStoreImplWithMetrics) SetVersionstampedKey ¶
func (*KeyValueStoreImplWithMetrics) SetVersionstampedValue ¶
type NoopEventListener ¶
type NoopEventListener struct{}
func (*NoopEventListener) GetEvents ¶
func (l *NoopEventListener) GetEvents() []*Event
func (*NoopEventListener) OnClearRange ¶
func (l *NoopEventListener) OnClearRange(op string, table []byte, lKey []byte, rKey []byte)
type NoopIterator ¶
type NoopIterator struct{}
func (*NoopIterator) Err ¶
func (n *NoopIterator) Err() error
func (*NoopIterator) Next ¶
func (n *NoopIterator) Next(value *KeyValue) bool
type NoopKV ¶
type NoopKV struct{}
func (*NoopKV) DeleteRange ¶
func (*NoopKV) SetVersionstampedKey ¶
func (*NoopKV) SetVersionstampedValue ¶
type NoopKVStore ¶
type NoopKVStore struct {
*NoopKV
}
NoopKVStore is a noop store, useful if we need to profile/debug only compute and not with the storage. This can be initialized in main.go instead of using default kvStore.
func (*NoopKVStore) CreateTable ¶
func (n *NoopKVStore) CreateTable(_ context.Context, _ []byte) error
func (*NoopKVStore) GetInternalDatabase ¶
func (n *NoopKVStore) GetInternalDatabase() (interface{}, error)
type StoreErrCode ¶
type StoreErrCode byte
const ( ErrCodeInvalid StoreErrCode = 0x00 ErrCodeDuplicateKey StoreErrCode = 0x01 ErrCodeConflictingTransaction StoreErrCode = 0x02 )
type StoreError ¶
type StoreError struct {
// contains filtered or unexported fields
}
func (StoreError) Error ¶
func (se StoreError) Error() string
type TxImpl ¶
type TxImpl struct {
// contains filtered or unexported fields
}
func (TxImpl) DeleteRange ¶
func (TxImpl) IsRetriable ¶
func (t TxImpl) IsRetriable() bool
IsRetriable returns true if transaction can be retried after error
func (TxImpl) SetVersionstampedKey ¶
func (TxImpl) SetVersionstampedValue ¶
type TxImplWithMetrics ¶
type TxImplWithMetrics struct {
// contains filtered or unexported fields
}
func (*TxImplWithMetrics) Commit ¶
func (m *TxImplWithMetrics) Commit(ctx context.Context) (err error)
func (*TxImplWithMetrics) DeleteRange ¶
func (*TxImplWithMetrics) IsRetriable ¶
func (m *TxImplWithMetrics) IsRetriable() bool
func (*TxImplWithMetrics) Rollback ¶
func (m *TxImplWithMetrics) Rollback(ctx context.Context) (err error)