models - ActiveState ActiveGo 1.8
...

Package models

import "github.com/influxdata/influxdb/models"
Overview
Index

Overview ▾

Package models implements basic objects used throughout the TICK stack.

Index ▾

Constants
Variables
func CheckTime(t time.Time) error
func EscapeStringField(in string) string
func GetPrecisionMultiplier(precision string) int64
func MakeKey(name []byte, tags Tags) []byte
func ParseKey(buf []byte) (string, Tags, error)
func ParsePoints(buf []byte) ([]Point, error)
func ParsePointsString(buf string) ([]Point, error)
func ParsePointsWithPrecision(buf []byte, defaultTime time.Time, precision string) ([]Point, error)
func SafeCalcTime(timestamp int64, precision string) (time.Time, error)
type ConsistencyLevel
    func ParseConsistencyLevel(level string) (ConsistencyLevel, error)
type FieldIterator
type FieldType
type Fields
    func (p Fields) MarshalBinary() []byte
type InlineFNV64a
    func NewInlineFNV64a() InlineFNV64a
    func (s *InlineFNV64a) Sum64() uint64
    func (s *InlineFNV64a) Write(data []byte) (int, error)
type Point
    func MustNewPoint(name string, tags Tags, fields Fields, time time.Time) Point
    func NewPoint(name string, tags Tags, fields Fields, t time.Time) (Point, error)
    func NewPointFromBytes(b []byte) (Point, error)
type Points
    func (a Points) Len() int
    func (a Points) Less(i, j int) bool
    func (a Points) Swap(i, j int)
type Row
    func (r *Row) SameSeries(o *Row) bool
type Rows
    func (p Rows) Len() int
    func (p Rows) Less(i, j int) bool
    func (p Rows) Swap(i, j int)
type Statistic
    func NewStatistic(name string) Statistic
type StatisticTags
    func (t StatisticTags) Merge(tags map[string]string) map[string]string
type Tag
    func (t Tag) Clone() Tag
type Tags
    func NewTags(m map[string]string) Tags
    func (a Tags) Clone() Tags
    func (a *Tags) Delete(key []byte)
    func (a Tags) Get(key []byte) []byte
    func (a Tags) GetString(key string) string
    func (a Tags) HashKey() []byte
    func (a Tags) Len() int
    func (a Tags) Less(i, j int) bool
    func (a Tags) Map() map[string]string
    func (a Tags) Merge(other map[string]string) Tags
    func (a *Tags) Set(key, value []byte)
    func (a *Tags) SetString(key, value string)
    func (a Tags) Swap(i, j int)

Package files

consistency.go inline_fnv.go inline_strconv_parse.go points.go rows.go statistic.go time.go

Constants

const (
    // MinNanoTime is the minumum time that can be represented.
    //
    // 1677-09-21 00:12:43.145224194 +0000 UTC
    //
    // The two lowest minimum integers are used as sentinel values.  The
    // minimum value needs to be used as a value lower than any other value for
    // comparisons and another separate value is needed to act as a sentinel
    // default value that is unusable by the user, but usable internally.
    // Because these two values need to be used for a special purpose, we do
    // not allow users to write points at these two times.
    MinNanoTime = int64(math.MinInt64) + 2

    // MaxNanoTime is the maximum time that can be represented.
    //
    // 2262-04-11 23:47:16.854775806 +0000 UTC
    //
    // The highest time represented by a nanosecond needs to be used for an
    // exclusive range in the shard group, so the maximum time needs to be one
    // less than the possible maximum number of nanoseconds representable by an
    // int64 so that we don't lose a point at that one time.
    MaxNanoTime = int64(math.MaxInt64) - 1
)
const (
    // MaxKeyLength is the largest allowed size of the combined measurement and tag keys.
    MaxKeyLength = 65535
)

Variables

