Move copyBytes() and copyByteSlices() to bytesutil.
parent
dceb88eb30
commit
d17d0f18e0
|
@ -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) }
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue