125 lines
3.1 KiB
Go
125 lines
3.1 KiB
Go
package tsm1
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/influxdata/influxdb/tsdb"
|
|
)
|
|
|
|
// DecodeBooleanArrayBlock decodes the boolean block from the byte slice
|
|
// and writes the values to a.
|
|
func DecodeBooleanArrayBlock(block []byte, a *tsdb.BooleanArray) error {
|
|
blockType := block[0]
|
|
if blockType != BlockBoolean {
|
|
return fmt.Errorf("invalid block type: exp %d, got %d", BlockBoolean, blockType)
|
|
}
|
|
|
|
tb, vb, err := unpackBlock(block[1:])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
a.Timestamps, err = TimeArrayDecodeAll(tb, a.Timestamps)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
a.Values, err = BooleanArrayDecodeAll(vb, a.Values)
|
|
return err
|
|
}
|
|
|
|
// DecodeFloatArrayBlock decodes the float block from the byte slice
|
|
// and writes the values to a.
|
|
func DecodeFloatArrayBlock(block []byte, a *tsdb.FloatArray) error {
|
|
blockType := block[0]
|
|
if blockType != BlockFloat64 {
|
|
return fmt.Errorf("invalid block type: exp %d, got %d", BlockFloat64, blockType)
|
|
}
|
|
|
|
tb, vb, err := unpackBlock(block[1:])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
a.Timestamps, err = TimeArrayDecodeAll(tb, a.Timestamps)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
a.Values, err = FloatArrayDecodeAll(vb, a.Values)
|
|
return err
|
|
}
|
|
|
|
// DecodeIntegerArrayBlock decodes the integer block from the byte slice
|
|
// and writes the values to a.
|
|
func DecodeIntegerArrayBlock(block []byte, a *tsdb.IntegerArray) error {
|
|
blockType := block[0]
|
|
if blockType != BlockInteger {
|
|
return fmt.Errorf("invalid block type: exp %d, got %d", BlockInteger, blockType)
|
|
}
|
|
|
|
tb, vb, err := unpackBlock(block[1:])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
a.Timestamps, err = TimeArrayDecodeAll(tb, a.Timestamps)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
a.Values, err = IntegerArrayDecodeAll(vb, a.Values)
|
|
return err
|
|
}
|
|
|
|
// DecodeUnsignedArrayBlock decodes the unsigned integer block from the byte slice
|
|
// and writes the values to a.
|
|
func DecodeUnsignedArrayBlock(block []byte, a *tsdb.UnsignedArray) error {
|
|
blockType := block[0]
|
|
if blockType != BlockUnsigned {
|
|
return fmt.Errorf("invalid block type: exp %d, got %d", BlockUnsigned, blockType)
|
|
}
|
|
|
|
tb, vb, err := unpackBlock(block[1:])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
a.Timestamps, err = TimeArrayDecodeAll(tb, a.Timestamps)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
a.Values, err = UnsignedArrayDecodeAll(vb, a.Values)
|
|
return err
|
|
}
|
|
|
|
// DecodeStringArrayBlock decodes the string block from the byte slice
|
|
// and writes the values to a.
|
|
func DecodeStringArrayBlock(block []byte, a *tsdb.StringArray) error {
|
|
blockType := block[0]
|
|
if blockType != BlockString {
|
|
return fmt.Errorf("invalid block type: exp %d, got %d", BlockString, blockType)
|
|
}
|
|
|
|
tb, vb, err := unpackBlock(block[1:])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
a.Timestamps, err = TimeArrayDecodeAll(tb, a.Timestamps)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
a.Values, err = StringArrayDecodeAll(vb, a.Values)
|
|
return err
|
|
}
|
|
|
|
// DecodeTimestampArrayBlock decodes the timestamps from the specified
|
|
// block, ignoring the block type and the values.
|
|
func DecodeTimestampArrayBlock(block []byte, a *tsdb.TimestampArray) error {
|
|
tb, _, err := unpackBlock(block[1:])
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
a.Timestamps, err = TimeArrayDecodeAll(tb, a.Timestamps)
|
|
return err
|
|
}
|