var (

    // ErrPointMustHaveAField is returned when operating on a point that does not have any fields.
    ErrPointMustHaveAField = errors.New("point without fields is unsupported")

    // ErrInvalidNumber is returned when a number is expected but not provided.
    ErrInvalidNumber = errors.New("invalid number")

    // ErrInvalidPoint is returned when a point cannot be parsed correctly.
    ErrInvalidPoint = errors.New("point is invalid")
)
var (
    // ErrInvalidConsistencyLevel is returned when parsing the string version
    // of a consistency level.
    ErrInvalidConsistencyLevel = errors.New("invalid consistency level")
)
var (

    // ErrTimeOutOfRange gets returned when time is out of the representable range using int64 nanoseconds since the epoch.
    ErrTimeOutOfRange = fmt.Errorf("time outside range %d - %d", MinNanoTime, MaxNanoTime)
)

func CheckTime

func CheckTime(t time.Time) error

CheckTime checks that a time is within the safe range.

func EscapeStringField

func EscapeStringField(in string) string

EscapeStringField returns a copy of in with any double quotes or backslashes with escaped values.

func GetPrecisionMultiplier

func GetPrecisionMultiplier(precision string) int64

GetPrecisionMultiplier will return a multiplier for the precision specified.

func MakeKey

func MakeKey(name []byte, tags Tags) []byte

MakeKey creates a key for a set of tags.

func ParseKey

func ParseKey(buf []byte) (string, Tags, error)

ParseKey returns the measurement name and tags from a point.

NOTE: to minimize heap allocations, the returned Tags will refer to subslices of buf. This can have the unintended effect preventing buf from being garbage collected.

func ParsePoints

func ParsePoints(buf []byte) ([]Point, error)

ParsePoints returns a slice of Points from a text representation of a point with each point separated by newlines. If any points fail to parse, a non-nil error will be returned in addition to the points that parsed successfully.

func ParsePointsString

func ParsePointsString(buf string) ([]Point, error)

ParsePointsString is identical to ParsePoints but accepts a string.

func ParsePointsWithPrecision

func ParsePointsWithPrecision(buf []byte, defaultTime time.Time, precision string) ([]Point, error)

ParsePointsWithPrecision is similar to ParsePoints, but allows the caller to provide a precision for time.

NOTE: to minimize heap allocations, the returned Points will refer to subslices of buf. This can have the unintended effect preventing buf from being garbage collected.

func SafeCalcTime

func SafeCalcTime(timestamp int64, precision string) (time.Time, error)

SafeCalcTime safely calculates the time given. Will return error if the time is outside the supported range.

type ConsistencyLevel

ConsistencyLevel represent a required replication criteria before a write can be returned as successful.

The consistency level is handled in open-source InfluxDB but only applicable to clusters.

type ConsistencyLevel int
const (
    // ConsistencyLevelAny allows for hinted handoff, potentially no write happened yet.
    ConsistencyLevelAny ConsistencyLevel = iota

    // ConsistencyLevelOne requires at least one data node acknowledged a write.
    ConsistencyLevelOne

    // ConsistencyLevelQuorum requires a quorum of data nodes to acknowledge a write.
    ConsistencyLevelQuorum

    // ConsistencyLevelAll requires all data nodes to acknowledge a write.
    ConsistencyLevelAll
)

func ParseConsistencyLevel

func ParseConsistencyLevel(level string) (ConsistencyLevel, error)

ParseConsistencyLevel converts a consistency level string to the corresponding ConsistencyLevel const.

type FieldIterator

FieldIterator provides a low-allocation interface to iterate through a point's fields.

type FieldIterator interface {
    // Next indicates whether there any fields remaining.
    Next() bool

    // FieldKey returns the key of the current field.
    FieldKey() []byte

    // Type returns the FieldType of the current field.
    Type() FieldType

    // StringValue returns the string value of the current field.
    StringValue() string

    // IntegerValue returns the integer value of the current field.
    IntegerValue() (int64, error)

    // BooleanValue returns the boolean value of the current field.
    BooleanValue() (bool, error)

    // FloatValue returns the float value of the current field.
    FloatValue() (float64, error)

    // Reset resets the iterator to its initial state.
    Reset()
}

type FieldType

FieldType represents the type of a field.

