themis

package module
v0.0.0-...-dbb9966 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 31, 2015 License: MIT Imports: 18 Imported by: 2

README

go-themis

Build Status

go-themis is a Go client for pingcap/themis.

Themis provides cross-row/cross-table transaction on HBase based on google's Percolator.

go-themis is depends on pingcap/go-hbase.

Install:

go get -u github.com/pingcap/go-themis

Example:

tx := themis.NewTxn(c, oracles.NewLocalOracle())
put := hbase.NewPut([]byte("Row1"))
put.AddValue([]byte("cf"), []byte("q"), []byte("value"))

put2 := hbase.NewPut([]byte("Row2"))
put2.AddValue([]byte("cf"), []byte("q"), []byte("value"))

tx.Put(tblName, put)
tx.Put(tblName, put2)

tx.Commit()

Documentation

Overview

Package Themis is a generated protocol buffer package.

It is generated from these files:

Themis.proto

It has these top-level messages:

ThemisGetRequest
ThemisBatchGetRequest
ThemisBatchGetResponse
ThemisPrewrite
ThemisPrewriteRequest
ThemisPrewriteResponse
ThemisBatchPrewriteSecondaryRequest
ThemisBatchPrewriteSecondaryResponse
ThemisPrewriteResult
ThemisCommitRequest
ThemisCommitResponse
ThemisBatchCommitSecondaryRequest
ThemisBatchCommitSecondaryResponse
ThemisBatchCommitSecondaryResult
ThemisCommit
EraseLockRequest
EraseLockResponse
LockExpiredRequest
LockExpiredResponse

Index

Constants

View Source
const (
	ThemisServiceName string = "ThemisService"
)

Variables

View Source
var (
	PutFamilyName  = []byte("#p")
	DelFamilyName  = []byte("#d")
	LockFamilyName = []byte("L")
)
View Source
var (
	ErrLockNotExpired  = errors.New("lock not expired")
	ErrCleanLockFailed = errors.New("clean lock failed")
	ErrWrongRegion     = errors.New("wrong region, please retry")
	ErrTooManyRows     = errors.New("too many rows in one transaction")
	ErrRetryable       = errors.New("try again later")
)
View Source
var (
	// ErrSimulated is used when maybe rollback occurs error too.
	ErrSimulated = errors.New("simulated error")
)

Functions

This section is empty.

Types

type EraseLockRequest

type EraseLockRequest struct {
	Row              []byte  `protobuf:"bytes,1,req,name=row" json:"row,omitempty"`
	Family           []byte  `protobuf:"bytes,2,req,name=family" json:"family,omitempty"`
	Qualifier        []byte  `protobuf:"bytes,3,req,name=qualifier" json:"qualifier,omitempty"`
	PrewriteTs       *uint64 `protobuf:"varint,4,req,name=prewriteTs" json:"prewriteTs,omitempty"`
	XXX_unrecognized []byte  `json:"-"`
}

func (*EraseLockRequest) GetFamily

func (m *EraseLockRequest) GetFamily() []byte

func (*EraseLockRequest) GetPrewriteTs

func (m *EraseLockRequest) GetPrewriteTs() uint64

func (*EraseLockRequest) GetQualifier

func (m *EraseLockRequest) GetQualifier() []byte

func (*EraseLockRequest) GetRow

func (m *EraseLockRequest) GetRow() []byte

func (*EraseLockRequest) ProtoMessage

func (*EraseLockRequest) ProtoMessage()

func (*EraseLockRequest) Reset

func (m *EraseLockRequest) Reset()

func (*EraseLockRequest) String

func (m *EraseLockRequest) String() string

type EraseLockResponse

type EraseLockResponse struct {
	Lock             []byte `protobuf:"bytes,1,opt,name=lock" json:"lock,omitempty"`
	XXX_unrecognized []byte `json:"-"`
}

func (*EraseLockResponse) GetLock

func (m *EraseLockResponse) GetLock() []byte

func (*EraseLockResponse) ProtoMessage

func (*EraseLockResponse) ProtoMessage()

func (*EraseLockResponse) Reset

func (m *EraseLockResponse) Reset()

func (*EraseLockResponse) String

func (m *EraseLockResponse) String() string

type Lock

