cznicb KVStore uses Put() for faster read-modify-write
This commit is contained in:
parent
b054cddf76
commit
5a30d36b17
|
@ -220,20 +220,17 @@ func (w *Batch) Execute() (err error) {
|
||||||
t := w.s.t
|
t := w.s.t
|
||||||
for key, mc := range w.ms {
|
for key, mc := range w.ms {
|
||||||
k := []byte(key)
|
k := []byte(key)
|
||||||
b := []byte(nil)
|
t.Put(k, func(oldV interface{}, exists bool) (newV interface{}, write bool) {
|
||||||
v, ok := t.Get(k)
|
b := []byte(nil)
|
||||||
if ok && v != nil {
|
if exists && oldV != nil {
|
||||||
b = v.([]byte)
|
b = oldV.([]byte)
|
||||||
}
|
}
|
||||||
b, err := mc.Merge(k, b)
|
b, err := mc.Merge(k, b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return nil, false
|
||||||
}
|
}
|
||||||
if b != nil {
|
return b, b != nil
|
||||||
t.Set(k, b)
|
})
|
||||||
} else {
|
|
||||||
t.Delete(k)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, op := range w.ops {
|
for _, op := range w.ops {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user