4
4
"bytes"
5
5
"errors"
6
6
"io"
7
+ "slices"
7
8
8
9
"github.com/cockroachdb/pebble"
9
10
)
@@ -97,9 +98,7 @@ func (v *valueKeysValueMerger) Finish(_ bool) ([]byte, io.Closer, error) {
97
98
return nil , nil , nil
98
99
}
99
100
if v .reverse {
100
- for one , other := 0 , len (v .merges )- 1 ; one < other ; one , other = one + 1 , other - 1 {
101
- v .merges [one ], v .merges [other ] = v .merges [other ], v .merges [one ]
102
- }
101
+ slices .Reverse (v .merges )
103
102
}
104
103
return v .c .marshalValueKeys (v .merges )
105
104
}
@@ -111,21 +110,16 @@ func (v *valueKeysValueMerger) DeletableFinish(includesBase bool) ([]byte, bool,
111
110
112
111
// prune removes value-keys that are present in deletes from merges
113
112
func (v * valueKeysValueMerger ) prune () {
114
- pruned := v .merges [:0 ]
115
- for _ , x := range v .merges {
116
- if _ , ok := v .deletes [string (x )]; ! ok {
117
- pruned = append (pruned , x )
118
- }
119
- }
120
- v .merges = pruned
113
+ v .merges = slices .DeleteFunc (v .merges , func (vk []byte ) bool {
114
+ _ , ok := v .deletes [string (vk )]
115
+ return ok
116
+ })
121
117
}
122
118
123
119
// addToMerges checks whether the given value exists and if not adds it to the list of merges.
124
120
func (v * valueKeysValueMerger ) addToMerges (value []byte ) {
125
121
if ! v .exists (value ) {
126
- dst := make ([]byte , len (value ))
127
- copy (dst , value )
128
- v .merges = append (v .merges , dst )
122
+ v .merges = append (v .merges , bytes .Clone (value ))
129
123
}
130
124
}
131
125
0 commit comments