type Lock interface {
	// SetCoordinate sets lock's coordinate
	SetCoordinate(c *hbase.ColumnCoordinate)
	// Coordinate returns the lock's coordinate
	Coordinate() *hbase.ColumnCoordinate
	// Timestamp returns startTs of the transction which owned this lock
	Timestamp() uint64
	// SetExpired sets the lock's expired status.
	SetExpired(b bool)
	// IsExpired returns if lock is expired.
	IsExpired() bool
	// Type returns the lock's type, Put or Delete
	Type() hbase.Type
	// Role returns LockRole, primary or secondary
	Role() LockRole
	// not used now
	Context() interface{}
	// valid only  Role == Primary
	Secondaries() []Lock
	// Primary returns the primary lock of this lock
	Primary() Lock
	// Encode encodes the lock to byte slice
	Encode() []byte
}

type LockExpiredRequest

type LockExpiredRequest struct {
	Timestamp        *uint64 `protobuf:"varint,1,req,name=timestamp" json:"timestamp,omitempty"`
	XXX_unrecognized []byte  `json:"-"`
}

func (*LockExpiredRequest) GetTimestamp

func (m *LockExpiredRequest) GetTimestamp() uint64

func (*LockExpiredRequest) ProtoMessage

func (*LockExpiredRequest) ProtoMessage()

func (*LockExpiredRequest) Reset

func (m *LockExpiredRequest) Reset()

func (*LockExpiredRequest) String

func (m *LockExpiredRequest) String() string

type LockExpiredResponse

type LockExpiredResponse struct {
	Expired          *bool  `protobuf:"varint,1,req,name=expired" json:"expired,omitempty"`
	XXX_unrecognized []byte `json:"-"`
}

func (*LockExpiredResponse) GetExpired

func (m *LockExpiredResponse) GetExpired() bool

func (*LockExpiredResponse) ProtoMessage

func (*LockExpiredResponse) ProtoMessage()

func (*LockExpiredResponse) Reset

func (m *LockExpiredResponse) Reset()

func (*LockExpiredResponse) String

func (m *LockExpiredResponse) String() string

type LockManager

type LockManager interface {
	// CleanLock if clean lock success, first return value is transction's commit
	// timestamp, otherwise, the second return value is transction's primary
	// lock.
	CleanLock(c *hbase.ColumnCoordinate, prewriteTs uint64) (uint64, Lock, error)
	// EraseLockAndData removes lock and data.
	EraseLockAndData(c *hbase.ColumnCoordinate, prewriteTs uint64) error
	// GetCommitTimestamp returns a committed transction's commit timestamp.
	GetCommitTimestamp(c *hbase.ColumnCoordinate, prewriteTs uint64) (uint64, error)
	// [startTs, endTs]
	IsLockExists(c *hbase.ColumnCoordinate, startTs, endTs uint64) (bool, error)
}

type LockRole

type LockRole int

LockRole is the role of lock

const (
	// RolePrimary means this row is primary
	RolePrimary LockRole = iota
	// RoleSecondary means this row is secondary
	RoleSecondary
)

func (LockRole) String

func (l LockRole) String() string

type ThemisBatchCommitSecondaryRequest

type ThemisBatchCommitSecondaryRequest struct {
	ThemisCommit     []*ThemisCommit `protobuf:"bytes,1,rep,name=themisCommit" json:"themisCommit,omitempty"`
	XXX_unrecognized []byte          `json:"-"`
}

func (*ThemisBatchCommitSecondaryRequest) GetThemisCommit

func (m *ThemisBatchCommitSecondaryRequest) GetThemisCommit() []*ThemisCommit

func (*ThemisBatchCommitSecondaryRequest) ProtoMessage

func (*ThemisBatchCommitSecondaryRequest) ProtoMessage()

func (*ThemisBatchCommitSecondaryRequest) Reset

func (*ThemisBatchCommitSecondaryRequest) String

type ThemisBatchCommitSecondaryResponse

type ThemisBatchCommitSecondaryResponse struct {
	BatchCommitSecondaryResult []*ThemisBatchCommitSecondaryResult `protobuf:"bytes,1,rep,name=batchCommitSecondaryResult" json:"batchCommitSecondaryResult,omitempty"`
	XXX_unrecognized           []byte                              `json:"-"`
}

func (*ThemisBatchCommitSecondaryResponse) GetBatchCommitSecondaryResult

