Documentation ¶
Overview ¶
Package zng implements a data typing system based on the zeek type system. All zeek types are defined here and implement the Type interface while instances of values implement the Value interface. All values conform to exactly one type. The package provides a fast-path for comparing a value to a byte slice without having to create a zeek value from the byte slice. To exploit this, all values include a Comparison method that returns a Predicate function that takes a byte slice and a Type and returns a boolean indicating whether the the byte slice with the indicated Type matches the value. The package also provides mechanism for coercing values in well-defined and natural ways.
Index ¶
- Constants
- Variables
- func AppendBool(zb zcode.Bytes, b bool) zcode.Bytes
- func AppendDuration(bytes zcode.Bytes, d nano.Duration) zcode.Bytes
- func AppendFloat32(zb zcode.Bytes, f float32) zcode.Bytes
- func AppendFloat64(zb zcode.Bytes, d float64) zcode.Bytes
- func AppendIP(zb zcode.Bytes, a net.IP) zcode.Bytes
- func AppendInt(bytes zcode.Bytes, i int64) zcode.Bytes
- func AppendNet(zb zcode.Bytes, subnet *net.IPNet) zcode.Bytes
- func AppendTime(bytes zcode.Bytes, t nano.Ts) zcode.Bytes
- func AppendUint(bytes zcode.Bytes, i uint64) zcode.Bytes
- func BuildUnion(b *zcode.Builder, selector int, val zcode.Bytes, container bool)
- func ContainedType(typ Type) (Type, []Column)
- func DecodeBool(zv zcode.Bytes) (bool, error)
- func DecodeBytes(zv zcode.Bytes) ([]byte, error)
- func DecodeDuration(zv zcode.Bytes) (nano.Duration, error)
- func DecodeError(zv zcode.Bytes) (error, error)
- func DecodeFloat(zb zcode.Bytes) (float64, error)
- func DecodeFloat32(zb zcode.Bytes) (float32, error)
- func DecodeFloat64(zv zcode.Bytes) (float64, error)
- func DecodeIP(zv zcode.Bytes) (net.IP, error)
- func DecodeInt(zv zcode.Bytes) (int64, error)
- func DecodeNet(zv zcode.Bytes) (*net.IPNet, error)
- func DecodeString(zv zcode.Bytes) (string, error)
- func DecodeTime(zv zcode.Bytes) (nano.Ts, error)
- func DecodeUint(zv zcode.Bytes) (uint64, error)
- func EncodeBool(b bool) zcode.Bytes
- func EncodeBytes(b []byte) zcode.Bytes
- func EncodeDuration(d nano.Duration) zcode.Bytes
- func EncodeError(err error) zcode.Bytes
- func EncodeFloat32(d float32) zcode.Bytes
- func EncodeFloat64(d float64) zcode.Bytes
- func EncodeIP(a net.IP) zcode.Bytes
- func EncodeInt(i int64) zcode.Bytes
- func EncodeNet(subnet *net.IPNet) zcode.Bytes
- func EncodeString(s string) zcode.Bytes
- func EncodeTime(t nano.Ts) zcode.Bytes
- func EncodeTypeValue(t Type) zcode.Bytes
- func EncodeUint(i uint64) zcode.Bytes
- func FormatTypeValue(tv zcode.Bytes) string
- func IDChar(c rune) bool
- func IsContainerType(typ Type) bool
- func IsFloat(id int) bool
- func IsIdentifier(s string) bool
- func IsInteger(id int) bool
- func IsMissing(zv Value) bool
- func IsNumber(id int) bool
- func IsPrimitiveType(typ Type) bool
- func IsRecordType(typ Type) bool
- func IsSigned(id int) bool
- func IsStringy(id int) bool
- func IsTrue(zv zcode.Bytes) bool
- func IsTypeName(s string) bool
- func IsUnionType(typ Type) bool
- func NormalizeMap(zv zcode.Bytes) zcode.Bytes
- func NormalizeSet(zv zcode.Bytes) zcode.Bytes
- func PromoteInt(aid, bid int) int
- func QuotedName(name string) string
- func QuotedString(data []byte, bstr bool) string
- func TypeChar(c rune) bool
- func TypeID(typ Type) int
- func UnescapeBstring(data []byte) []byte
- func Unhex(b byte) byte
- func Walk(typ Type, body zcode.Bytes, visit Visitor) error
- type Builder
- type Column
- type ColumnBuilder
- type CompressionFormat
- type Context
- func (c *Context) AddColumns(r *Value, newCols []Column, vals []Value) (*Value, error)
- func (c *Context) Lookup(id int) *TypeRecord
- func (c *Context) LookupByValue(tv zcode.Bytes) (Type, error)
- func (c *Context) LookupType(id int) (Type, error)
- func (c *Context) LookupTypeAlias(name string, target Type) (*TypeAlias, error)
- func (c *Context) LookupTypeArray(inner Type) *TypeArray
- func (c *Context) LookupTypeDef(name string) *TypeAlias
- func (c *Context) LookupTypeEnum(symbols []string) *TypeEnum
- func (c *Context) LookupTypeMap(keyType, valType Type) *TypeMap
- func (c *Context) LookupTypeRecord(columns []Column) (*TypeRecord, error)
- func (c *Context) LookupTypeSet(inner Type) *TypeSet
- func (c *Context) LookupTypeUnion(types []Type) *TypeUnion
- func (c *Context) LookupTypeValue(typ Type) Value
- func (c *Context) MustLookupTypeRecord(columns []Column) *TypeRecord
- func (c *Context) Reset()
- func (c *Context) TranslateType(ext Type) (Type, error)
- func (t *Context) TranslateTypeRecord(ext *TypeRecord) (*TypeRecord, error)
- type Mapper
- type RecordTypeError
- type Type
- type TypeAlias
- type TypeArray
- type TypeEnum
- type TypeMap
- type TypeOfBool
- type TypeOfBstring
- type TypeOfBytes
- type TypeOfDuration
- type TypeOfError
- type TypeOfFloat32
- type TypeOfFloat64
- type TypeOfIP
- type TypeOfInt16
- type TypeOfInt32
- type TypeOfInt64
- type TypeOfInt8
- type TypeOfNet
- type TypeOfNull
- type TypeOfString
- type TypeOfTime
- type TypeOfType
- type TypeOfUint16
- type TypeOfUint32
- type TypeOfUint64
- type TypeOfUint8
- type TypeRecord
- func (t *TypeRecord) ColumnOfField(field string) (int, bool)
- func (t *TypeRecord) Decode(zv zcode.Bytes) ([]Value, error)
- func (t *TypeRecord) Format(zv zcode.Bytes) string
- func (t *TypeRecord) HasField(field string) bool
- func (t *TypeRecord) ID() int
- func (t *TypeRecord) Marshal(zv zcode.Bytes) (interface{}, error)
- func (t *TypeRecord) String() string
- func (t *TypeRecord) TypeOfField(field string) (Type, bool)
- type TypeSet
- type TypeUnion
- func (t *TypeUnion) Format(zv zcode.Bytes) string
- func (t *TypeUnion) ID() int
- func (t *TypeUnion) Marshal(zv zcode.Bytes) (interface{}, error)
- func (t *TypeUnion) SplitZng(zv zcode.Bytes) (Type, int64, zcode.Bytes, error)
- func (t *TypeUnion) String() string
- func (t *TypeUnion) Type(selector int) (Type, error)
- type TypeVectorTable
- type Value
- func NewBool(b bool) Value
- func NewBstring(s string) Value
- func NewBytes(b []byte) Value
- func NewDuration(d nano.Duration) Value
- func NewError(err error) Value
- func NewErrorf(format string, args ...interface{}) Value
- func NewFloat32(f float32) Value
- func NewFloat64(f float64) Value
- func NewIP(a net.IP) Value
- func NewNet(s *net.IPNet) Value
- func NewString(s string) Value
- func NewTime(ts nano.Ts) Value
- func NewTypeValue(t Type) Value
- func NewUint64(v uint64) Value
- func NewValue(zt Type, zb zcode.Bytes) *Value
- func Not(zb zcode.Bytes) Value
- func Split(elemType Type, b zcode.Bytes) ([]Value, error)
- func (r *Value) Access(field string) (Value, error)
- func (r *Value) AccessBool(field string) (bool, error)
- func (r *Value) AccessIP(field string) (net.IP, error)
- func (r *Value) AccessInt(field string) (int64, error)
- func (r *Value) AccessString(field string) (string, error)
- func (r *Value) AccessTime(field string) (nano.Ts, error)
- func (r *Value) AccessTimeByColumn(colno int) (nano.Ts, error)
- func (v Value) ArrayIndex(idx int64) (Value, error)
- func (r *Value) ColumnOfField(field string) (int, bool)
- func (r *Value) Columns() []Column
- func (v Value) ContainerLength() (int, error)
- func (v Value) Copy() Value
- func (r *Value) CopyBytes()
- func (r *Value) Deref(path field.Path) (Value, error)
- func (v Value) Elements() ([]Value, error)
- func (v Value) Encode(dst zcode.Bytes) zcode.Bytes
- func (v Value) Equal(p Value) bool
- func (r *Value) FieldIter() fieldIter
- func (r *Value) HasField(field string) bool
- func (v Value) IsContainer() bool
- func (v Value) IsError() bool
- func (v Value) IsMissing() bool
- func (v Value) IsNil() bool
- func (v Value) IsStringy() bool
- func (v Value) IsUnset() bool
- func (v Value) IsUnsetOrNil() bool
- func (v Value) Iter() zcode.Iter
- func (r *Value) Keep() *Value
- func (v Value) MarshalJSON() ([]byte, error)
- func (r *Value) Slice(column int) (zcode.Bytes, error)
- func (v Value) String() string
- func (r *Value) TypeCheck() error
- func (r *Value) TypeOfColumn(col int) Type
- func (r *Value) ValueByColumn(col int) Value
- func (r *Value) ValueByField(field string) (Value, error)
- func (r *Value) Walk(rv Visitor) error
- type Visitor
Constants ¶
const ( MaxColumns = 100_000 MaxEnumSymbols = 100_000 MaxUnionTypes = 100_000 )
const ( IDUint8 = 0 IDUint16 = 1 IDUint32 = 2 IDUint64 = 3 IDInt8 = 4 IDInt16 = 5 IDInt32 = 6 IDInt64 = 7 IDDuration = 8 IDTime = 9 IDFloat16 = 10 IDFloat32 = 11 IDFloat64 = 12 IDDecimal = 13 IDBool = 14 IDBytes = 15 IDString = 16 IDBstring = 17 IDIP = 18 IDNet = 19 IDType = 20 IDError = 21 IDNull = 22 IDTypeDef = 23 // 0x17 IDTypeName = 24 // 0x18 IDTypeRecord = 25 // 0x19 IDTypeArray = 26 // 0x20 IDTypeSet = 27 // 0x21 IDTypeUnion = 28 // 0x22 IDTypeEnum = 29 // 0x23 IDTypeMap = 30 // 0x24 )
const ( CtrlValueEscape = 0xf5 TypeDefRecord = 0xf6 TypeDefArray = 0xf7 TypeDefSet = 0xf8 TypeDefUnion = 0xf9 TypeDefEnum = 0xfa TypeDefMap = 0xfb TypeDefAlias = 0xfc CtrlCompressed = 0xfd CtrlAppMessage = 0xfe CtrlEOS = 0xff AppEncodingZNG = 0 AppEncodingJSON = 1 AppEncodingZSON = 2 AppEncodingString = 3 AppEncodingBinary = 4 )
Variables ¶
var ( ErrExhausted = errors.New("called Next() on iterator after last record") ErrMismatch = errors.New("mismatch between record type and value") )
var ( ErrMissingField = errors.New("record missing a field") ErrExtraField = errors.New("record with extra field") ErrNotContainer = errors.New("expected container type, got primitive") ErrNotPrimitive = errors.New("expected primitive type, got container") ErrTypeIDExists = errors.New("zng type ID exists") ErrTypeIDInvalid = errors.New("zng type ID out of range") ErrBadValue = errors.New("malformed zng value") ErrBadFormat = errors.New("malformed zng record") ErrTypeMismatch = errors.New("type/value mismatch") ErrColumnMismatch = errors.New("zng record mismatch between columns in type and columns in value") ErrCorruptColumns = errors.New("wrong number of columns in zng record value") )
var ( ErrLenUnset = errors.New("len(unset) is undefined") ErrNotArray = errors.New("cannot index a non-array") ErrIndex = errors.New("array index out of bounds") ErrUnionSelector = errors.New("union selector out of bounds") ErrEnumIndex = errors.New("enum index out of bounds") )
var ( TypeUint8 = &TypeOfUint8{} TypeUint16 = &TypeOfUint16{} TypeUint32 = &TypeOfUint32{} TypeUint64 = &TypeOfUint64{} TypeInt8 = &TypeOfInt8{} TypeInt16 = &TypeOfInt16{} TypeInt32 = &TypeOfInt32{} TypeInt64 = &TypeOfInt64{} TypeDuration = &TypeOfDuration{} TypeTime = &TypeOfTime{} // XXX add TypeFloat16 TypeFloat32 = &TypeOfFloat32{} TypeFloat64 = &TypeOfFloat64{} // XXX add TypeDecimal TypeBool = &TypeOfBool{} TypeBytes = &TypeOfBytes{} TypeString = &TypeOfString{} TypeBstring = &TypeOfBstring{} TypeIP = &TypeOfIP{} TypeNet = &TypeOfNet{} TypeType = &TypeOfType{} TypeError = &TypeOfError{} TypeNull = &TypeOfNull{} )
var ( ErrNotNumber = errors.New("not a number") ErrTypeSyntax = errors.New("syntax error parsing type string") )
var (
ErrAliasExists = errors.New("alias exists with different type")
)
var ErrDuplicateFields = errors.New("duplicate fields")
var ErrIncomplete = errors.New("not enough values supplied to complete record")
var ErrMissing = errors.New(missing)
ErrMissing is returned by entities that fail because a referenced field was missing or because an argument to the entity had a missing value. This is used at sites in the code where it is unknown whether the outcome should result in a runtime exit or in continued execution with a Missing value embedded in the Zed results.
var ErrNonAdjacent = errors.New("non adjacent fields")
var False = Value{TypeBool, []byte{0}}
var Missing = NewError(ErrMissing)
Missing is value that represents the error condition that a field referenced was not present. The Missing value can be propagated through functions and expressions and each operator must clearly defined its semantics with respect to the Missing value. For example, "true AND MISSING" is MISSING.
var SkipContainer = errors.New("skip this container")
SkipContainer is used as a return value from Visitors to indicate that the container passed in the call should not be visited. It is not returned as an error by any function.
var True = Value{TypeBool, []byte{1}}
Functions ¶
func BuildUnion ¶
BuildUnion appends to b a union described by selector, val, and container.
func ContainedType ¶
ContainedType returns the inner type for set and array types in the first return value and the columns of its of type for record types in the second return value. ContainedType returns nil for both return values if the type is not a set, array, or record.
func EncodeBool ¶
func EncodeBytes ¶
func EncodeError ¶
func EncodeFloat32 ¶
func EncodeFloat64 ¶
func EncodeString ¶
func EncodeTypeValue ¶
func EncodeUint ¶
func FormatTypeValue ¶
func IsContainerType ¶
func IsFloat ¶
True iff the type id is encoded as a float encoding. XXX add IDDecimal here when we implement coercible math with it.
func IsIdentifier ¶
func IsNumber ¶
True iff the type id is encoded as a zng signed or unsigned integer zcode.Bytes, float32 zcode.Bytes, or float64 zcode.Bytes.
func IsPrimitiveType ¶
func IsRecordType ¶
func IsTypeName ¶
IsTypeName returns true iff s is a valid zson typedef name (exclusive of integer names for locally-scoped typedefs).
func IsUnionType ¶
func NormalizeMap ¶
NormalizeMap interprets zv as a map body and returns an equivalent map body that is normalized according to the ZNG specification (i.e., the tag-counted value of each entry's key is lexicographically greater than that of the preceding entry).
func NormalizeSet ¶
NormalizeSet interprets zv as a set body and returns an equivalent set body that is normalized according to the ZNG specification (i.e., each element's tag-counted value is lexicographically greater than that of the preceding element).
func PromoteInt ¶
Promote type to the largest signed type where the IDs must both satisfy IsNumber.
func QuotedName ¶
func QuotedString ¶
func UnescapeBstring ¶
UnescapeBstring replaces all the escaped characters defined in the for the zng spec for the bstring type with their unescaped equivalents.
Types ¶
type Builder ¶
type Builder struct { zcode.Builder Type *TypeRecord }
Builder provides a way of easily and efficiently building records of the same type.
func NewBuilder ¶
func NewBuilder(typ *TypeRecord) *Builder
func (*Builder) Build ¶
Build encodes the top-level zcode.Bytes values as the Bytes field of a record and sets that field and the Type field of the passed-in record. XXX This currently only works for zvals that are properly formatted for the top-level scan of the record, e.g., if a field is record[id:[record:[orig_h:ip]] then the zval passed in here for that field must have the proper encoding... this works fine when values are extracted and inserted from the proper level but when leaf values are inserted we should have another method to handle this, e.g., by encoding the dfs traversal of the record type with info about primitive vs container insertions. This could be the start of a whole package that provides different ways to build Records via, e.g., a marshal API, auto-generated stubs, etc.
type ColumnBuilder ¶
type ColumnBuilder struct {
// contains filtered or unexported fields
}
func NewColumnBuilder ¶
func NewColumnBuilder(zctx *Context, fields field.List) (*ColumnBuilder, error)
NewColumnBuilder constructs the zcode.Bytes representation for columns built from an array of input field selectors expressed as field.Path. Append should be called to enter field values in the left to right order of the provided fields and Encode is called to retrieve the nested zcode.Bytes value. Reset should be called before encoding the next record.
func (*ColumnBuilder) Append ¶
func (c *ColumnBuilder) Append(leaf []byte, container bool)
func (*ColumnBuilder) Reset ¶
func (c *ColumnBuilder) Reset()
func (*ColumnBuilder) TypedColumns ¶
func (c *ColumnBuilder) TypedColumns(types []Type) []Column
A ColumnBuilder understands the shape of a sequence of FieldExprs (i.e., which columns are inside nested records) but not the types. TypedColumns takes an array of Types for the individual fields and constructs an array of Columns that reflects the fullly typed structure. This is suitable for e.g. allocating a descriptor.
type CompressionFormat ¶
type CompressionFormat int
const CompressionFormatLZ4 CompressionFormat = 0x00
type Context ¶
type Context struct {
// contains filtered or unexported fields
}
A Context implements the "type context" in the Zed model. For a given set of related Values, each Value has a type from a shared Context. The Context manages the transitive closure of Types so that each unique type corresponds to exactly one Type pointer allowing type equivlance to be determined by pointer comparison. (Type pointers from distinct Contexts obviously do not have this property.) A Context also provides an efficient means to translate type values (represented as serialized ZNG) to Types. This provides an efficient means to translate Type pointers from one context to another.
func NewContext ¶
func NewContext() *Context
func (*Context) AddColumns ¶
AddColumns returns a new Record with columns equal to the given record along with new rightmost columns as indicated with the given values. If any of the newly provided columns already exists in the specified value, an error is returned.
func (*Context) Lookup ¶
func (c *Context) Lookup(id int) *TypeRecord
func (*Context) LookupByValue ¶
LookupByValue returns the Type indicated by a binary-serialized type value. This provides a means to translate a type-context-independent serialized encoding for an arbitrary type into the reciever Context.
func (*Context) LookupTypeAlias ¶
func (*Context) LookupTypeArray ¶
func (*Context) LookupTypeDef ¶
func (*Context) LookupTypeEnum ¶
func (*Context) LookupTypeMap ¶
func (*Context) LookupTypeRecord ¶
func (c *Context) LookupTypeRecord(columns []Column) (*TypeRecord, error)
LookupTypeRecord returns a TypeRecord within this context that binds with the indicated columns. Subsequent calls with the same columns will return the same record pointer. If the type doesn't exist, it's created, stored, and returned. The closure of types within the columns must all be from this type context. If you want to use columns from a different type context, use TranslateTypeRecord.
func (*Context) LookupTypeSet ¶
func (*Context) LookupTypeUnion ¶
func (*Context) LookupTypeValue ¶
func (*Context) MustLookupTypeRecord ¶
func (c *Context) MustLookupTypeRecord(columns []Column) *TypeRecord
func (*Context) TranslateType ¶
TranslateType takes a type from another context and creates and returns that type in this context.
func (*Context) TranslateTypeRecord ¶
func (t *Context) TranslateTypeRecord(ext *TypeRecord) (*TypeRecord, error)
type Mapper ¶
type Mapper struct {
// contains filtered or unexported fields
}
func (*Mapper) Lookup ¶
Lookup tranlates Zed types by type ID from one context to another. The first context is implied by the argument to Lookup() and the output type context is explicitly determined by the argument to NewMapper(). If a binding has not yet been entered, nil is returned and Enter() should be called to create the binding. There is a race here when two threads attempt to update the same ID, but it is safe because the outputContext will return the same the pointer so the second update does not change anything.
type RecordTypeError ¶
func (*RecordTypeError) Error ¶
func (r *RecordTypeError) Error() string
func (*RecordTypeError) Unwrap ¶
func (r *RecordTypeError) Unwrap() error
type Type ¶
type Type interface { Marshal(zcode.Bytes) (interface{}, error) // ID returns a unique (per Context) identifier that // represents this type. For an aliased type, this identifier // represents the actual underlying type and not the alias itself. // Callers that care about the underlying type of a Value for // example should prefer to use this instead of using the go // .(type) operator on a Type instance. ID() int String() string Format(zv zcode.Bytes) string }
A Type is an interface presented by a zeek type. Types can be used to infer type compatibility and create new values of the underlying type.
func InnerType ¶
InnerType returns the element type for the underlying set or array type or nil if the underlying type is not a set or array.
func LookupPrimitive ¶
func LookupPrimitiveByID ¶
type TypeArray ¶
type TypeArray struct { Type Type // contains filtered or unexported fields }
func NewTypeArray ¶
type TypeEnum ¶
type TypeEnum struct { Symbols []string // contains filtered or unexported fields }
func NewTypeEnum ¶
type TypeMap ¶
func NewTypeMap ¶
type TypeOfBool ¶
type TypeOfBool struct{}
func (*TypeOfBool) ID ¶
func (t *TypeOfBool) ID() int
func (*TypeOfBool) String ¶
func (t *TypeOfBool) String() string
type TypeOfBstring ¶
type TypeOfBstring struct{}
func (*TypeOfBstring) Format ¶
func (t *TypeOfBstring) Format(data zcode.Bytes) string
Values of type bstring may contain a mix of valid UTF-8 and arbitrary binary data. These are represented in output using the same formatting with "\x.." escapes as Zeek. In general, valid UTF-8 code points are passed through unmodified, though for the ZEEK_ASCII output format, all non-ascii bytes are escaped for compatibility with older versions of Zeek.
func (*TypeOfBstring) ID ¶
func (t *TypeOfBstring) ID() int
func (*TypeOfBstring) Marshal ¶
func (t *TypeOfBstring) Marshal(zv zcode.Bytes) (interface{}, error)
func (*TypeOfBstring) String ¶
func (t *TypeOfBstring) String() string
type TypeOfBytes ¶
type TypeOfBytes struct{}
func (*TypeOfBytes) ID ¶
func (t *TypeOfBytes) ID() int
func (*TypeOfBytes) String ¶
func (t *TypeOfBytes) String() string
type TypeOfDuration ¶
type TypeOfDuration struct{}
func (*TypeOfDuration) ID ¶
func (t *TypeOfDuration) ID() int
func (*TypeOfDuration) Marshal ¶
func (t *TypeOfDuration) Marshal(zv zcode.Bytes) (interface{}, error)
func (*TypeOfDuration) String ¶
func (t *TypeOfDuration) String() string
type TypeOfError ¶
type TypeOfError struct{}
func (*TypeOfError) ID ¶
func (t *TypeOfError) ID() int
func (*TypeOfError) String ¶
func (t *TypeOfError) String() string
type TypeOfFloat32 ¶
type TypeOfFloat32 struct{}
func (*TypeOfFloat32) ID ¶
func (t *TypeOfFloat32) ID() int
func (*TypeOfFloat32) Marshal ¶
func (t *TypeOfFloat32) Marshal(zb zcode.Bytes) (interface{}, error)
func (*TypeOfFloat32) String ¶
func (t *TypeOfFloat32) String() string
type TypeOfFloat64 ¶
type TypeOfFloat64 struct{}
func (*TypeOfFloat64) ID ¶
func (t *TypeOfFloat64) ID() int
func (*TypeOfFloat64) Marshal ¶
func (t *TypeOfFloat64) Marshal(zv zcode.Bytes) (interface{}, error)
func (*TypeOfFloat64) String ¶
func (t *TypeOfFloat64) String() string
type TypeOfInt16 ¶
type TypeOfInt16 struct{}
func (*TypeOfInt16) ID ¶
func (t *TypeOfInt16) ID() int
func (*TypeOfInt16) String ¶
func (t *TypeOfInt16) String() string
type TypeOfInt32 ¶
type TypeOfInt32 struct{}
func (*TypeOfInt32) ID ¶
func (t *TypeOfInt32) ID() int
func (*TypeOfInt32) String ¶
func (t *TypeOfInt32) String() string
type TypeOfInt64 ¶
type TypeOfInt64 struct{}
func (*TypeOfInt64) ID ¶
func (t *TypeOfInt64) ID() int
func (*TypeOfInt64) String ¶
func (t *TypeOfInt64) String() string
type TypeOfInt8 ¶
type TypeOfInt8 struct{}
func (*TypeOfInt8) ID ¶
func (t *TypeOfInt8) ID() int
func (*TypeOfInt8) String ¶
func (t *TypeOfInt8) String() string
type TypeOfNull ¶
type TypeOfNull struct{}
func (*TypeOfNull) ID ¶
func (t *TypeOfNull) ID() int
func (*TypeOfNull) String ¶
func (t *TypeOfNull) String() string
type TypeOfString ¶
type TypeOfString struct{}
func (*TypeOfString) ID ¶
func (t *TypeOfString) ID() int
func (*TypeOfString) String ¶
func (t *TypeOfString) String() string
type TypeOfTime ¶
type TypeOfTime struct{}
func (*TypeOfTime) ID ¶
func (t *TypeOfTime) ID() int
func (*TypeOfTime) String ¶
func (t *TypeOfTime) String() string
type TypeOfType ¶
type TypeOfType struct{}
func (*TypeOfType) ID ¶
func (t *TypeOfType) ID() int
func (*TypeOfType) String ¶
func (t *TypeOfType) String() string
type TypeOfUint16 ¶
type TypeOfUint16 struct{}
func (*TypeOfUint16) ID ¶
func (t *TypeOfUint16) ID() int
func (*TypeOfUint16) String ¶
func (t *TypeOfUint16) String() string
type TypeOfUint32 ¶
type TypeOfUint32 struct{}
func (*TypeOfUint32) ID ¶
func (t *TypeOfUint32) ID() int
func (*TypeOfUint32) String ¶
func (t *TypeOfUint32) String() string
type TypeOfUint64 ¶
type TypeOfUint64 struct{}
func (*TypeOfUint64) ID ¶
func (t *TypeOfUint64) ID() int
func (*TypeOfUint64) String ¶
func (t *TypeOfUint64) String() string
type TypeOfUint8 ¶
type TypeOfUint8 struct{}
func (*TypeOfUint8) ID ¶
func (t *TypeOfUint8) ID() int
func (*TypeOfUint8) String ¶
func (t *TypeOfUint8) String() string
type TypeRecord ¶
type TypeRecord struct { Columns []Column LUT map[string]int // contains filtered or unexported fields }
func NewTypeRecord ¶
func NewTypeRecord(id int, columns []Column) *TypeRecord
func TypeRecordOf ¶
func TypeRecordOf(typ Type) *TypeRecord
func (*TypeRecord) ColumnOfField ¶
func (t *TypeRecord) ColumnOfField(field string) (int, bool)
func (*TypeRecord) Decode ¶
func (t *TypeRecord) Decode(zv zcode.Bytes) ([]Value, error)
XXX we shouldn't need this... tests are using it
func (*TypeRecord) HasField ¶
func (t *TypeRecord) HasField(field string) bool
func (*TypeRecord) ID ¶
func (t *TypeRecord) ID() int
func (*TypeRecord) String ¶
func (t *TypeRecord) String() string
func (*TypeRecord) TypeOfField ¶
func (t *TypeRecord) TypeOfField(field string) (Type, bool)
type TypeSet ¶
type TypeSet struct { Type Type // contains filtered or unexported fields }
func NewTypeSet ¶
type TypeUnion ¶
type TypeUnion struct { Types []Type // contains filtered or unexported fields }
func NewTypeUnion ¶
type TypeVectorTable ¶
type TypeVectorTable struct {
// contains filtered or unexported fields
}
func NewTypeVectorTable ¶
func NewTypeVectorTable() *TypeVectorTable
func (*TypeVectorTable) Length ¶
func (t *TypeVectorTable) Length() int
func (*TypeVectorTable) Lookup ¶
func (t *TypeVectorTable) Lookup(types []Type) int
func (*TypeVectorTable) LookupByValues ¶
func (t *TypeVectorTable) LookupByValues(vals []Value) int
func (*TypeVectorTable) Types ¶
func (t *TypeVectorTable) Types(id int) []Type
type Value ¶
func NewBstring ¶
func NewDuration ¶
func NewFloat32 ¶
func NewFloat64 ¶
func NewTypeValue ¶
func (*Value) AccessString ¶ added in v0.32.0
func (*Value) AccessTime ¶ added in v0.32.0
func (*Value) AccessTimeByColumn ¶ added in v0.32.0
func (Value) ArrayIndex ¶
If the passed-in element is an array, attempt to get the idx'th element, and return its type and raw representation. Returns an error if the passed-in element is not an array or if idx is outside the array bounds.
func (*Value) ColumnOfField ¶ added in v0.32.0
func (Value) ContainerLength ¶
func (Value) Elements ¶
Elements returns an array of Values for the given container type. Returns an error if the element is not an array or set.
func (Value) Encode ¶
Encode appends the ZNG representation of this value to the passed in argument and returns the resulting zcode.Bytes (which may or may not be the same underlying buffer, as with append(), depending on its capacity)
func (*Value) FieldIter ¶ added in v0.32.0
func (r *Value) FieldIter() fieldIter
FieldIter returns a fieldIter iterator over the receiver's values.
func (Value) IsContainer ¶
func (Value) IsUnset ¶
IsUnset returns true iff v is an unset value. Unset values are represented with a zero-valued Value. A zero-valued value that is not unset is represented by a non-nil slice for Bytes of zero length.
func (Value) IsUnsetOrNil ¶
func (Value) MarshalJSON ¶
func (*Value) Slice ¶ added in v0.32.0
Slice returns the encoded zcode.Bytes corresponding to the indicated column or an error if a problem was encountered. If the encoded bytes result is nil without error, then that columnn is unset in this record value.
func (Value) String ¶
String implements fmt.Stringer.String. It should only be used for logs, debugging, etc. Any caller that requires a specific output format should use FormatAs() instead.
func (*Value) TypeCheck ¶ added in v0.32.0
TypeCheck checks that the Bytes field is structurally consistent with this value's Type. It does not check that the actual leaf values when parsed are type compatible with the leaf types.
func (*Value) TypeOfColumn ¶ added in v0.32.0
func (*Value) ValueByColumn ¶ added in v0.32.0
Value returns the indicated column as a Value. If the column doesn't exist or another error occurs, the nil Value is returned.
func (*Value) ValueByField ¶ added in v0.32.0
Source Files ¶
- alias.go
- array.go
- bool.go
- bstring.go
- builder.go
- bytes.go
- column.go
- columnbuilder.go
- context.go
- duration.go
- enum.go
- error.go
- escape.go
- fielditer.go
- float.go
- int.go
- ip.go
- map.go
- mapper.go
- name.go
- net.go
- null.go
- record.go
- recordval.go
- set.go
- split.go
- string.go
- time.go
- type.go
- typetype.go
- typevectortable.go
- union.go
- value.go
- walk.go
Directories ¶
Path | Synopsis |
---|---|
cmd
|
|
ast
Package ast declares the types used to represent syntax trees for Zed queries.
|
Package ast declares the types used to represent syntax trees for Zed queries. |
Package index provides an API for creating, merging, indexing, and querying zed indexes.
|
Package index provides an API for creating, merging, indexing, and querying zed indexes. |
Package mdtest finds example shell commands in Markdown files and runs them, checking for expected output and exit status.
|
Package mdtest finds example shell commands in Markdown files and runs them, checking for expected output and exit status. |
pkg
|
|
bufwriter
Package bufwriter provides a wrapper for a io.WriteCloser that uses buffered output via a bufio.Writer and calls Flush on close.
|
Package bufwriter provides a wrapper for a io.WriteCloser that uses buffered output via a bufio.Writer and calls Flush on close. |
byteconv
Package byteconv implements conversions from byte slice representations of various data types.
|
Package byteconv implements conversions from byte slice representations of various data types. |
charm
Package charm is minimilast CLI framework inspired by cobra and urfave/cli.
|
Package charm is minimilast CLI framework inspired by cobra and urfave/cli. |
colw
Package colw lays out columns for display of a list when you don't know ahead of time how many columns should exist.
|
Package colw lays out columns for display of a list when you don't know ahead of time how many columns should exist. |
glob
Package glob implements glob-style pattern matching
|
Package glob implements glob-style pattern matching |
repl
Package repl is a simple read-eval-print loop.
|
Package repl is a simple read-eval-print loop. |
rlimit
Package rlimit provides a single function, RaiseOpenFilesLimit.
|
Package rlimit provides a single function, RaiseOpenFilesLimit. |
storage/cache
Package cache contains facilities for caching immutable files, typically for a cloud object store.
|
Package cache contains facilities for caching immutable files, typically for a cloud object store. |
storage/mock
Package mock is a generated GoMock package.
|
Package mock is a generated GoMock package. |
combine
A combine proc merges multiple upstream inputs into one output.
|
A combine proc merges multiple upstream inputs into one output. |
mux
A mux proc merges multiple upstream inputs into one output like combine but labels each batch.
|
A mux proc merges multiple upstream inputs into one output like combine but labels each batch. |
rename
rename renames one or more fields in a record.
|
rename renames one or more fields in a record. |
Package zcode implements serialization and deserialzation for ZNG values.
|
Package zcode implements serialization and deserialzation for ZNG values. |
zngio
Package zngio provides an API for reading and writing zng values and directives in binary zng format.
|
Package zngio provides an API for reading and writing zng values and directives in binary zng format. |
Package zqe provides a mechanism to create or wrap errors with information that will aid in reporting them to users and returning them to api callers.
|
Package zqe provides a mechanism to create or wrap errors with information that will aid in reporting them to users and returning them to api callers. |
Package zson provides fundamental interfaces to the ZSON data format comprising Reader, Writer, Parser, and so forth.
|
Package zson provides fundamental interfaces to the ZSON data format comprising Reader, Writer, Parser, and so forth. |
Package zst implements reading and writing zst storage objects to and from zng row format.
|
Package zst implements reading and writing zst storage objects to and from zng row format. |
column
Package column implements the organization of columns on storage for a zst columnar storage object.
|
Package column implements the organization of columns on storage for a zst columnar storage object. |
Package ztest runs formulaic tests ("ztests") that can be (1) run in-process with the compiled-ini zq code base, (2) run as a sub-process using the zq executable build artifact, or (3) run as a bash script running a sequence of arbitrary shell commands invoking any of the build artifacts.
|
Package ztest runs formulaic tests ("ztests") that can be (1) run in-process with the compiled-ini zq code base, (2) run as a sub-process using the zq executable build artifact, or (3) run as a bash script running a sequence of arbitrary shell commands invoking any of the build artifacts. |