type storeTxnRead … func (s *store) Read(mode ReadTxMode, trace *traceutil.Trace) TxnRead { … } func (tr *storeTxnRead) FirstRev() int64 { … } func (tr *storeTxnRead) Rev() int64 { … } func (tr *storeTxnRead) Range(ctx context.Context, key, end []byte, ro RangeOptions) (r *RangeResult, err error) { … } func (tr *storeTxnRead) End() { … } type storeTxnWrite … func (s *store) Write(trace *traceutil.Trace) TxnWrite { … } func (tw *storeTxnWrite) Rev() int64 { … } func (tw *storeTxnWrite) Range(ctx context.Context, key, end []byte, ro RangeOptions) (r *RangeResult, err error) { … } func (tw *storeTxnWrite) DeleteRange(key, end []byte) (int64, int64) { … } func (tw *storeTxnWrite) Put(key, value []byte, lease lease.LeaseID) int64 { … } func (tw *storeTxnWrite) End() { … } func (tr *storeTxnRead) rangeKeys(ctx context.Context, key, end []byte, curRev int64, ro RangeOptions) (*RangeResult, error) { … } func (tw *storeTxnWrite) put(key, value []byte, leaseID lease.LeaseID) { … } func (tw *storeTxnWrite) deleteRange(key, end []byte) int64 { … } func (tw *storeTxnWrite) delete(key []byte) { … } func (tw *storeTxnWrite) Changes() []mvccpb.KeyValue { … }