func (m *ThemisBatchCommitSecondaryResponse) GetBatchCommitSecondaryResult() []*ThemisBatchCommitSecondaryResult

func (*ThemisBatchCommitSecondaryResponse) ProtoMessage

func (*ThemisBatchCommitSecondaryResponse) ProtoMessage()

func (*ThemisBatchCommitSecondaryResponse) Reset

func (*ThemisBatchCommitSecondaryResponse) String

type ThemisBatchCommitSecondaryResult

type ThemisBatchCommitSecondaryResult struct {
	Row              []byte `protobuf:"bytes,1,req,name=row" json:"row,omitempty"`
	Success          *bool  `protobuf:"varint,2,req,name=success" json:"success,omitempty"`
	XXX_unrecognized []byte `json:"-"`
}

func (*ThemisBatchCommitSecondaryResult) GetRow

func (m *ThemisBatchCommitSecondaryResult) GetRow() []byte

func (*ThemisBatchCommitSecondaryResult) GetSuccess

func (m *ThemisBatchCommitSecondaryResult) GetSuccess() bool

func (*ThemisBatchCommitSecondaryResult) ProtoMessage

func (*ThemisBatchCommitSecondaryResult) ProtoMessage()

func (*ThemisBatchCommitSecondaryResult) Reset

func (*ThemisBatchCommitSecondaryResult) String

type ThemisBatchGetRequest

type ThemisBatchGetRequest struct {
	Gets             []*Client.Get `protobuf:"bytes,1,rep,name=gets" json:"gets,omitempty"`
	StartTs          *uint64       `protobuf:"varint,2,req,name=startTs" json:"startTs,omitempty"`
	IgnoreLock       *bool         `protobuf:"varint,3,req,name=ignoreLock" json:"ignoreLock,omitempty"`
	XXX_unrecognized []byte        `json:"-"`
}

func (*ThemisBatchGetRequest) GetGets

func (m *ThemisBatchGetRequest) GetGets() []*Client.Get

func (*ThemisBatchGetRequest) GetIgnoreLock

func (m *ThemisBatchGetRequest) GetIgnoreLock() bool

func (*ThemisBatchGetRequest) GetStartTs

func (m *ThemisBatchGetRequest) GetStartTs() uint64

func (*ThemisBatchGetRequest) ProtoMessage

func (*ThemisBatchGetRequest) ProtoMessage()

func (*ThemisBatchGetRequest) Reset

func (m *ThemisBatchGetRequest) Reset()

func (*ThemisBatchGetRequest) String

func (m *ThemisBatchGetRequest) String() string

type ThemisBatchGetResponse

type ThemisBatchGetResponse struct {
	Rs               []*Client.Result `protobuf:"bytes,1,rep,name=rs" json:"rs,omitempty"`
	XXX_unrecognized []byte           `json:"-"`
}

func (*ThemisBatchGetResponse) GetRs

func (m *ThemisBatchGetResponse) GetRs() []*Client.Result

func (*ThemisBatchGetResponse) ProtoMessage

func (*ThemisBatchGetResponse) ProtoMessage()

func (*ThemisBatchGetResponse) Reset

func (m *ThemisBatchGetResponse) Reset()

func (*ThemisBatchGetResponse) String

func (m *ThemisBatchGetResponse) String() string

type ThemisBatchPrewriteSecondaryRequest

type ThemisBatchPrewriteSecondaryRequest struct {
	ThemisPrewrite   []*ThemisPrewrite `protobuf:"bytes,1,rep,name=themisPrewrite" json:"themisPrewrite,omitempty"`
	PrewriteTs       *uint64           `protobuf:"varint,2,req,name=prewriteTs" json:"prewriteTs,omitempty"`
	SecondaryLock    []byte            `protobuf:"bytes,3,req,name=secondaryLock" json:"secondaryLock,omitempty"`
	XXX_unrecognized []byte            `json:"-"`
}

func (*ThemisBatchPrewriteSecondaryRequest) GetPrewriteTs

func (m *ThemisBatchPrewriteSecondaryRequest) GetPrewriteTs() uint64

func (*ThemisBatchPrewriteSecondaryRequest) GetSecondaryLock

func (m *ThemisBatchPrewriteSecondaryRequest) GetSecondaryLock() []byte