type FieldType int
const (
    // Integer indicates the field's type is integer.
    Integer FieldType = iota

    // Float indicates the field's type is float.
    Float

    // Boolean indicates the field's type is boolean.
    Boolean

    // String indicates the field's type is string.
    String

    // Empty is used to indicate that there is no field.
    Empty
)

type Fields

Fields represents a mapping between a Point's field names and their values.

type Fields map[string]interface{}

func (Fields) MarshalBinary

func (p Fields) MarshalBinary() []byte

MarshalBinary encodes all the fields to their proper type and returns the binary represenation NOTE: uint64 is specifically not supported due to potential overflow when we decode again later to an int64 NOTE2: uint is accepted, and may be 64 bits, and is for some reason accepted...

type InlineFNV64a

InlineFNV64a is an alloc-free port of the standard library's fnv64a. See https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function.

type InlineFNV64a uint64

func NewInlineFNV64a

func NewInlineFNV64a() InlineFNV64a

NewInlineFNV64a returns a new instance of InlineFNV64a.

func (*InlineFNV64a) Sum64

func (s *InlineFNV64a) Sum64() uint64

Sum64 returns the uint64 of the current resulting hash.

func (*InlineFNV64a) Write

func (s *InlineFNV64a) Write(data []byte) (int, error)

Write adds data to the running hash.

type Point

Point defines the values that will be written to the database.

type Point interface {
    // Name return the measurement name for the point.
    Name() string

    // SetName updates the measurement name for the point.
    SetName(string)

    // Tags returns the tag set for the point.
    Tags() Tags

    // AddTag adds or replaces a tag value for a point.
    AddTag(key, value string)

    // SetTags replaces the tags for the point.
    SetTags(tags Tags)

    // Fields returns the fields for the point.
    Fields() (Fields, error)

    // Time return the timestamp for the point.
    Time() time.Time

    // SetTime updates the timestamp for the point.
    SetTime(t time.Time)

    // UnixNano returns the timestamp of the point as nanoseconds since Unix epoch.
    UnixNano() int64

    // HashID returns a non-cryptographic checksum of the point's key.
    HashID() uint64

    // Key returns the key (measurement joined with tags) of the point.
    Key() []byte

    // String returns a string representation of the point. If there is a
    // timestamp associated with the point then it will be specified with the default
    // precision of nanoseconds.
    String() string

    // MarshalBinary returns a binary representation of the point.
    MarshalBinary() ([]byte, error)

    // PrecisionString returns a string representation of the point. If there
    // is a timestamp associated with the point then it will be specified in the
    // given unit.
    PrecisionString(precision string) string

    // RoundedString returns a string representation of the point. If there
    // is a timestamp associated with the point, then it will be rounded to the
    // given duration.
    RoundedString(d time.Duration) string

    // Split will attempt to return multiple points with the same timestamp whose
    // string representations are no longer than size. Points with a single field or
    // a point without a timestamp may exceed the requested size.
    Split(size int) []Point

    // Round will round the timestamp of the point to the given duration.
    Round(d time.Duration)

    // StringSize returns the length of the string that would be returned by String().
    StringSize() int

    // AppendString appends the result of String() to the provided buffer and returns
    // the result, potentially reducing string allocations.
    AppendString(buf []byte) []byte

    // FieldIterator retuns a FieldIterator that can be used to traverse the
    // fields of a point without constructing the in-memory map.
    FieldIterator() FieldIterator
}

func MustNewPoint

func MustNewPoint(name string, tags Tags, fields Fields, time time.Time) Point

MustNewPoint returns a new point with the given measurement name, tags, fields and timestamp. If an unsupported field value (NaN) is passed, this function panics.

func NewPoint

func NewPoint(name string, tags Tags, fields Fields, t time.Time) (Point, error)

NewPoint returns a new point with the given measurement name, tags, fields and timestamp. If an unsupported field value (NaN) or out of range time is passed, this function returns an error.

func NewPointFromBytes

func NewPointFromBytes(b []byte) (Point, error)

NewPointFromBytes returns a new Point from a marshalled Point.

type Points

