Move copyBytes() and copyByteSlices() to bytesutil.

pull/8975/head
Ben Johnson 2017-10-18 07:19:46 -06:00
parent dceb88eb30
commit d17d0f18e0
No known key found for this signature in database
GPG Key ID: 81741CD251883081
4 changed files with 25 additions and 23 deletions

View File

@ -88,6 +88,25 @@ func Intersect(a, b [][]byte) [][]byte {
return other
}
// Clone returns a copy of b.
func Clone(b []byte) []byte {
if b == nil {
return nil
}
buf := make([]byte, len(b))
copy(buf, b)
return buf
}
// CloneSlice returns a copy of a slice of byte slices.
func CloneSlice(a [][]byte) [][]byte {
other := make([][]byte, len(a))
for i := range a {
other[i] = Clone(a[i])
}
return other
}
type byteSlices [][]byte
func (a byteSlices) Len() int { return len(a) }

View File

@ -17,6 +17,7 @@ import (
"github.com/influxdata/influxdb/influxql"
"github.com/influxdata/influxdb/models"
"github.com/influxdata/influxdb/pkg/bytesutil"
"github.com/influxdata/influxdb/pkg/estimator"
"github.com/influxdata/influxdb/query"
"github.com/influxdata/influxdb/tsdb"
@ -404,7 +405,7 @@ func (i *Index) MeasurementNamesByExpr(expr influxql.Expr) ([][]byte, error) {
defer fs.Release()
names, err := fs.MeasurementNamesByExpr(expr)
return copyByteSlices(names), err
return bytesutil.CloneSlice(names), err
}
func (i *Index) MeasurementNamesByRegex(re *regexp.Regexp) ([][]byte, error) {
@ -415,7 +416,7 @@ func (i *Index) MeasurementNamesByRegex(re *regexp.Regexp) ([][]byte, error) {
var a [][]byte
for e := itr.Next(); e != nil; e = itr.Next() {
if re.Match(e.Name()) {
a = append(a, copyBytes(e.Name()))
a = append(a, bytesutil.Clone(e.Name()))
}
}
return a, nil
@ -730,7 +731,7 @@ func (i *Index) MeasurementSeriesKeysByExpr(name []byte, expr influxql.Expr) ([]
defer fs.Release()
keys, err := fs.MeasurementSeriesKeysByExpr(name, expr, i.fieldset)
return copyByteSlices(keys), err
return bytesutil.CloneSlice(keys), err
}
// TagSets returns an ordered list of tag sets for a measurement by dimension

View File

@ -8,6 +8,7 @@ import (
"sort"
"time"
"github.com/influxdata/influxdb/pkg/bytesutil"
"github.com/influxdata/influxdb/pkg/estimator/hll"
"github.com/influxdata/influxdb/pkg/mmap"
)
@ -52,7 +53,7 @@ func (p *IndexFiles) MeasurementNames() [][]byte {
itr := p.MeasurementIterator()
var names [][]byte
for e := itr.Next(); e != nil; e = itr.Next() {
names = append(names, copyBytes(e.Name()))
names = append(names, bytesutil.Clone(e.Name()))
}
sort.Sort(byteSlices(names))
return names

View File

@ -792,25 +792,6 @@ func (a byteSlices) Len() int { return len(a) }
func (a byteSlices) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a byteSlices) Less(i, j int) bool { return bytes.Compare(a[i], a[j]) == -1 }
// copyBytes returns a copy of b.
func copyBytes(b []byte) []byte {
if b == nil {
return nil
}
buf := make([]byte, len(b))
copy(buf, b)
return buf
}
// copyBytes returns a copy of a slice of byte slices.
func copyByteSlices(a [][]byte) [][]byte {
other := make([][]byte, len(a))
for i := range a {
other[i] = copyBytes(a[i])
}
return other
}
// assert will panic with a given formatted message if the given condition is false.
func assert(condition bool, msg string, v ...interface{}) {
if !condition {