func (*ThemisBatchPrewriteSecondaryRequest) GetThemisPrewrite

func (m *ThemisBatchPrewriteSecondaryRequest) GetThemisPrewrite() []*ThemisPrewrite

func (*ThemisBatchPrewriteSecondaryRequest) ProtoMessage

func (*ThemisBatchPrewriteSecondaryRequest) ProtoMessage()

func (*ThemisBatchPrewriteSecondaryRequest) Reset

func (*ThemisBatchPrewriteSecondaryRequest) String

type ThemisBatchPrewriteSecondaryResponse

type ThemisBatchPrewriteSecondaryResponse struct {
	ThemisPrewriteResult []*ThemisPrewriteResult `protobuf:"bytes,1,rep,name=themisPrewriteResult" json:"themisPrewriteResult,omitempty"`
	RowsNotInRegion      [][]byte                `protobuf:"bytes,2,rep,name=rowsNotInRegion" json:"rowsNotInRegion,omitempty"`
	XXX_unrecognized     []byte                  `json:"-"`
}

func (*ThemisBatchPrewriteSecondaryResponse) GetRowsNotInRegion

func (m *ThemisBatchPrewriteSecondaryResponse) GetRowsNotInRegion() [][]byte

func (*ThemisBatchPrewriteSecondaryResponse) GetThemisPrewriteResult

func (m *ThemisBatchPrewriteSecondaryResponse) GetThemisPrewriteResult() []*ThemisPrewriteResult

func (*ThemisBatchPrewriteSecondaryResponse) ProtoMessage

func (*ThemisBatchPrewriteSecondaryResponse) ProtoMessage()

func (*ThemisBatchPrewriteSecondaryResponse) Reset

func (*ThemisBatchPrewriteSecondaryResponse) String

type ThemisCommit

type ThemisCommit struct {
	Row              []byte       `protobuf:"bytes,1,req,name=row" json:"row,omitempty"`
	Mutations        []*Cell.Cell `protobuf:"bytes,2,rep,name=mutations" json:"mutations,omitempty"`
	PrewriteTs       *uint64      `protobuf:"varint,3,req,name=prewriteTs" json:"prewriteTs,omitempty"`
	CommitTs         *uint64      `protobuf:"varint,4,req,name=commitTs" json:"commitTs,omitempty"`
	PrimaryIndex     *int32       `protobuf:"varint,5,req,name=primaryIndex" json:"primaryIndex,omitempty"`
	XXX_unrecognized []byte       `json:"-"`
}

func (*ThemisCommit) GetCommitTs

func (m *ThemisCommit) GetCommitTs() uint64

func (*ThemisCommit) GetMutations

func (m *ThemisCommit) GetMutations() []*Cell.Cell

func (*ThemisCommit) GetPrewriteTs

func (m *ThemisCommit) GetPrewriteTs() uint64

func (*ThemisCommit) GetPrimaryIndex

func (m *ThemisCommit) GetPrimaryIndex() int32

func (*ThemisCommit) GetRow

func (m *ThemisCommit) GetRow() []byte

func (*ThemisCommit) ProtoMessage

func (*ThemisCommit) ProtoMessage()

func (*ThemisCommit) Reset

func (m *ThemisCommit) Reset()

func (*ThemisCommit) String

func (m *ThemisCommit) String() string

type ThemisCommitRequest

type ThemisCommitRequest struct {
	ThemisCommit     *ThemisCommit `protobuf:"bytes,1,req,name=themisCommit" json:"themisCommit,omitempty"`
	XXX_unrecognized []byte        `json:"-"`
}

func (*ThemisCommitRequest) GetThemisCommit

func (m *ThemisCommitRequest) GetThemisCommit() *ThemisCommit

func (*ThemisCommitRequest) ProtoMessage

func (*ThemisCommitRequest) ProtoMessage()

func (*ThemisCommitRequest) Reset

func (m *ThemisCommitRequest) Reset()

func (*ThemisCommitRequest) String

func (m *ThemisCommitRequest) String() string

type ThemisCommitResponse

type ThemisCommitResponse struct {
	Result           *bool  `protobuf:"varint,1,req,name=result" json:"result,omitempty"`
	XXX_unrecognized []byte `json:"-"`
}

func (*ThemisCommitResponse) GetResult

func (m *ThemisCommitResponse) GetResult() bool