Points represents a sortable list of points by timestamp.

type Points []Point

func (Points) Len

func (a Points) Len() int

Len implements sort.Interface.

func (Points) Less

func (a Points) Less(i, j int) bool

Less implements sort.Interface.

func (Points) Swap

func (a Points) Swap(i, j int)

Swap implements sort.Interface.

type Row

Row represents a single row returned from the execution of a statement.

type Row struct {
    Name    string            `json:"name,omitempty"`
    Tags    map[string]string `json:"tags,omitempty"`
    Columns []string          `json:"columns,omitempty"`
    Values  [][]interface{}   `json:"values,omitempty"`
    Partial bool              `json:"partial,omitempty"`
}

func (*Row) SameSeries

func (r *Row) SameSeries(o *Row) bool

SameSeries returns true if r contains values for the same series as o.

type Rows

Rows represents a collection of rows. Rows implements sort.Interface.

type Rows []*Row

func (Rows) Len

func (p Rows) Len() int

Len implements sort.Interface.

func (Rows) Less

func (p Rows) Less(i, j int) bool

Less implements sort.Interface.

func (Rows) Swap

func (p Rows) Swap(i, j int)

Swap implements sort.Interface.

type Statistic

Statistic is the representation of a statistic used by the monitoring service.

type Statistic struct {
    Name   string                 `json:"name"`
    Tags   map[string]string      `json:"tags"`
    Values map[string]interface{} `json:"values"`
}

func NewStatistic

func NewStatistic(name string) Statistic

NewStatistic returns an initialized Statistic.

type StatisticTags

StatisticTags is a map that can be merged with others without causing mutations to either map.

type StatisticTags map[string]string

func (StatisticTags) Merge

func (t StatisticTags) Merge(tags map[string]string) map[string]string

Merge creates a new map containing the merged contents of tags and t. If both tags and the receiver map contain the same key, the value in tags is used in the resulting map.

Merge always returns a usable map.

type Tag

Tag represents a single key/value tag pair.

type Tag struct {
    Key   []byte
    Value []byte
}

func (Tag) Clone

func (t Tag) Clone() Tag

Clone returns a shallow copy of Tag.

Tags associated with a Point created by ParsePointsWithPrecision will hold references to the byte slice that was parsed. Use Clone to create a Tag with new byte slices that do not refer to the argument to ParsePointsWithPrecision.

type Tags

Tags represents a sorted list of tags.

type Tags []Tag

func NewTags

func NewTags(m map[string]string) Tags

NewTags returns a new Tags from a map.

func (Tags) Clone

func (a Tags) Clone() Tags

Clone returns a copy of the slice where the elements are a result of calling `Clone` on the original elements

Tags associated with a Point created by ParsePointsWithPrecision will hold references to the byte slice that was parsed. Use Clone to create Tags with new byte slices that do not refer to the argument to ParsePointsWithPrecision.

func (*Tags) Delete

func (a *Tags) Delete(key []byte)

Delete removes a tag by key.

func (Tags) Get

func (a Tags) Get(key []byte) []byte

Get returns the value for a key.

func (Tags) GetString

func (a Tags) GetString(key string) string

GetString returns the string value for a string key.

func (Tags) HashKey

func (a Tags) HashKey() []byte

HashKey hashes all of a tag's keys.

func (Tags) Len

func (a Tags) Len() int

Len implements sort.Interface.

func (Tags) Less

func (a Tags) Less(i, j int) bool

Less implements sort.Interface.

func (Tags) Map

func (a Tags) Map() map[string]string

Map returns a map representation of the tags.

func (Tags) Merge

func (a Tags) Merge(other map[string]string) Tags

Merge merges the tags combining the two. If both define a tag with the same key, the merged value overwrites the old value. A new map is returned.

func (*Tags) Set

func (a *Tags) Set(key, value []byte)

Set sets the value for a key.

func (*Tags) SetString

func (a *Tags) SetString(key, value string)

SetString sets the string value for a string key.

func (Tags) Swap

func (a Tags) Swap(i, j int)

Swap implements sort.Interface.