func (*ThemisCommitResponse) ProtoMessage

func (*ThemisCommitResponse) ProtoMessage()

func (*ThemisCommitResponse) Reset

func (m *ThemisCommitResponse) Reset()

func (*ThemisCommitResponse) String

func (m *ThemisCommitResponse) String() string

type ThemisGetRequest

type ThemisGetRequest struct {
	Get              *Client.Get `protobuf:"bytes,1,req,name=get" json:"get,omitempty"`
	StartTs          *uint64     `protobuf:"varint,2,req,name=startTs" json:"startTs,omitempty"`
	IgnoreLock       *bool       `protobuf:"varint,3,req,name=ignoreLock" json:"ignoreLock,omitempty"`
	XXX_unrecognized []byte      `json:"-"`
}

func (*ThemisGetRequest) GetGet

func (m *ThemisGetRequest) GetGet() *Client.Get

func (*ThemisGetRequest) GetIgnoreLock

func (m *ThemisGetRequest) GetIgnoreLock() bool

func (*ThemisGetRequest) GetStartTs

func (m *ThemisGetRequest) GetStartTs() uint64

func (*ThemisGetRequest) ProtoMessage

func (*ThemisGetRequest) ProtoMessage()

func (*ThemisGetRequest) Reset

func (m *ThemisGetRequest) Reset()

func (*ThemisGetRequest) String

func (m *ThemisGetRequest) String() string

type ThemisPrewrite

type ThemisPrewrite struct {
	Row              []byte       `protobuf:"bytes,1,req,name=row" json:"row,omitempty"`
	Mutations        []*Cell.Cell `protobuf:"bytes,2,rep,name=mutations" json:"mutations,omitempty"`
	XXX_unrecognized []byte       `json:"-"`
}

func (*ThemisPrewrite) GetMutations

func (m *ThemisPrewrite) GetMutations() []*Cell.Cell

func (*ThemisPrewrite) GetRow

func (m *ThemisPrewrite) GetRow() []byte

func (*ThemisPrewrite) ProtoMessage

func (*ThemisPrewrite) ProtoMessage()

func (*ThemisPrewrite) Reset

func (m *ThemisPrewrite) Reset()

func (*ThemisPrewrite) String

func (m *ThemisPrewrite) String() string

type ThemisPrewriteRequest

type ThemisPrewriteRequest struct {
	ThemisPrewrite   *ThemisPrewrite `protobuf:"bytes,1,req,name=themisPrewrite" json:"themisPrewrite,omitempty"`
	PrewriteTs       *uint64         `protobuf:"varint,2,req,name=prewriteTs" json:"prewriteTs,omitempty"`
	SecondaryLock    []byte          `protobuf:"bytes,3,req,name=secondaryLock" json:"secondaryLock,omitempty"`
	PrimaryLock      []byte          `protobuf:"bytes,4,req,name=primaryLock" json:"primaryLock,omitempty"`
	PrimaryIndex     *int32          `protobuf:"varint,5,req,name=primaryIndex" json:"primaryIndex,omitempty"`
	XXX_unrecognized []byte          `json:"-"`
}

func (*ThemisPrewriteRequest) GetPrewriteTs

func (m *ThemisPrewriteRequest) GetPrewriteTs() uint64

func (*ThemisPrewriteRequest) GetPrimaryIndex

func (m *ThemisPrewriteRequest) GetPrimaryIndex() int32

func (*ThemisPrewriteRequest) GetPrimaryLock

func (m *ThemisPrewriteRequest) GetPrimaryLock() []byte

func (*ThemisPrewriteRequest) GetSecondaryLock

func (m *ThemisPrewriteRequest) GetSecondaryLock() []byte

func (*ThemisPrewriteRequest) GetThemisPrewrite

func (m *ThemisPrewriteRequest) GetThemisPrewrite() *ThemisPrewrite

func (*ThemisPrewriteRequest) ProtoMessage

func (*ThemisPrewriteRequest) ProtoMessage()

func (*ThemisPrewriteRequest) Reset

func (m *ThemisPrewriteRequest) Reset()

func (*ThemisPrewriteRequest) String

func (m *ThemisPrewriteRequest) String() string

type ThemisPrewriteResponse

type ThemisPrewriteResponse struct {
	ThemisPrewriteResult *ThemisPrewriteResult `protobuf:"bytes,1,opt,name=themisPrewriteResult" json:"themisPrewriteResult,omitempty"`
	XXX_unrecognized     []byte                `json:"-"`
}

func (*ThemisPrewriteResponse) GetThemisPrewriteResult

func (m *ThemisPrewriteResponse) GetThemisPrewriteResult() *ThemisPrewriteResult

func (*ThemisPrewriteResponse) ProtoMessage

func (*ThemisPrewriteResponse) ProtoMessage()

func (*ThemisPrewriteResponse) Reset

func (m *ThemisPrewriteResponse) Reset()

func (*ThemisPrewriteResponse) String

func (m *ThemisPrewriteResponse) String() string

type ThemisPrewriteResult

type ThemisPrewriteResult struct {
	NewerWriteTs     *int64 `protobuf:"varint,1,req,name=newerWriteTs" json:"newerWriteTs,omitempty"`
	ExistLock        []byte `protobuf:"bytes,2,req,name=existLock" json:"existLock,omitempty"`
	Family           []byte `protobuf:"bytes,3,req,name=family" json:"family,omitempty"`
	Qualifier        []byte `protobuf:"bytes,4,req,name=qualifier" json:"qualifier,omitempty"`
	LockExpired      *bool  `protobuf:"varint,5,req,name=lockExpired" json:"lockExpired,omitempty"`
	Row              []byte `protobuf:"bytes,6,req,name=row" json:"row,omitempty"`
	XXX_unrecognized []byte `json:"-"`
}

func (*ThemisPrewriteResult) GetExistLock

func (m *ThemisPrewriteResult) GetExistLock() []byte

func (*ThemisPrewriteResult) GetFamily

func (m *ThemisPrewriteResult) GetFamily() []byte

func (*ThemisPrewriteResult) GetLockExpired

func (m *ThemisPrewriteResult) GetLockExpired() bool

func (*ThemisPrewriteResult) GetNewerWriteTs

func (m *ThemisPrewriteResult) GetNewerWriteTs() int64

func (*ThemisPrewriteResult) GetQualifier

func (m *ThemisPrewriteResult) GetQualifier() []byte

func (*ThemisPrewriteResult) GetRow

func (m *ThemisPrewriteResult) GetRow() []byte

func (*ThemisPrewriteResult) ProtoMessage

func (*ThemisPrewriteResult) ProtoMessage()

func (*ThemisPrewriteResult) Reset

func (m *ThemisPrewriteResult) Reset()

func (*ThemisPrewriteResult) String

func (m *ThemisPrewriteResult) String() string

type ThemisScanner

type ThemisScanner struct {
	// contains filtered or unexported fields
}

func (*ThemisScanner) Close

func (s *ThemisScanner) Close()

func (*ThemisScanner) Closed

func (s *ThemisScanner) Closed() bool

func (*ThemisScanner) Next

func (s *ThemisScanner) Next() *hbase.ResultRow

func (*ThemisScanner) SetMaxVersions

func (s *ThemisScanner) SetMaxVersions(maxVersions uint32)

func (*ThemisScanner) SetTimeRange

func (s *ThemisScanner) SetTimeRange(tsRangeFrom uint64, tsRangeTo uint64)

type Txn

type Txn interface {
	Get(t string, get *hbase.Get) (*hbase.ResultRow, error)
	Gets(t string, gets []*hbase.Get) ([]*hbase.ResultRow, error)
	LockRow(t string, row []byte) error
	Put(t string, put *hbase.Put)
	Delete(t string, del *hbase.Delete) error
	GetScanner(tbl []byte, startKey, endKey []byte, batchSize int) *ThemisScanner
	Release()
	Commit() error
	GetStartTS() uint64
	GetCommitTS() uint64
}

func NewTxn

func NewTxn(c hbase.HBaseClient, oracle oracle.Oracle) (Txn, error)

func NewTxnWithConf

func NewTxnWithConf(c hbase.HBaseClient, conf TxnConfig, oracle oracle.Oracle) (Txn, error)

type TxnConfig

type TxnConfig struct {
	ConcurrentPrewriteAndCommit bool
	WaitSecondaryCommit         bool
	TTLInMs                     uint64
	MaxRowsInOneTxn             int
	// contains filtered or unexported fields
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL