build: upgrade protobuf library (#22654)

pull/22832/head
Dane Strandboge 2021-11-02 16:00:54 -05:00 committed by GitHub
parent 88d6487f4a
commit f4e9ae94ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
72 changed files with 9331 additions and 14464 deletions

View File

@ -170,17 +170,9 @@ Most changes to the source do not require that the generated protocol buffer cod
But if you need to modify the protocol buffer code, you'll first need to install the protocol buffers toolchain.
First install the [protocol buffer compiler](https://developers.google.com/protocol-buffers/
) 2.6.1 or later for your OS:
) 3.17.3 or later for your OS.
Then install the go plugins:
```bash
$ go get github.com/gogo/protobuf/proto
$ go get github.com/gogo/protobuf/protoc-gen-gogo
$ go get github.com/gogo/protobuf/gogoproto
```
Finally run, `go generate` after updating any `*.proto` file:
Then run `go generate` after updating any `*.proto` file:
```bash
$ go generate ./...

View File

@ -124,14 +124,13 @@ generate-web-assets: static/static_gen.go
# generate-sources outputs all the Go files generated from protobufs, tmpls, and other tooling.
# These files are tracked by git; CI will enforce that they are up-to-date.
generate-sources: gogo tmpl stringer goimports
generate-sources: protoc tmpl stringer goimports
$(GO_GENERATE) ./influxql/... ./models/... ./pkg/... ./storage/... ./tsdb/... ./v1/...
generate: generate-web-assets generate-sources
gogo:
$(GO_INSTALL) github.com/gogo/protobuf/protoc-gen-gogo
$(GO_INSTALL) github.com/gogo/protobuf/protoc-gen-gogofaster
protoc:
$(GO_INSTALL) google.golang.org/protobuf/cmd/protoc-gen-go@v1.27.1
tmpl:
$(GO_INSTALL) github.com/benbjohnson/tmpl

View File

@ -5,7 +5,7 @@ import (
"io"
"time"
"github.com/gogo/protobuf/proto"
gogoproto "github.com/gogo/protobuf/proto" // Used for Prometheus
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxdb/v2/models"
)
@ -107,7 +107,7 @@ func (x MetricType) String() string {
// UnmarshalJSON implements the unmarshaler interface.
func (x *MetricType) UnmarshalJSON(data []byte) error {
value, err := proto.UnmarshalJSONEnum(metricTypeValue, data, "MetricType")
value, err := gogoproto.UnmarshalJSONEnum(metricTypeValue, data, "MetricType")
if err != nil {
return err
}

2
go.mod
View File

@ -93,6 +93,7 @@ require (
golang.org/x/text v0.3.6
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba
golang.org/x/tools v0.1.4
google.golang.org/protobuf v1.27.1
gopkg.in/vmihailenco/msgpack.v2 v2.9.1 // indirect
gopkg.in/yaml.v2 v2.3.0
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
@ -217,7 +218,6 @@ require (
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20210630183607-d20f26d13c79 // indirect
google.golang.org/grpc v1.39.0 // indirect
google.golang.org/protobuf v1.27.1 // indirect
gopkg.in/ini.v1 v1.51.0 // indirect
gopkg.in/square/go-jose.v2 v2.3.1 // indirect
)

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,6 @@
syntax = "proto2";
package query;
option go_package = ".;query";
message Point {
required string Name = 1;

View File

@ -15,8 +15,8 @@ import (
"sync"
"time"
"github.com/gogo/protobuf/proto"
"github.com/influxdata/influxql"
"google.golang.org/protobuf/proto"
)
// DefaultStatsInterval is the default value for IteratorEncoder.StatsInterval.

View File

@ -9,8 +9,8 @@ import (
"sync"
"time"
"github.com/gogo/protobuf/proto"
"github.com/influxdata/influxql"
"google.golang.org/protobuf/proto"
)
// DefaultStatsInterval is the default value for IteratorEncoder.StatsInterval.

View File

@ -9,10 +9,10 @@ import (
"regexp"
"time"
"github.com/gogo/protobuf/proto"
internal "github.com/influxdata/influxdb/v2/influxql/query/internal"
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxql"
"google.golang.org/protobuf/proto"
)
// ErrUnknownCall is returned when operating on an unknown function call.

View File

@ -13,8 +13,8 @@ import (
"encoding/binary"
"io"
"github.com/gogo/protobuf/proto"
internal "github.com/influxdata/influxdb/v2/influxql/query/internal"
"google.golang.org/protobuf/proto"
)
// FloatPoint represents a point with a float64 value.

View File

@ -7,8 +7,8 @@ import (
"encoding/binary"
"io"
"github.com/gogo/protobuf/proto"
internal "github.com/influxdata/influxdb/v2/influxql/query/internal"
"google.golang.org/protobuf/proto"
)
{{range .}}

View File

@ -8,9 +8,9 @@ import (
"math"
"sort"
"github.com/gogo/protobuf/proto"
internal "github.com/influxdata/influxdb/v2/influxql/query/internal"
"github.com/influxdata/influxql"
"google.golang.org/protobuf/proto"
)
// ZeroTime is the Unix nanosecond timestamp for no time.

View File

@ -4,4 +4,4 @@ package query // import "github.com/influxdata/influxdb/v2/influxql/query"
//go:generate tmpl -data=@tmpldata point.gen.go.tmpl
//go:generate tmpl -data=@tmpldata functions.gen.go.tmpl
//go:generate protoc --gogo_out=. internal/internal.proto
//go:generate protoc --go_out=internal/ internal/internal.proto

View File

@ -3,10 +3,10 @@ package mock
import (
"context"
"github.com/gogo/protobuf/proto"
"github.com/influxdata/influxdb/v2/storage/reads"
"github.com/influxdata/influxdb/v2/storage/reads/datatypes"
"github.com/influxdata/influxdb/v2/tsdb/cursors"
"google.golang.org/protobuf/proto"
)
type ReadsStore struct {

38
pkg/cmputil/cmputil.go Normal file
View File

@ -0,0 +1,38 @@
// Package cmputil provides helper utilities for the go-cmp package.
package cmputil
import (
"reflect"
"unicode"
"unicode/utf8"
"github.com/google/go-cmp/cmp"
"google.golang.org/protobuf/proto"
)
func IgnoreProtobufUnexported() cmp.Option {
return cmp.FilterPath(filterProtobufUnexported, cmp.Ignore())
}
func filterProtobufUnexported(p cmp.Path) bool {
// Determine if the path is pointing to a struct field.
sf, ok := p.Index(-1).(cmp.StructField)
if !ok {
return false
}
// Return true if it is a proto.Message and the field is unexported.
return implementsProtoMessage(p.Index(-2).Type()) && !isExported(sf.Name())
}
// isExported reports whether the identifier is exported.
func isExported(id string) bool {
r, _ := utf8.DecodeRuneInString(id)
return unicode.IsUpper(r)
}
var messageType = reflect.TypeOf((*proto.Message)(nil)).Elem()
func implementsProtoMessage(t reflect.Type) bool {
return t.Implements(messageType) || reflect.PtrTo(t).Implements(messageType)
}

View File

@ -1,8 +1,8 @@
package tracing
import (
"github.com/gogo/protobuf/proto"
"github.com/influxdata/influxdb/v2/pkg/tracing/wire"
"google.golang.org/protobuf/proto"
)
// A SpanContext represents the minimal information to identify a span in a trace.
@ -13,15 +13,20 @@ type SpanContext struct {
}
func (s SpanContext) MarshalBinary() ([]byte, error) {
ws := wire.SpanContext(s)
return proto.Marshal(&ws)
return proto.Marshal(&wire.SpanContext{
TraceID: s.TraceID,
SpanID: s.SpanID,
})
}
func (s *SpanContext) UnmarshalBinary(data []byte) error {
var ws wire.SpanContext
err := proto.Unmarshal(data, &ws)
if err == nil {
*s = SpanContext(ws)
*s = SpanContext{
TraceID: ws.TraceID,
SpanID: ws.SpanID,
}
}
return err
}

View File

@ -4,19 +4,20 @@ import (
"math"
"time"
"github.com/gogo/protobuf/proto"
"github.com/influxdata/influxdb/v2/pkg/tracing/fields"
"github.com/influxdata/influxdb/v2/pkg/tracing/labels"
"github.com/influxdata/influxdb/v2/pkg/tracing/wire"
"google.golang.org/protobuf/proto"
"google.golang.org/protobuf/types/known/timestamppb"
)
func fieldsToWire(set fields.Fields) []wire.Field {
var r []wire.Field
func fieldsToWire(set fields.Fields) []*wire.Field {
var r []*wire.Field
for _, f := range set {
wf := wire.Field{Key: f.Key()}
switch val := f.Value().(type) {
case string:
wf.FieldType = wire.FieldTypeString
wf.FieldType = wire.FieldType_FieldTypeString
wf.Value = &wire.Field_StringVal{StringVal: val}
case bool:
@ -24,30 +25,30 @@ func fieldsToWire(set fields.Fields) []wire.Field {
if val {
numericVal = 1
}
wf.FieldType = wire.FieldTypeBool
wf.FieldType = wire.FieldType_FieldTypeBool
wf.Value = &wire.Field_NumericVal{NumericVal: numericVal}
case int64:
wf.FieldType = wire.FieldTypeInt64
wf.FieldType = wire.FieldType_FieldTypeInt64
wf.Value = &wire.Field_NumericVal{NumericVal: val}
case uint64:
wf.FieldType = wire.FieldTypeUint64
wf.FieldType = wire.FieldType_FieldTypeUint64
wf.Value = &wire.Field_NumericVal{NumericVal: int64(val)}
case time.Duration:
wf.FieldType = wire.FieldTypeDuration
wf.FieldType = wire.FieldType_FieldTypeDuration
wf.Value = &wire.Field_NumericVal{NumericVal: int64(val)}
case float64:
wf.FieldType = wire.FieldTypeFloat64
wf.FieldType = wire.FieldType_FieldTypeFloat64
wf.Value = &wire.Field_NumericVal{NumericVal: int64(math.Float64bits(val))}
default:
continue
}
r = append(r, wf)
r = append(r, &wf)
}
return r
}
@ -64,13 +65,13 @@ func (t *Trace) MarshalBinary() ([]byte, error) {
wt := wire.Trace{}
for _, sp := range t.spans {
wt.Spans = append(wt.Spans, &wire.Span{
Context: wire.SpanContext{
Context: &wire.SpanContext{
TraceID: sp.Context.TraceID,
SpanID: sp.Context.SpanID,
},
ParentSpanID: sp.ParentSpanID,
Name: sp.Name,
Start: sp.Start,
Start: timestamppb.New(sp.Start),
Labels: labelsToWire(sp.Labels),
Fields: fieldsToWire(sp.Fields),
})
@ -79,30 +80,30 @@ func (t *Trace) MarshalBinary() ([]byte, error) {
return proto.Marshal(&wt)
}
func wireToFields(wfs []wire.Field) fields.Fields {
func wireToFields(wfs []*wire.Field) fields.Fields {
var fs []fields.Field
for _, wf := range wfs {
switch wf.FieldType {
case wire.FieldTypeString:
case wire.FieldType_FieldTypeString:
fs = append(fs, fields.String(wf.Key, wf.GetStringVal()))
case wire.FieldTypeBool:
case wire.FieldType_FieldTypeBool:
var boolVal bool
if wf.GetNumericVal() != 0 {
boolVal = true
}
fs = append(fs, fields.Bool(wf.Key, boolVal))
case wire.FieldTypeInt64:
case wire.FieldType_FieldTypeInt64:
fs = append(fs, fields.Int64(wf.Key, wf.GetNumericVal()))
case wire.FieldTypeUint64:
case wire.FieldType_FieldTypeUint64:
fs = append(fs, fields.Uint64(wf.Key, uint64(wf.GetNumericVal())))
case wire.FieldTypeDuration:
case wire.FieldType_FieldTypeDuration:
fs = append(fs, fields.Duration(wf.Key, time.Duration(wf.GetNumericVal())))
case wire.FieldTypeFloat64:
case wire.FieldType_FieldTypeFloat64:
fs = append(fs, fields.Float64(wf.Key, math.Float64frombits(uint64(wf.GetNumericVal()))))
}
}
@ -126,7 +127,7 @@ func (t *Trace) UnmarshalBinary(data []byte) error {
},
ParentSpanID: sp.ParentSpanID,
Name: sp.Name,
Start: sp.Start,
Start: sp.Start.AsTime(),
Labels: labels.New(sp.Labels...),
Fields: wireToFields(sp.Fields),
}

View File

@ -1,4 +1,4 @@
//Package wire is used to serialize a trace.
package wire
//go:generate sh -c "protoc -I$(../../../scripts/gogo-path.sh) -I. --gogofaster_out=Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types:. binary.proto"
//go:generate protoc --go_out=. binary.proto

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,21 @@
syntax = "proto3";
package wire;
option go_package = ".;wire";
import "gogoproto/gogo.proto";
import "google/protobuf/timestamp.proto";
message SpanContext {
uint64 trace_id = 1 [(gogoproto.customname) = "TraceID"];
uint64 span_id = 2 [(gogoproto.customname) = "SpanID"];
uint64 TraceID = 1;
uint64 SpanID = 2;
}
message Span {
SpanContext context = 1 [(gogoproto.nullable) = false];
uint64 parent_span_id = 2 [(gogoproto.customname) = "ParentSpanID"];
SpanContext context = 1; // [(gogoproto.nullable) = false];
uint64 ParentSpanID = 2;
string name = 3;
google.protobuf.Timestamp start_time = 4 [(gogoproto.customname) = "Start", (gogoproto.stdtime) = true, (gogoproto.nullable) = false];
google.protobuf.Timestamp Start = 4; // [(gogoproto.customname) = "Start", (gogoproto.stdtime) = true, (gogoproto.nullable) = false];
repeated string labels = 5;
repeated Field fields = 6 [(gogoproto.nullable) = false];
repeated Field fields = 6; // [(gogoproto.nullable) = false];
}
message Trace {
@ -23,22 +23,21 @@ message Trace {
}
message Field {
enum FieldType {
option (gogoproto.goproto_enum_prefix) = false;
STRING = 0 [(gogoproto.enumvalue_customname) = "FieldTypeString"];
BOOL = 1 [(gogoproto.enumvalue_customname) = "FieldTypeBool"];
INT_64 = 2 [(gogoproto.enumvalue_customname) = "FieldTypeInt64"];
UINT_64 = 3 [(gogoproto.enumvalue_customname) = "FieldTypeUint64"];
DURATION = 4 [(gogoproto.enumvalue_customname) = "FieldTypeDuration"];
FLOAT_64 = 6 [(gogoproto.enumvalue_customname) = "FieldTypeFloat64"];
}
string key = 1;
FieldType field_type = 2 [(gogoproto.customname) = "FieldType"];
FieldType FieldType = 2;
oneof value {
sfixed64 numeric_val = 3 [(gogoproto.customname) = "NumericVal"];
string string_val = 4 [(gogoproto.customname) = "StringVal"];
sfixed64 NumericVal = 3;
string StringVal = 4;
}
}
enum FieldType {
FieldTypeString = 0;
FieldTypeBool = 1;
FieldTypeInt64 = 2;
FieldTypeUint64 = 3;
FieldTypeDuration = 4;
FieldTypeFloat64 = 6;
}

View File

@ -19,7 +19,7 @@ var (
func (op LogicalOperator) Value() (datatypes.Node_Logical, error) {
switch op {
case LogicalAnd:
return datatypes.LogicalAnd, nil
return datatypes.Node_LogicalAnd, nil
default:
return 0, &errors.Error{
Code: errors.EInvalid,
@ -51,7 +51,7 @@ func (n LogicalNode) ToDataType() (*datatypes.Node, error) {
}
}
return &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{
Logical: logicalOp,
},

View File

@ -6,6 +6,7 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/models"
"github.com/influxdata/influxdb/v2/pkg/cmputil"
"github.com/influxdata/influxdb/v2/storage/reads/datatypes"
influxtesting "github.com/influxdata/influxdb/v2/testing"
)
@ -30,15 +31,15 @@ func TestDataTypeConversion(t *testing.T) {
},
},
dataType: &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: "k1"},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "v1",
},
@ -56,15 +57,15 @@ func TestDataTypeConversion(t *testing.T) {
},
},
dataType: &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonNotEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonNotEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: "k1"},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "v1",
},
@ -82,15 +83,15 @@ func TestDataTypeConversion(t *testing.T) {
},
},
dataType: &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: models.MeasurementTagKey},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "cpu",
},
@ -108,15 +109,15 @@ func TestDataTypeConversion(t *testing.T) {
},
},
dataType: &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonNotEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonNotEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: models.MeasurementTagKey},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "cpu",
},
@ -134,15 +135,15 @@ func TestDataTypeConversion(t *testing.T) {
},
},
dataType: &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: models.FieldKeyTagKey},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "cpu",
},
@ -160,15 +161,15 @@ func TestDataTypeConversion(t *testing.T) {
},
},
dataType: &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonNotEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonNotEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: models.FieldKeyTagKey},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "cpu",
},
@ -198,21 +199,21 @@ func TestDataTypeConversion(t *testing.T) {
},
},
dataType: &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{
Logical: datatypes.LogicalAnd,
Logical: datatypes.Node_LogicalAnd,
},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: "k1"},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "v1",
},
@ -220,15 +221,15 @@ func TestDataTypeConversion(t *testing.T) {
},
},
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: "k2"},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "v2",
},
@ -272,27 +273,27 @@ func TestDataTypeConversion(t *testing.T) {
},
},
dataType: &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{
Logical: datatypes.LogicalAnd,
Logical: datatypes.Node_LogicalAnd,
},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeLogicalExpression,
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{
Logical: datatypes.LogicalAnd,
Logical: datatypes.Node_LogicalAnd,
},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: "k3"},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "v3",
},
@ -300,15 +301,15 @@ func TestDataTypeConversion(t *testing.T) {
},
},
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: "k4"},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "v4",
},
@ -318,15 +319,15 @@ func TestDataTypeConversion(t *testing.T) {
},
},
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: "k2"},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "v2",
},
@ -344,7 +345,7 @@ func TestDataTypeConversion(t *testing.T) {
if c.err != nil {
continue
}
if diff := cmp.Diff(dataType, c.dataType); diff != "" {
if diff := cmp.Diff(dataType, c.dataType, cmputil.IgnoreProtobufUnexported()); diff != "" {
t.Fatalf("%s failed nodes are different, diff: %s", c.name, diff)
}
}

View File

@ -24,14 +24,14 @@ func NodeTypeLiteral(tr TagRuleNode) *datatypes.Node {
fallthrough
case influxdb.NotRegexEqual:
return &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_RegexValue{
RegexValue: tr.Value,
},
}
default:
return &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: tr.Value,
},
@ -43,9 +43,9 @@ func NodeTypeLiteral(tr TagRuleNode) *datatypes.Node {
func NodeComparison(op influxdb.Operator) (datatypes.Node_Comparison, error) {
switch op {
case influxdb.Equal:
return datatypes.ComparisonEqual, nil
return datatypes.Node_ComparisonEqual, nil
case influxdb.NotEqual:
return datatypes.ComparisonNotEqual, nil
return datatypes.Node_ComparisonNotEqual, nil
case influxdb.RegexEqual:
fallthrough
case influxdb.NotRegexEqual:
@ -72,11 +72,11 @@ func (n TagRuleNode) ToDataType() (*datatypes.Node, error) {
n.Key = special
}
return &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: compare},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: n.Key},
},
NodeTypeLiteral(n),

View File

@ -6,7 +6,6 @@ import (
"time"
"github.com/apache/arrow/go/arrow/memory"
"github.com/gogo/protobuf/proto"
"github.com/influxdata/flux"
"github.com/influxdata/flux/execute"
"github.com/influxdata/flux/execute/table"
@ -21,6 +20,7 @@ import (
"github.com/influxdata/influxdb/v2/tsdb/cursors"
"github.com/influxdata/influxdb/v2/v1/services/storage"
"github.com/stretchr/testify/require"
"google.golang.org/protobuf/proto"
)
var (
@ -33,22 +33,22 @@ func TestProvider_SeriesCardinalityReader(t *testing.T) {
store := &mock.ReadsStore{
ReadSeriesCardinalityFn: func(ctx context.Context, req *datatypes.ReadSeriesCardinalityRequest) (cursors.Int64Iterator, error) {
source, err := storage.GetReadSource(*req.ReadSource)
source, err := storage.GetReadSource(req.GetReadSource())
if err != nil {
return nil, err
}
if want, got := orgID, source.GetOrgID(); want != got {
if want, got := orgID, platform.ID(source.GetOrgID()); want != got {
t.Errorf("unexpected org id -want/+got:\n\t- %d\n\t+ %d", want, got)
}
if want, got := bucketID, source.GetBucketID(); want != got {
if want, got := bucketID, platform.ID(source.GetBucketID()); want != got {
t.Errorf("unexpected org id -want/+got:\n\t- %d\n\t+ %d", want, got)
}
if want, got := req.Range.Start, int64(1000000000); want != got {
if want, got := req.Range.GetStart(), int64(1000000000); want != got {
t.Errorf("unexpected start range -want/+got:\n\t- %d\n\t+ %d", want, got)
}
if want, got := req.Range.End, int64(2000000000); want != got {
if want, got := req.Range.GetEnd(), int64(2000000000); want != got {
t.Errorf("unexpected end range -want/+got:\n\t- %d\n\t+ %d", want, got)
}

View File

@ -23,6 +23,7 @@ import (
"github.com/influxdata/influxdb/v2/mock"
"github.com/influxdata/influxdb/v2/query/stdlib/influxdata/influxdb"
"github.com/influxdata/influxdb/v2/storage/reads/datatypes"
"google.golang.org/protobuf/testing/protocmp"
)
func fluxTime(t int64) flux.Time {
@ -41,13 +42,15 @@ func TestPushDownRangeRule(t *testing.T) {
Stop: fluxTime(10),
},
}
readRangeSpec := influxdb.ReadRangePhysSpec{
createRangeSpec := func() *influxdb.ReadRangePhysSpec {
return &influxdb.ReadRangePhysSpec{
Bucket: "my-bucket",
Bounds: flux.Bounds{
Start: fluxTime(5),
Stop: fluxTime(10),
},
}
}
tests := []plantest.RuleTestCase{
{
@ -66,7 +69,7 @@ func TestPushDownRangeRule(t *testing.T) {
},
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadRange", &readRangeSpec),
plan.CreatePhysicalNode("ReadRange", createRangeSpec()),
},
},
},
@ -90,7 +93,7 @@ func TestPushDownRangeRule(t *testing.T) {
},
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadRange", &readRangeSpec),
plan.CreatePhysicalNode("ReadRange", createRangeSpec()),
plan.CreatePhysicalNode("count", &universe.CountProcedureSpec{}),
},
Edges: [][2]int{{0, 1}},
@ -122,7 +125,7 @@ func TestPushDownRangeRule(t *testing.T) {
},
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadRange", &readRangeSpec),
plan.CreatePhysicalNode("ReadRange", createRangeSpec()),
plan.CreatePhysicalNode("count", &universe.CountProcedureSpec{}),
plan.CreatePhysicalNode("mean", &universe.MeanProcedureSpec{}),
},
@ -138,7 +141,7 @@ func TestPushDownRangeRule(t *testing.T) {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
@ -483,19 +486,21 @@ func TestPushDownFilterRule(t *testing.T) {
for _, tc := range tests {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
func TestPushDownGroupRule(t *testing.T) {
readRange := influxdb.ReadRangePhysSpec{
createRangeSpec := func() *influxdb.ReadRangePhysSpec{
return &influxdb.ReadRangePhysSpec{
Bucket: "my-bucket",
Bounds: flux.Bounds{
Start: fluxTime(5),
Stop: fluxTime(10),
},
}
}
tests := []plantest.RuleTestCase{
{
@ -506,7 +511,7 @@ func TestPushDownGroupRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", &universe.GroupProcedureSpec{
GroupMode: flux.GroupModeBy,
GroupKeys: []string{"_measurement", "tag0", "tag1"},
@ -517,7 +522,7 @@ func TestPushDownGroupRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
GroupKeys: []string{"_measurement", "tag0", "tag1"},
}),
@ -532,7 +537,7 @@ func TestPushDownGroupRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", &universe.GroupProcedureSpec{
GroupMode: flux.GroupModeBy,
GroupKeys: []string{"_measurement", "tag0", "tag1"},
@ -547,7 +552,7 @@ func TestPushDownGroupRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
GroupKeys: []string{"_measurement", "tag0", "tag1"},
}),
@ -568,7 +573,7 @@ func TestPushDownGroupRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", &universe.GroupProcedureSpec{
GroupMode: flux.GroupModeBy,
GroupKeys: []string{"_measurement", "tag0", "tag1"},
@ -590,7 +595,7 @@ func TestPushDownGroupRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", &universe.GroupProcedureSpec{
GroupMode: flux.GroupModeBy,
GroupKeys: []string{},
@ -603,7 +608,7 @@ func TestPushDownGroupRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
GroupKeys: []string{},
}),
@ -618,7 +623,7 @@ func TestPushDownGroupRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", &universe.GroupProcedureSpec{
GroupMode: flux.GroupModeExcept,
GroupKeys: []string{"_measurement", "tag0", "tag1"},
@ -637,7 +642,7 @@ func TestPushDownGroupRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", &universe.GroupProcedureSpec{
GroupMode: flux.GroupModeNone,
GroupKeys: []string{},
@ -657,7 +662,7 @@ func TestPushDownGroupRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreatePhysicalNode("count", &universe.CountProcedureSpec{}),
plan.CreateLogicalNode("group", &universe.GroupProcedureSpec{
GroupMode: flux.GroupModeBy,
@ -677,7 +682,7 @@ func TestPushDownGroupRule(t *testing.T) {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
@ -896,7 +901,7 @@ func TestReadTagKeysRule(t *testing.T) {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
@ -1117,7 +1122,7 @@ func TestReadTagValuesRule(t *testing.T) {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
@ -1162,13 +1167,15 @@ func meanProcedureSpec() *universe.MeanProcedureSpec {
// Window Aggregate Testing
//
func TestPushDownWindowAggregateRule(t *testing.T) {
readRange := influxdb.ReadRangePhysSpec{
createRangeSpec := func() *influxdb.ReadRangePhysSpec {
return &influxdb.ReadRangePhysSpec{
Bucket: "my-bucket",
Bounds: flux.Bounds{
Start: fluxTime(5),
Stop: fluxTime(10),
},
}
}
dur1m := values.ConvertDurationNsecs(60 * time.Second)
dur2m := values.ConvertDurationNsecs(120 * time.Second)
@ -1211,7 +1218,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
simplePlanWithWindowAgg := func(window universe.WindowProcedureSpec, agg plan.NodeID, spec plan.ProcedureSpec) *plantest.PlanSpec {
return &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window", &window),
plan.CreateLogicalNode(agg, spec),
},
@ -1227,7 +1234,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
spec := &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{proc},
WindowEvery: flux.ConvertDuration(60000000000 * time.Nanosecond),
CreateEmpty: createEmpty,
@ -1312,7 +1319,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
Rules: []plan.Rule{influxdb.PushDownWindowAggregateRule{}},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window", &window1m),
plan.CreateLogicalNode("min", minProcedureSpec()),
plan.CreateLogicalNode("count", countProcedureSpec()),
@ -1328,7 +1335,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{"min"},
WindowEvery: flux.ConvertDuration(60000000000 * time.Nanosecond),
}),
@ -1363,7 +1370,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{universe.LastKind},
WindowEvery: flux.ConvertDuration(120000000000 * time.Nanosecond),
Offset: flux.ConvertDuration(60000000000 * time.Nanosecond),
@ -1381,7 +1388,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{universe.LastKind},
WindowEvery: dur1mo,
}),
@ -1398,7 +1405,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{universe.LastKind},
WindowEvery: dur1y,
}),
@ -1419,7 +1426,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{universe.LastKind},
WindowEvery: dur1y,
Offset: dur1mo,
@ -1441,7 +1448,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{universe.LastKind},
WindowEvery: dur1y,
Offset: durMixed,
@ -1567,7 +1574,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
Rules: []plan.Rule{influxdb.PushDownWindowAggregateRule{}},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window", &window1m),
plan.CreateLogicalNode("min", minProcedureSpec()),
plan.CreateLogicalNode("min", minProcedureSpec()),
@ -1590,7 +1597,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
Rules: []plan.Rule{influxdb.PushDownWindowAggregateRule{}},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window", &window1m),
plan.CreateLogicalNode("min", minProcedureSpec()),
plan.CreateLogicalNode("window", &window2m),
@ -1617,7 +1624,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
noPatternMatch1 := func() *plantest.PlanSpec {
return &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreatePhysicalNode("filter", &universe.FilterProcedureSpec{
Fn: makeResolvedFilterFn(pushableFn1),
}),
@ -1644,7 +1651,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
noPatternMatch2 := func() *plantest.PlanSpec {
return &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window", &window1m),
plan.CreatePhysicalNode("filter", &universe.FilterProcedureSpec{
Fn: makeResolvedFilterFn(pushableFn1),
@ -1680,7 +1687,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
aggregateWindowPlan := func(window universe.WindowProcedureSpec, agg plan.NodeID, spec plan.ProcedureSpec, timeColumn string) *plantest.PlanSpec {
return &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window1", &window),
plan.CreateLogicalNode(agg, spec),
plan.CreateLogicalNode("duplicate", duplicate(timeColumn, "_time")),
@ -1699,7 +1706,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
spec := &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregateByTime", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{proc},
WindowEvery: flux.ConvertDuration(60000000000 * time.Nanosecond),
CreateEmpty: createEmpty,
@ -1775,7 +1782,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window1", &window1m),
plan.CreateLogicalNode("count", countProcedureSpec()),
plan.CreateLogicalNode("duplicate", duplicate("_stop", "time")),
@ -1804,7 +1811,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window1", &window1m),
plan.CreateLogicalNode("count", countProcedureSpec()),
plan.CreateLogicalNode("duplicate", duplicate("_stop", "_time")),
@ -1833,7 +1840,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window1", &window1m),
plan.CreateLogicalNode("count", countProcedureSpec()),
plan.CreateLogicalNode("duplicate", duplicate("_stop", "_time")),
@ -1862,7 +1869,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window1", &window1m),
plan.CreateLogicalNode("count", countProcedureSpec()),
plan.CreateLogicalNode("duplicate", duplicate("_stop", "_time")),
@ -1891,7 +1898,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window1", &window1m),
plan.CreateLogicalNode("count", countProcedureSpec()),
plan.CreateLogicalNode("duplicate", duplicate("_stop", "_time")),
@ -1932,7 +1939,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("window1", &window1m),
plan.CreateLogicalNode("count", countProcedureSpec()),
plan.CreateLogicalNode("rename", &rename),
@ -1955,7 +1962,7 @@ func TestPushDownWindowAggregateRule(t *testing.T) {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
@ -1967,7 +1974,8 @@ func TestPushDownWindowForceAggregateRule(t *testing.T) {
influxdb.PushDownWindowAggregateByTimeRule{},
}
readRange := influxdb.ReadRangePhysSpec{
createRangeSpec := func() *influxdb.ReadRangePhysSpec {
return &influxdb.ReadRangePhysSpec{
Bucket: "test",
Bounds: flux.Bounds{
Start: flux.Time{
@ -1979,6 +1987,7 @@ func TestPushDownWindowForceAggregateRule(t *testing.T) {
},
},
}
}
tests := []plantest.RuleTestCase{
{
@ -1987,7 +1996,7 @@ func TestPushDownWindowForceAggregateRule(t *testing.T) {
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
WindowEvery: flux.ConvertDuration(5 * time.Minute),
Aggregates: []plan.ProcedureKind{
universe.MaxKind,
@ -2002,7 +2011,7 @@ func TestPushDownWindowForceAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("merged_ReadWindowAggregate_fill", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
WindowEvery: flux.ConvertDuration(5 * time.Minute),
Aggregates: []plan.ProcedureKind{
universe.MaxKind,
@ -2018,7 +2027,7 @@ func TestPushDownWindowForceAggregateRule(t *testing.T) {
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
WindowEvery: flux.ConvertDuration(5 * time.Minute),
Aggregates: []plan.ProcedureKind{
universe.MaxKind,
@ -2035,7 +2044,7 @@ func TestPushDownWindowForceAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("merged_ReadWindowAggregate_fill0_fill1", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
WindowEvery: flux.ConvertDuration(5 * time.Minute),
Aggregates: []plan.ProcedureKind{
universe.MaxKind,
@ -2051,7 +2060,7 @@ func TestPushDownWindowForceAggregateRule(t *testing.T) {
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
WindowEvery: flux.ConvertDuration(math.MaxInt64),
Aggregates: []plan.ProcedureKind{
universe.MaxKind,
@ -2069,7 +2078,7 @@ func TestPushDownWindowForceAggregateRule(t *testing.T) {
for _, tc := range tests {
t.Run(tc.Name, func(t *testing.T) {
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
@ -2092,13 +2101,15 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
haveCaps := withFlagger
noCaps := context.Background()
readRange := influxdb.ReadRangePhysSpec{
createRangeSpec := func() *influxdb.ReadRangePhysSpec {
return &influxdb.ReadRangePhysSpec{
Bucket: "my-bucket",
Bounds: flux.Bounds{
Start: fluxTime(5),
Stop: fluxTime(10),
},
}
}
group := func(mode flux.GroupMode, keys ...string) *universe.GroupProcedureSpec {
return &universe.GroupProcedureSpec{
@ -2150,7 +2161,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
simplePlan := func(window universe.WindowProcedureSpec, agg plan.NodeID, spec plan.ProcedureSpec, successors ...plan.Node) *plantest.PlanSpec {
pspec := &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", group(flux.GroupModeBy)),
plan.CreateLogicalNode("window", &window),
plan.CreateLogicalNode(agg, spec),
@ -2173,7 +2184,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
spec := &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{proc},
WindowEvery: every,
CreateEmpty: createEmpty,
@ -2238,7 +2249,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
}),
plan.CreatePhysicalNode("window", &window1m),
@ -2300,7 +2311,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
Rules: rules,
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", group(flux.GroupModeBy, "host")),
plan.CreateLogicalNode("window", &window1m),
plan.CreateLogicalNode("min", minProcedureSpec()),
@ -2324,7 +2335,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
Rules: rules,
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", group(flux.GroupModeBy, "_start", "host")),
plan.CreateLogicalNode("window", &window1m),
plan.CreateLogicalNode("min", minProcedureSpec()),
@ -2348,7 +2359,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
Rules: rules,
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", group(flux.GroupModeBy, "host")),
plan.CreateLogicalNode("window", &universe.WindowProcedureSpec{
Window: plan.WindowSpec{
@ -2374,7 +2385,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadWindowAggregate", &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
Aggregates: []plan.ProcedureKind{universe.MinKind},
WindowEvery: dur2m,
Offset: dur1m,
@ -2400,7 +2411,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
}),
plan.CreatePhysicalNode("window", &window),
@ -2474,7 +2485,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
}),
plan.CreatePhysicalNode("window", &window1m),
@ -2500,7 +2511,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
}),
plan.CreatePhysicalNode("window", &window1m),
@ -2522,7 +2533,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
Rules: rules,
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", group(flux.GroupModeBy)),
plan.CreateLogicalNode("window", &window1m),
plan.CreateLogicalNode("min", minProcedureSpec()),
@ -2538,7 +2549,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
}),
plan.CreatePhysicalNode("window", &window1m),
@ -2562,7 +2573,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
Rules: rules,
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreateLogicalNode("ReadRange", &readRange),
plan.CreateLogicalNode("ReadRange", createRangeSpec()),
plan.CreateLogicalNode("group", group(flux.GroupModeBy)),
plan.CreateLogicalNode("window", &window1m),
plan.CreateLogicalNode("min", minProcedureSpec()),
@ -2578,7 +2589,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
}),
plan.CreatePhysicalNode("window", &window1m),
@ -2602,7 +2613,7 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
After: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadGroup", &influxdb.ReadGroupPhysSpec{
ReadRangePhysSpec: readRange,
ReadRangePhysSpec: *createRangeSpec(),
GroupMode: flux.GroupModeBy,
}),
plan.CreatePhysicalNode("window", &window1m),
@ -2619,23 +2630,25 @@ func TestTransposeGroupToWindowAggregateRule(t *testing.T) {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
func TestPushDownBareAggregateRule(t *testing.T) {
readRange := &influxdb.ReadRangePhysSpec{
createRangeSpec := func() *influxdb.ReadRangePhysSpec {
return &influxdb.ReadRangePhysSpec{
Bucket: "my-bucket",
Bounds: flux.Bounds{
Start: fluxTime(5),
Stop: fluxTime(10),
},
}
}
readWindowAggregate := func(proc plan.ProcedureKind) *influxdb.ReadWindowAggregatePhysSpec {
return &influxdb.ReadWindowAggregatePhysSpec{
ReadRangePhysSpec: *(readRange.Copy().(*influxdb.ReadRangePhysSpec)),
ReadRangePhysSpec: *createRangeSpec(),
WindowEvery: flux.ConvertDuration(math.MaxInt64 * time.Nanosecond),
Aggregates: []plan.ProcedureKind{proc},
}
@ -2649,7 +2662,7 @@ func TestPushDownBareAggregateRule(t *testing.T) {
Rules: []plan.Rule{influxdb.PushDownBareAggregateRule{}},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadRange", readRange),
plan.CreatePhysicalNode("ReadRange", createRangeSpec()),
plan.CreatePhysicalNode("count", countProcedureSpec()),
},
Edges: [][2]int{
@ -2669,7 +2682,7 @@ func TestPushDownBareAggregateRule(t *testing.T) {
Rules: []plan.Rule{influxdb.PushDownBareAggregateRule{}},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadRange", readRange),
plan.CreatePhysicalNode("ReadRange", createRangeSpec()),
plan.CreatePhysicalNode("sum", sumProcedureSpec()),
},
Edges: [][2]int{
@ -2689,7 +2702,7 @@ func TestPushDownBareAggregateRule(t *testing.T) {
Rules: []plan.Rule{influxdb.PushDownBareAggregateRule{}},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadRange", readRange),
plan.CreatePhysicalNode("ReadRange", createRangeSpec()),
plan.CreatePhysicalNode("first", firstProcedureSpec()),
},
Edges: [][2]int{
@ -2709,7 +2722,7 @@ func TestPushDownBareAggregateRule(t *testing.T) {
Rules: []plan.Rule{influxdb.PushDownBareAggregateRule{}},
Before: &plantest.PlanSpec{
Nodes: []plan.Node{
plan.CreatePhysicalNode("ReadRange", readRange),
plan.CreatePhysicalNode("ReadRange", createRangeSpec()),
plan.CreatePhysicalNode("last", lastProcedureSpec()),
},
Edges: [][2]int{
@ -2728,7 +2741,7 @@ func TestPushDownBareAggregateRule(t *testing.T) {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
@ -3021,7 +3034,7 @@ func TestPushDownGroupAggregateRule(t *testing.T) {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
plantest.PhysicalRuleTestHelper(t, &tc)
plantest.PhysicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}
@ -3095,7 +3108,7 @@ func TestMergeFilterRule(t *testing.T) {
tc := tc
t.Run(tc.Name, func(t *testing.T) {
t.Parallel()
plantest.LogicalRuleTestHelper(t, &tc)
plantest.LogicalRuleTestHelper(t, &tc, protocmp.Transform())
})
}
}

View File

@ -31,9 +31,9 @@ func mergePredicates(op ast.LogicalOperatorKind, predicates ...*datatypes.Predic
var value datatypes.Node_Logical
switch op {
case ast.AndOperator:
value = datatypes.LogicalAnd
value = datatypes.Node_LogicalAnd
case ast.OrOperator:
value = datatypes.LogicalOr
value = datatypes.Node_LogicalOr
default:
return nil, fmt.Errorf("unknown logical operator %v", op)
}
@ -43,7 +43,7 @@ func mergePredicates(op ast.LogicalOperatorKind, predicates ...*datatypes.Predic
root := predicates[len(predicates)-1].Root
for i := len(predicates) - 2; i >= 0; i-- {
root = &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: value},
Children: []*datatypes.Node{
predicates[i].Root,
@ -71,14 +71,14 @@ func toStoragePredicateHelper(n semantic.Expression, objectName string) (*dataty
switch n.Operator {
case ast.AndOperator:
return &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.LogicalAnd},
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.Node_LogicalAnd},
Children: children,
}, nil
case ast.OrOperator:
return &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.LogicalOr},
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.Node_LogicalOr},
Children: children,
}, nil
default:
@ -99,41 +99,41 @@ func toStoragePredicateHelper(n semantic.Expression, objectName string) (*dataty
return nil, err
}
return &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: op},
Children: children,
}, nil
case *semantic.StringLiteral:
return &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: n.Value,
},
}, nil
case *semantic.IntegerLiteral:
return &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_IntegerValue{
IntegerValue: n.Value,
},
}, nil
case *semantic.BooleanLiteral:
return &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_BooleanValue{
BooleanValue: n.Value,
},
}, nil
case *semantic.FloatLiteral:
return &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_FloatValue{
FloatValue: n.Value,
},
}, nil
case *semantic.RegexpLiteral:
return &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_RegexValue{
RegexValue: n.Value.String(),
},
@ -146,21 +146,21 @@ func toStoragePredicateHelper(n semantic.Expression, objectName string) (*dataty
switch n.Property {
case datatypes.FieldKey:
return &datatypes.Node{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{
TagRefValue: models.FieldKeyTagKey,
},
}, nil
case datatypes.MeasurementKey:
return &datatypes.Node{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{
TagRefValue: models.MeasurementTagKey,
},
}, nil
case datatypes.ValueKey:
return &datatypes.Node{
NodeType: datatypes.NodeTypeFieldRef,
NodeType: datatypes.Node_TypeFieldRef,
Value: &datatypes.Node_FieldRefValue{
FieldRefValue: datatypes.ValueKey,
},
@ -168,7 +168,7 @@ func toStoragePredicateHelper(n semantic.Expression, objectName string) (*dataty
}
return &datatypes.Node{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{
TagRefValue: n.Property,
},
@ -185,23 +185,23 @@ func toStoragePredicateHelper(n semantic.Expression, objectName string) (*dataty
func toComparisonOperator(o ast.OperatorKind) (datatypes.Node_Comparison, error) {
switch o {
case ast.EqualOperator:
return datatypes.ComparisonEqual, nil
return datatypes.Node_ComparisonEqual, nil
case ast.NotEqualOperator:
return datatypes.ComparisonNotEqual, nil
return datatypes.Node_ComparisonNotEqual, nil
case ast.RegexpMatchOperator:
return datatypes.ComparisonRegex, nil
return datatypes.Node_ComparisonRegex, nil
case ast.NotRegexpMatchOperator:
return datatypes.ComparisonNotRegex, nil
return datatypes.Node_ComparisonNotRegex, nil
case ast.StartsWithOperator:
return datatypes.ComparisonStartsWith, nil
return datatypes.Node_ComparisonStartsWith, nil
case ast.LessThanOperator:
return datatypes.ComparisonLess, nil
return datatypes.Node_ComparisonLess, nil
case ast.LessThanEqualOperator:
return datatypes.ComparisonLessEqual, nil
return datatypes.Node_ComparisonLessEqual, nil
case ast.GreaterThanOperator:
return datatypes.ComparisonGreater, nil
return datatypes.Node_ComparisonGreater, nil
case ast.GreaterThanEqualOperator:
return datatypes.ComparisonGreaterEqual, nil
return datatypes.Node_ComparisonGreaterEqual, nil
default:
return 0, fmt.Errorf("unknown operator %v", o)
}

View File

@ -1,13 +0,0 @@
#!/usr/bin/env bash
set -e
declare -r SCRIPT_DIR=$(cd $(dirname ${0}) >/dev/null 2>&1 && pwd)
declare -r ROOT_DIR=$(dirname ${SCRIPT_DIR})
declare -r GOGO_PATH=github.com/gogo/protobuf
if [ -d "${ROOT_DIR}/vendor" ]; then
echo "${ROOT_DIR}/vendor/${GOGO_PATH}"
else
go list -f '{{ .Dir }}' -m ${GOGO_PATH}
fi

View File

@ -1,2 +0,0 @@
#!/usr/bin/env bash
env GO111MODULE=on go run github.com/gogo/protobuf/protoc-gen-gogo "$@"

View File

@ -1,2 +0,0 @@
#!/usr/bin/env bash
env GO111MODULE=on go run github.com/gogo/protobuf/protoc-gen-gogofaster "$@"

View File

@ -5,7 +5,6 @@ import (
"fmt"
"strings"
"github.com/gogo/protobuf/types"
"github.com/influxdata/flux"
"github.com/influxdata/flux/execute"
"github.com/influxdata/flux/interval"
@ -18,6 +17,7 @@ import (
storage "github.com/influxdata/influxdb/v2/storage/reads"
"github.com/influxdata/influxdb/v2/storage/reads/datatypes"
"github.com/influxdata/influxdb/v2/tsdb/cursors"
"google.golang.org/protobuf/types/known/anypb"
)
// GroupCursorError is returned when two different cursor types
@ -149,7 +149,7 @@ func (fi *filterIterator) Do(f func(flux.Table) error) error {
)
// Setup read request
any, err := types.MarshalAny(src)
any, err := anypb.New(src)
if err != nil {
return err
}
@ -157,8 +157,10 @@ func (fi *filterIterator) Do(f func(flux.Table) error) error {
var req datatypes.ReadFilterRequest
req.ReadSource = any
req.Predicate = fi.spec.Predicate
req.Range.Start = int64(fi.spec.Bounds.Start)
req.Range.End = int64(fi.spec.Bounds.Stop)
req.Range = &datatypes.TimestampRange{
Start: int64(fi.spec.Bounds.Start),
End: int64(fi.spec.Bounds.Stop),
}
rs, err := fi.s.ReadFilter(fi.ctx, &req)
if err != nil {
@ -264,7 +266,7 @@ func (gi *groupIterator) Do(f func(flux.Table) error) error {
)
// Setup read request
any, err := types.MarshalAny(src)
any, err := anypb.New(src)
if err != nil {
return err
}
@ -272,8 +274,10 @@ func (gi *groupIterator) Do(f func(flux.Table) error) error {
var req datatypes.ReadGroupRequest
req.ReadSource = any
req.Predicate = gi.spec.Predicate
req.Range.Start = int64(gi.spec.Bounds.Start)
req.Range.End = int64(gi.spec.Bounds.Stop)
req.Range = &datatypes.TimestampRange{
Start: int64(gi.spec.Bounds.Start),
End: int64(gi.spec.Bounds.Stop),
}
if len(gi.spec.GroupKeys) > 0 && gi.spec.GroupMode == query.GroupModeNone {
return &errors.Error{
@ -286,7 +290,7 @@ func (gi *groupIterator) Do(f func(flux.Table) error) error {
if agg, err := determineAggregateMethod(gi.spec.AggregateMethod); err != nil {
return err
} else if agg != datatypes.AggregateTypeNone {
} else if agg != datatypes.Aggregate_AggregateTypeNone {
req.Aggregate = &datatypes.Aggregate{Type: agg}
}
@ -391,10 +395,10 @@ READ:
func determineAggregateMethod(agg string) (datatypes.Aggregate_AggregateType, error) {
if agg == "" {
return datatypes.AggregateTypeNone, nil
return datatypes.Aggregate_AggregateTypeNone, nil
}
if t, ok := datatypes.Aggregate_AggregateType_value[strings.ToUpper(agg)]; ok {
if t, ok := datatypes.AggregateNameMap[strings.ToUpper(agg)]; ok {
return datatypes.Aggregate_AggregateType(t), nil
}
return 0, fmt.Errorf("unknown aggregate type %q", agg)
@ -403,9 +407,9 @@ func determineAggregateMethod(agg string) (datatypes.Aggregate_AggregateType, er
func convertGroupMode(m query.GroupMode) datatypes.ReadGroupRequest_Group {
switch m {
case query.GroupModeNone:
return datatypes.GroupNone
return datatypes.ReadGroupRequest_GroupNone
case query.GroupModeBy:
return datatypes.GroupBy
return datatypes.ReadGroupRequest_GroupBy
}
panic(fmt.Sprint("invalid group mode: ", m))
}
@ -518,8 +522,10 @@ func IsSelector(agg *datatypes.Aggregate) bool {
if agg == nil {
return false
}
return agg.Type == datatypes.AggregateTypeMin || agg.Type == datatypes.AggregateTypeMax ||
agg.Type == datatypes.AggregateTypeFirst || agg.Type == datatypes.AggregateTypeLast
return agg.Type == datatypes.Aggregate_AggregateTypeMin ||
agg.Type == datatypes.Aggregate_AggregateTypeMax ||
agg.Type == datatypes.Aggregate_AggregateTypeFirst ||
agg.Type == datatypes.Aggregate_AggregateTypeLast
}
func determineTableColsForGroup(tagKeys [][]byte, typ flux.ColType, agg *datatypes.Aggregate, groupKey flux.GroupKey) ([]flux.ColMeta, [][]byte) {
@ -635,7 +641,7 @@ func (wai *windowAggregateIterator) Do(f func(flux.Table) error) error {
)
// Setup read request
any, err := types.MarshalAny(src)
any, err := anypb.New(src)
if err != nil {
return err
}
@ -643,8 +649,10 @@ func (wai *windowAggregateIterator) Do(f func(flux.Table) error) error {
var req datatypes.ReadWindowAggregateRequest
req.ReadSource = any
req.Predicate = wai.spec.Predicate
req.Range.Start = int64(wai.spec.Bounds.Start)
req.Range.End = int64(wai.spec.Bounds.Stop)
req.Range = &datatypes.TimestampRange{
Start: int64(wai.spec.Bounds.Start),
End: int64(wai.spec.Bounds.Stop),
}
req.Window = &datatypes.Window{
Every: &datatypes.Duration{
@ -664,7 +672,7 @@ func (wai *windowAggregateIterator) Do(f func(flux.Table) error) error {
for i, aggKind := range wai.spec.Aggregates {
if agg, err := determineAggregateMethod(string(aggKind)); err != nil {
return err
} else if agg != datatypes.AggregateTypeNone {
} else if agg != datatypes.Aggregate_AggregateTypeNone {
req.Aggregate[i] = &datatypes.Aggregate{Type: agg}
}
}
@ -866,15 +874,17 @@ func (ti *tagKeysIterator) Do(f func(flux.Table) error) error {
)
var req datatypes.TagKeysRequest
any, err := types.MarshalAny(src)
any, err := anypb.New(src)
if err != nil {
return err
}
req.TagsSource = any
req.Predicate = ti.predicate
req.Range.Start = int64(ti.bounds.Start)
req.Range.End = int64(ti.bounds.Stop)
req.Range = &datatypes.TimestampRange{
Start: int64(ti.bounds.Start),
End: int64(ti.bounds.Stop),
}
rs, err := ti.s.TagKeys(ti.ctx, &req)
if err != nil {
@ -949,7 +959,7 @@ func (ti *tagValuesIterator) Do(f func(flux.Table) error) error {
)
var req datatypes.TagValuesRequest
any, err := types.MarshalAny(src)
any, err := anypb.New(src)
if err != nil {
return err
}
@ -964,8 +974,10 @@ func (ti *tagValuesIterator) Do(f func(flux.Table) error) error {
req.TagKey = ti.readSpec.TagKey
}
req.Predicate = ti.predicate
req.Range.Start = int64(ti.bounds.Start)
req.Range.End = int64(ti.bounds.Stop)
req.Range = &datatypes.TimestampRange{
Start: int64(ti.bounds.Start),
End: int64(ti.bounds.Stop),
}
rs, err := ti.s.TagValues(ti.ctx, &req)
if err != nil {
@ -1025,15 +1037,17 @@ func (si *seriesCardinalityIterator) Do(f func(flux.Table) error) error {
)
var req datatypes.ReadSeriesCardinalityRequest
any, err := types.MarshalAny(src)
any, err := anypb.New(src)
if err != nil {
return err
}
req.ReadSource = any
req.Predicate = si.predicate
req.Range.Start = int64(si.bounds.Start)
req.Range.End = int64(si.bounds.Stop)
req.Range = &datatypes.TimestampRange{
Start: int64(si.bounds.Start),
End: int64(si.bounds.Stop),
}
rs, err := si.s.ReadSeriesCardinality(si.ctx, &req)
if err != nil {

View File

@ -876,26 +876,26 @@ func (a *floatAggregateAccumulator) Result() (int64, float64, [][]byte) {
// aggregate the aggregates.
func makeFloatAggregateAccumulator(agg datatypes.Aggregate_AggregateType) (FloatAggregateAccumulator, error) {
switch agg {
case datatypes.AggregateTypeFirst:
case datatypes.Aggregate_AggregateTypeFirst:
return &floatSelectorAccumulator{selector: selectorFirstGroupsFloat}, nil
case datatypes.AggregateTypeLast:
case datatypes.Aggregate_AggregateTypeLast:
return &floatSelectorAccumulator{selector: selectorLastGroupsFloat}, nil
case datatypes.AggregateTypeCount:
case datatypes.Aggregate_AggregateTypeCount:
return nil, &errors.Error{
Code: errors.EInvalid,
Msg: "unsupported for aggregate count: Float",
}
case datatypes.AggregateTypeSum:
case datatypes.Aggregate_AggregateTypeSum:
return &floatAggregateAccumulator{aggregate: aggregateSumGroupsFloat}, nil
case datatypes.AggregateTypeMin:
case datatypes.Aggregate_AggregateTypeMin:
return &floatSelectorAccumulator{selector: selectorMinGroupsFloat}, nil
case datatypes.AggregateTypeMax:
case datatypes.Aggregate_AggregateTypeMax:
return &floatSelectorAccumulator{selector: selectorMaxGroupsFloat}, nil
@ -1859,23 +1859,23 @@ func (a *integerAggregateAccumulator) Result() (int64, int64, [][]byte) {
// aggregate the aggregates.
func makeIntegerAggregateAccumulator(agg datatypes.Aggregate_AggregateType) (IntegerAggregateAccumulator, error) {
switch agg {
case datatypes.AggregateTypeFirst:
case datatypes.Aggregate_AggregateTypeFirst:
return &integerSelectorAccumulator{selector: selectorFirstGroupsInteger}, nil
case datatypes.AggregateTypeLast:
case datatypes.Aggregate_AggregateTypeLast:
return &integerSelectorAccumulator{selector: selectorLastGroupsInteger}, nil
case datatypes.AggregateTypeCount:
case datatypes.Aggregate_AggregateTypeCount:
return &integerAggregateAccumulator{aggregate: aggregateCountGroupsInteger}, nil
case datatypes.AggregateTypeSum:
case datatypes.Aggregate_AggregateTypeSum:
return &integerAggregateAccumulator{aggregate: aggregateSumGroupsInteger}, nil
case datatypes.AggregateTypeMin:
case datatypes.Aggregate_AggregateTypeMin:
return &integerSelectorAccumulator{selector: selectorMinGroupsInteger}, nil
case datatypes.AggregateTypeMax:
case datatypes.Aggregate_AggregateTypeMax:
return &integerSelectorAccumulator{selector: selectorMaxGroupsInteger}, nil
@ -2841,26 +2841,26 @@ func (a *unsignedAggregateAccumulator) Result() (int64, uint64, [][]byte) {
// aggregate the aggregates.
func makeUnsignedAggregateAccumulator(agg datatypes.Aggregate_AggregateType) (UnsignedAggregateAccumulator, error) {
switch agg {
case datatypes.AggregateTypeFirst:
case datatypes.Aggregate_AggregateTypeFirst:
return &unsignedSelectorAccumulator{selector: selectorFirstGroupsUnsigned}, nil
case datatypes.AggregateTypeLast:
case datatypes.Aggregate_AggregateTypeLast:
return &unsignedSelectorAccumulator{selector: selectorLastGroupsUnsigned}, nil
case datatypes.AggregateTypeCount:
case datatypes.Aggregate_AggregateTypeCount:
return nil, &errors.Error{
Code: errors.EInvalid,
Msg: "unsupported for aggregate count: Unsigned",
}
case datatypes.AggregateTypeSum:
case datatypes.Aggregate_AggregateTypeSum:
return &unsignedAggregateAccumulator{aggregate: aggregateSumGroupsUnsigned}, nil
case datatypes.AggregateTypeMin:
case datatypes.Aggregate_AggregateTypeMin:
return &unsignedSelectorAccumulator{selector: selectorMinGroupsUnsigned}, nil
case datatypes.AggregateTypeMax:
case datatypes.Aggregate_AggregateTypeMax:
return &unsignedSelectorAccumulator{selector: selectorMaxGroupsUnsigned}, nil
@ -3790,32 +3790,32 @@ func (a *stringSelectorAccumulator) Result() (int64, string, [][]byte) {
// aggregate the aggregates.
func makeStringAggregateAccumulator(agg datatypes.Aggregate_AggregateType) (StringAggregateAccumulator, error) {
switch agg {
case datatypes.AggregateTypeFirst:
case datatypes.Aggregate_AggregateTypeFirst:
return &stringSelectorAccumulator{selector: selectorFirstGroupsString}, nil
case datatypes.AggregateTypeLast:
case datatypes.Aggregate_AggregateTypeLast:
return &stringSelectorAccumulator{selector: selectorLastGroupsString}, nil
case datatypes.AggregateTypeCount:
case datatypes.Aggregate_AggregateTypeCount:
return nil, &errors.Error{
Code: errors.EInvalid,
Msg: "unsupported for aggregate count: String",
}
case datatypes.AggregateTypeSum:
case datatypes.Aggregate_AggregateTypeSum:
return nil, &errors.Error{
Code: errors.EInvalid,
Msg: "unsupported for aggregate sum: String",
}
case datatypes.AggregateTypeMin:
case datatypes.Aggregate_AggregateTypeMin:
return nil, &errors.Error{
Code: errors.EInvalid,
Msg: "unsupported for aggregate min: String",
}
case datatypes.AggregateTypeMax:
case datatypes.Aggregate_AggregateTypeMax:
return nil, &errors.Error{
Code: errors.EInvalid,
@ -4715,32 +4715,32 @@ func (a *booleanSelectorAccumulator) Result() (int64, bool, [][]byte) {
// aggregate the aggregates.
func makeBooleanAggregateAccumulator(agg datatypes.Aggregate_AggregateType) (BooleanAggregateAccumulator, error) {
switch agg {
case datatypes.AggregateTypeFirst:
case datatypes.Aggregate_AggregateTypeFirst:
return &booleanSelectorAccumulator{selector: selectorFirstGroupsBoolean}, nil
case datatypes.AggregateTypeLast:
case datatypes.Aggregate_AggregateTypeLast:
return &booleanSelectorAccumulator{selector: selectorLastGroupsBoolean}, nil
case datatypes.AggregateTypeCount:
case datatypes.Aggregate_AggregateTypeCount:
return nil, &errors.Error{
Code: errors.EInvalid,
Msg: "unsupported for aggregate count: Boolean",
}
case datatypes.AggregateTypeSum:
case datatypes.Aggregate_AggregateTypeSum:
return nil, &errors.Error{
Code: errors.EInvalid,
Msg: "unsupported for aggregate sum: Boolean",
}
case datatypes.AggregateTypeMin:
case datatypes.Aggregate_AggregateTypeMin:
return nil, &errors.Error{
Code: errors.EInvalid,
Msg: "unsupported for aggregate min: Boolean",
}
case datatypes.AggregateTypeMax:
case datatypes.Aggregate_AggregateTypeMax:
return nil, &errors.Error{
Code: errors.EInvalid,

View File

@ -877,11 +877,11 @@ func (a *{{.name}}AggregateAccumulator) Result() (int64, {{.Type}}, [][]byte) {
// aggregate the aggregates.
func make{{.Name}}AggregateAccumulator(agg datatypes.Aggregate_AggregateType) ({{.Name}}AggregateAccumulator, error){
switch agg {
case datatypes.AggregateTypeFirst:
case datatypes.Aggregate_AggregateTypeFirst:
return &{{.name}}SelectorAccumulator{selector: selectorFirstGroups{{.Name}}}, nil
case datatypes.AggregateTypeLast:
case datatypes.Aggregate_AggregateTypeLast:
return &{{.name}}SelectorAccumulator{selector: selectorLastGroups{{.Name}}}, nil
case datatypes.AggregateTypeCount:
case datatypes.Aggregate_AggregateTypeCount:
{{if eq .Name "Integer"}}
return &{{.name}}AggregateAccumulator{aggregate: aggregateCountGroups{{.Name}}}, nil
{{else}}
@ -890,7 +890,7 @@ func make{{.Name}}AggregateAccumulator(agg datatypes.Aggregate_AggregateType) ({
Msg: "unsupported for aggregate count: {{.Name}}",
}
{{end}}
case datatypes.AggregateTypeSum:
case datatypes.Aggregate_AggregateTypeSum:
{{if and (ne .Name "Boolean") (ne .Name "String")}}
return &{{.name}}AggregateAccumulator{aggregate: aggregateSumGroups{{.Name}}}, nil
{{else}}
@ -899,7 +899,7 @@ func make{{.Name}}AggregateAccumulator(agg datatypes.Aggregate_AggregateType) ({
Msg: "unsupported for aggregate sum: {{.Name}}",
}
{{end}}
case datatypes.AggregateTypeMin:
case datatypes.Aggregate_AggregateTypeMin:
{{if and (ne .Name "Boolean") (ne .Name "String")}}
return &{{.name}}SelectorAccumulator{selector: selectorMinGroups{{.Name}}}, nil
{{else}}
@ -908,7 +908,7 @@ func make{{.Name}}AggregateAccumulator(agg datatypes.Aggregate_AggregateType) ({
Msg: "unsupported for aggregate min: {{.Name}}",
}
{{end}}
case datatypes.AggregateTypeMax:
case datatypes.Aggregate_AggregateTypeMax:
{{if and (ne .Name "Boolean") (ne .Name "String")}}
return &{{.name}}SelectorAccumulator{selector: selectorMaxGroups{{.Name}}}, nil
{{else}}

View File

@ -2937,19 +2937,19 @@ func TestStorageReader_EmptyTableNoEmptyWindows(t *testing.T) {
func getStorageEqPred(lhsTagKey, rhsTagValue string) *storageproto.Predicate {
return &storageproto.Predicate{
Root: &storageproto.Node{
NodeType: storageproto.NodeTypeComparisonExpression,
NodeType: storageproto.Node_TypeComparisonExpression,
Value: &storageproto.Node_Comparison_{
Comparison: storageproto.ComparisonEqual,
Comparison: storageproto.Node_ComparisonEqual,
},
Children: []*storageproto.Node{
{
NodeType: storageproto.NodeTypeTagRef,
NodeType: storageproto.Node_TypeTagRef,
Value: &storageproto.Node_TagRefValue{
TagRefValue: lhsTagKey,
},
},
{
NodeType: storageproto.NodeTypeLiteral,
NodeType: storageproto.Node_TypeLiteral,
Value: &storageproto.Node_StringValue{
StringValue: rhsTagValue,
},

View File

@ -36,7 +36,7 @@ func IsLastDescendingAggregateOptimization(req *datatypes.ReadWindowAggregateReq
// the selector `last` is implemented as a descending array cursor followed
// by a limit array cursor that selects only the first point, i.e the point
// with the largest timestamp, from the descending array cursor.
if req.Aggregate[0].Type == datatypes.AggregateTypeLast {
if req.Aggregate[0].Type == datatypes.Aggregate_AggregateTypeLast {
if req.Window == nil {
if req.WindowEvery == 0 || req.WindowEvery == math.MaxInt64 {
return true
@ -66,7 +66,7 @@ func NewWindowAggregateResultSet(ctx context.Context, req *datatypes.ReadWindowA
ctx: ctx,
req: req,
seriesCursor: cursor,
arrayCursors: newMultiShardArrayCursors(ctx, req.Range.Start, req.Range.End, ascending),
arrayCursors: newMultiShardArrayCursors(ctx, req.Range.GetStart(), req.Range.GetEnd(), ascending),
}
return results, nil
}

View File

@ -22,7 +22,7 @@ func TestNewWindowAggregateResultSet_Tags(t *testing.T) {
request := datatypes.ReadWindowAggregateRequest{
Aggregate: []*datatypes.Aggregate{
{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
},
},
}
@ -148,7 +148,7 @@ func TestNewWindowAggregateResultSet_Stats(t *testing.T) {
request := datatypes.ReadWindowAggregateRequest{
Aggregate: []*datatypes.Aggregate{
{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
},
},
}
@ -183,7 +183,7 @@ func TestNewWindowAggregateResultSet_Mean(t *testing.T) {
request := datatypes.ReadWindowAggregateRequest{
Aggregate: []*datatypes.Aggregate{
&datatypes.Aggregate{Type: datatypes.AggregateTypeMean},
&datatypes.Aggregate{Type: datatypes.Aggregate_AggregateTypeMean},
},
WindowEvery: 10,
}
@ -219,7 +219,7 @@ func TestNewWindowAggregateResultSet_Months(t *testing.T) {
)
request := datatypes.ReadWindowAggregateRequest{
Aggregate: []*datatypes.Aggregate{
&datatypes.Aggregate{Type: datatypes.AggregateTypeMean},
&datatypes.Aggregate{Type: datatypes.Aggregate_AggregateTypeMean},
},
Window: &datatypes.Window{
Every: &datatypes.Duration{
@ -268,7 +268,7 @@ func TestNewWindowAggregateResultSet_UnsupportedTyped(t *testing.T) {
request := datatypes.ReadWindowAggregateRequest{
Aggregate: []*datatypes.Aggregate{
{Type: datatypes.AggregateTypeMean},
{Type: datatypes.Aggregate_AggregateTypeMean},
},
WindowEvery: 10,
}
@ -310,13 +310,13 @@ func TestNewWindowAggregateResultSet_TimeRange(t *testing.T) {
ctx := context.Background()
req := datatypes.ReadWindowAggregateRequest{
Range: datatypes.TimestampRange{
Range: &datatypes.TimestampRange{
Start: 0,
End: 30,
},
Aggregate: []*datatypes.Aggregate{
{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
},
},
Window: &datatypes.Window{

View File

@ -19,7 +19,7 @@ func (v *singleValue) Value(key string) (interface{}, bool) {
func newAggregateArrayCursor(ctx context.Context, agg *datatypes.Aggregate, cursor cursors.Cursor) (cursors.Cursor, error) {
switch agg.Type {
case datatypes.AggregateTypeFirst, datatypes.AggregateTypeLast:
case datatypes.Aggregate_AggregateTypeFirst, datatypes.Aggregate_AggregateTypeLast:
return newLimitArrayCursor(cursor), nil
}
return newWindowAggregateArrayCursor(ctx, agg, interval.Window{}, cursor)
@ -31,19 +31,19 @@ func newWindowAggregateArrayCursor(ctx context.Context, agg *datatypes.Aggregate
}
switch agg.Type {
case datatypes.AggregateTypeCount:
case datatypes.Aggregate_AggregateTypeCount:
return newWindowCountArrayCursor(cursor, window), nil
case datatypes.AggregateTypeSum:
case datatypes.Aggregate_AggregateTypeSum:
return newWindowSumArrayCursor(cursor, window)
case datatypes.AggregateTypeFirst:
case datatypes.Aggregate_AggregateTypeFirst:
return newWindowFirstArrayCursor(cursor, window), nil
case datatypes.AggregateTypeLast:
case datatypes.Aggregate_AggregateTypeLast:
return newWindowLastArrayCursor(cursor, window), nil
case datatypes.AggregateTypeMin:
case datatypes.Aggregate_AggregateTypeMin:
return newWindowMinArrayCursor(cursor, window), nil
case datatypes.AggregateTypeMax:
case datatypes.Aggregate_AggregateTypeMax:
return newWindowMaxArrayCursor(cursor, window), nil
case datatypes.AggregateTypeMean:
case datatypes.Aggregate_AggregateTypeMean:
return newWindowMeanArrayCursor(cursor, window)
default:
// TODO(sgc): should be validated higher up

View File

@ -42,7 +42,7 @@ func TestNewAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockFloatArrayCursor{})
@ -60,7 +60,7 @@ func TestNewAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeSum,
Type: datatypes.Aggregate_AggregateTypeSum,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockFloatArrayCursor{})
@ -78,7 +78,7 @@ func TestNewAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMin,
Type: datatypes.Aggregate_AggregateTypeMin,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockFloatArrayCursor{})
@ -96,7 +96,7 @@ func TestNewAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMax,
Type: datatypes.Aggregate_AggregateTypeMax,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockFloatArrayCursor{})
@ -114,7 +114,7 @@ func TestNewAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockFloatArrayCursor{})
@ -143,7 +143,7 @@ func TestNewWindowAggregateArrayCursorMonths_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -168,7 +168,7 @@ func TestNewWindowAggregateArrayCursorMonths_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeSum,
Type: datatypes.Aggregate_AggregateTypeSum,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -193,7 +193,7 @@ func TestNewWindowAggregateArrayCursorMonths_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMin,
Type: datatypes.Aggregate_AggregateTypeMin,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -218,7 +218,7 @@ func TestNewWindowAggregateArrayCursorMonths_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMax,
Type: datatypes.Aggregate_AggregateTypeMax,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -243,7 +243,7 @@ func TestNewWindowAggregateArrayCursorMonths_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -272,7 +272,7 @@ func TestNewWindowAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -297,7 +297,7 @@ func TestNewWindowAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeSum,
Type: datatypes.Aggregate_AggregateTypeSum,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -322,7 +322,7 @@ func TestNewWindowAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMin,
Type: datatypes.Aggregate_AggregateTypeMin,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -347,7 +347,7 @@ func TestNewWindowAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMax,
Type: datatypes.Aggregate_AggregateTypeMax,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -372,7 +372,7 @@ func TestNewWindowAggregateArrayCursor_Float(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockFloatArrayCursor{})
@ -406,7 +406,7 @@ func TestNewAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockIntegerArrayCursor{})
@ -424,7 +424,7 @@ func TestNewAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeSum,
Type: datatypes.Aggregate_AggregateTypeSum,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockIntegerArrayCursor{})
@ -442,7 +442,7 @@ func TestNewAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMin,
Type: datatypes.Aggregate_AggregateTypeMin,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockIntegerArrayCursor{})
@ -460,7 +460,7 @@ func TestNewAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMax,
Type: datatypes.Aggregate_AggregateTypeMax,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockIntegerArrayCursor{})
@ -478,7 +478,7 @@ func TestNewAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockIntegerArrayCursor{})
@ -507,7 +507,7 @@ func TestNewWindowAggregateArrayCursorMonths_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -532,7 +532,7 @@ func TestNewWindowAggregateArrayCursorMonths_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeSum,
Type: datatypes.Aggregate_AggregateTypeSum,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -557,7 +557,7 @@ func TestNewWindowAggregateArrayCursorMonths_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMin,
Type: datatypes.Aggregate_AggregateTypeMin,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -582,7 +582,7 @@ func TestNewWindowAggregateArrayCursorMonths_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMax,
Type: datatypes.Aggregate_AggregateTypeMax,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -607,7 +607,7 @@ func TestNewWindowAggregateArrayCursorMonths_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -636,7 +636,7 @@ func TestNewWindowAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -661,7 +661,7 @@ func TestNewWindowAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeSum,
Type: datatypes.Aggregate_AggregateTypeSum,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -686,7 +686,7 @@ func TestNewWindowAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMin,
Type: datatypes.Aggregate_AggregateTypeMin,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -711,7 +711,7 @@ func TestNewWindowAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMax,
Type: datatypes.Aggregate_AggregateTypeMax,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -736,7 +736,7 @@ func TestNewWindowAggregateArrayCursor_Integer(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockIntegerArrayCursor{})
@ -770,7 +770,7 @@ func TestNewAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockUnsignedArrayCursor{})
@ -788,7 +788,7 @@ func TestNewAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeSum,
Type: datatypes.Aggregate_AggregateTypeSum,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockUnsignedArrayCursor{})
@ -806,7 +806,7 @@ func TestNewAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMin,
Type: datatypes.Aggregate_AggregateTypeMin,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockUnsignedArrayCursor{})
@ -824,7 +824,7 @@ func TestNewAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMax,
Type: datatypes.Aggregate_AggregateTypeMax,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockUnsignedArrayCursor{})
@ -842,7 +842,7 @@ func TestNewAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockUnsignedArrayCursor{})
@ -871,7 +871,7 @@ func TestNewWindowAggregateArrayCursorMonths_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -896,7 +896,7 @@ func TestNewWindowAggregateArrayCursorMonths_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeSum,
Type: datatypes.Aggregate_AggregateTypeSum,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -921,7 +921,7 @@ func TestNewWindowAggregateArrayCursorMonths_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMin,
Type: datatypes.Aggregate_AggregateTypeMin,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -946,7 +946,7 @@ func TestNewWindowAggregateArrayCursorMonths_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMax,
Type: datatypes.Aggregate_AggregateTypeMax,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -971,7 +971,7 @@ func TestNewWindowAggregateArrayCursorMonths_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -1000,7 +1000,7 @@ func TestNewWindowAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -1025,7 +1025,7 @@ func TestNewWindowAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeSum,
Type: datatypes.Aggregate_AggregateTypeSum,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -1050,7 +1050,7 @@ func TestNewWindowAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMin,
Type: datatypes.Aggregate_AggregateTypeMin,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -1075,7 +1075,7 @@ func TestNewWindowAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMax,
Type: datatypes.Aggregate_AggregateTypeMax,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -1100,7 +1100,7 @@ func TestNewWindowAggregateArrayCursor_Unsigned(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeMean,
Type: datatypes.Aggregate_AggregateTypeMean,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockUnsignedArrayCursor{})
@ -1134,7 +1134,7 @@ func TestNewAggregateArrayCursor_String(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockStringArrayCursor{})
@ -1163,7 +1163,7 @@ func TestNewWindowAggregateArrayCursorMonths_String(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockStringArrayCursor{})
@ -1192,7 +1192,7 @@ func TestNewWindowAggregateArrayCursor_String(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockStringArrayCursor{})
@ -1226,7 +1226,7 @@ func TestNewAggregateArrayCursor_Boolean(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &MockBooleanArrayCursor{})
@ -1255,7 +1255,7 @@ func TestNewWindowAggregateArrayCursorMonths_Boolean(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockBooleanArrayCursor{})
@ -1284,7 +1284,7 @@ func TestNewWindowAggregateArrayCursor_Boolean(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateTypeCount,
Type: datatypes.Aggregate_AggregateTypeCount,
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &MockBooleanArrayCursor{})

View File

@ -41,7 +41,7 @@ func TestNewAggregateArrayCursor_{{$ColType}}(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateType{{$Agg}},
Type: datatypes.Aggregate_AggregateType{{$Agg}},
}
got, _ := newAggregateArrayCursor(context.Background(), agg, &Mock{{$ColType}}ArrayCursor{})
@ -71,7 +71,7 @@ func TestNewWindowAggregateArrayCursorMonths_{{$ColType}}(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateType{{$Agg}},
Type: datatypes.Aggregate_AggregateType{{$Agg}},
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &Mock{{$ColType}}ArrayCursor{})
@ -101,7 +101,7 @@ func TestNewWindowAggregateArrayCursor_{{$ColType}}(t *testing.T) {
}
agg := &datatypes.Aggregate{
Type: datatypes.AggregateType{{$Agg}},
Type: datatypes.Aggregate_AggregateType{{$Agg}},
}
got, _ := newWindowAggregateArrayCursor(context.Background(), agg, window, &Mock{{$ColType}}ArrayCursor{})

View File

@ -1,3 +1,3 @@
package datatypes
//go:generate sh -c "protoc -I$(../../../scripts/gogo-path.sh) -I. --plugin ../../../scripts/protoc-gen-gogofaster --gogofaster_out=Mgoogle/protobuf/empty.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types,plugins=grpc:. storage_common.proto predicate.proto"
//go:generate protoc --go_out=. predicate.proto storage_common.proto

View File

@ -1,47 +1,42 @@
package datatypes
import (
"strings"
"github.com/gogo/protobuf/proto"
)
import "strings"
type HintFlags uint32
func (h HintFlags) NoPoints() bool {
return uint32(h)&uint32(HintNoPoints) != 0
return uint32(h)&uint32(ReadGroupRequest_HintNoPoints) != 0
}
func (h *HintFlags) SetNoPoints() {
*h |= HintFlags(HintNoPoints)
*h |= HintFlags(ReadGroupRequest_HintNoPoints)
}
func (h HintFlags) NoSeries() bool {
return uint32(h)&uint32(HintNoSeries) != 0
return uint32(h)&uint32(ReadGroupRequest_HintNoSeries) != 0
}
func (h *HintFlags) SetNoSeries() {
*h |= HintFlags(HintNoSeries)
*h |= HintFlags(ReadGroupRequest_HintNoSeries)
}
func (h HintFlags) HintSchemaAllTime() bool {
return uint32(h)&uint32(HintSchemaAllTime) != 0
return uint32(h)&uint32(ReadGroupRequest_HintSchemaAllTime) != 0
}
func (h *HintFlags) SetHintSchemaAllTime() {
*h |= HintFlags(HintSchemaAllTime)
*h |= HintFlags(ReadGroupRequest_HintSchemaAllTime)
}
func (h HintFlags) String() string {
f := uint32(h)
var s []string
enums := proto.EnumValueMap("influxdata.platform.storage.ReadRequest_HintFlags")
if h == 0 {
return "HINT_NONE"
}
for k, v := range enums {
for k, v := range ReadGroupRequest_HintFlags_value {
if v == 0 {
continue
}

File diff suppressed because it is too large Load Diff

View File

@ -1,55 +1,48 @@
syntax = "proto3";
package influxdata.platform.storage;
option go_package = "datatypes";
import "gogoproto/gogo.proto";
option go_package = ".;datatypes";
message Node {
enum Type {
option (gogoproto.goproto_enum_prefix) = false;
LOGICAL_EXPRESSION = 0 [(gogoproto.enumvalue_customname) = "NodeTypeLogicalExpression"];
COMPARISON_EXPRESSION = 1 [(gogoproto.enumvalue_customname) = "NodeTypeComparisonExpression"];
PAREN_EXPRESSION = 2 [(gogoproto.enumvalue_customname) = "NodeTypeParenExpression"];
TAG_REF = 3 [(gogoproto.enumvalue_customname) = "NodeTypeTagRef"];
LITERAL = 4 [(gogoproto.enumvalue_customname) = "NodeTypeLiteral"];
FIELD_REF = 5 [(gogoproto.enumvalue_customname) = "NodeTypeFieldRef"];
TypeLogicalExpression = 0;
TypeComparisonExpression = 1;
TypeParenExpression = 2;
TypeTagRef = 3;
TypeLiteral = 4;
TypeFieldRef = 5;
}
enum Comparison {
option (gogoproto.goproto_enum_prefix) = false;
EQUAL = 0 [(gogoproto.enumvalue_customname) = "ComparisonEqual"];
NOT_EQUAL = 1 [(gogoproto.enumvalue_customname) = "ComparisonNotEqual"];
STARTS_WITH = 2 [(gogoproto.enumvalue_customname) = "ComparisonStartsWith"];
REGEX = 3 [(gogoproto.enumvalue_customname) = "ComparisonRegex"];
NOT_REGEX = 4 [(gogoproto.enumvalue_customname) = "ComparisonNotRegex"];
LT = 5 [(gogoproto.enumvalue_customname) = "ComparisonLess"];
LTE = 6 [(gogoproto.enumvalue_customname) = "ComparisonLessEqual"];
GT = 7 [(gogoproto.enumvalue_customname) = "ComparisonGreater"];
GTE = 8 [(gogoproto.enumvalue_customname) = "ComparisonGreaterEqual"];
ComparisonEqual = 0;
ComparisonNotEqual = 1;
ComparisonStartsWith = 2;
ComparisonRegex = 3;
ComparisonNotRegex = 4;
ComparisonLess = 5;
ComparisonLessEqual = 6;
ComparisonGreater = 7;
ComparisonGreaterEqual = 8;
}
// Logical operators apply to boolean values and combine to produce a single boolean result.
enum Logical {
option (gogoproto.goproto_enum_prefix) = false;
AND = 0 [(gogoproto.enumvalue_customname) = "LogicalAnd"];
OR = 1 [(gogoproto.enumvalue_customname) = "LogicalOr"];
LogicalAnd = 0;
LogicalOr = 1;
}
Type node_type = 1 [(gogoproto.customname) = "NodeType", (gogoproto.jsontag) = "nodeType"];
Type node_type = 1; // [(gogoproto.customname) = "NodeType", (gogoproto.jsontag) = "nodeType"];
repeated Node children = 2;
oneof value {
string string_value = 3 [(gogoproto.customname) = "StringValue"];
bool bool_value = 4 [(gogoproto.customname) = "BooleanValue"];
int64 int_value = 5 [(gogoproto.customname) = "IntegerValue"];
uint64 uint_value = 6 [(gogoproto.customname) = "UnsignedValue"];
double float_value = 7 [(gogoproto.customname) = "FloatValue"];
string regex_value = 8 [(gogoproto.customname) = "RegexValue"];
string tag_ref_value = 9 [(gogoproto.customname) = "TagRefValue"];
string field_ref_value = 10 [(gogoproto.customname) = "FieldRefValue"];
string StringValue = 3;
bool BooleanValue = 4;
int64 IntegerValue = 5;
uint64 UnsignedValue = 6;
double FloatValue = 7;
string RegexValue = 8;
string TagRefValue = 9;
string FieldRefValue = 10;
Logical logical = 11;
Comparison comparison = 12;
}

View File

@ -0,0 +1,13 @@
package datatypes
import "strings"
// AggregateNameMap is a map of uppercase aggregate names.
var AggregateNameMap = make(map[string]int32)
func init() {
for k, v := range Aggregate_AggregateType_value {
name := strings.ToUpper(strings.TrimPrefix(k, "AggregateType"))
AggregateNameMap[name] = v
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +1,34 @@
syntax = "proto3";
package influxdata.platform.storage;
option go_package = "datatypes";
option go_package = ".;datatypes";
import "gogoproto/gogo.proto";
import "google/protobuf/any.proto";
import "predicate.proto";
option (gogoproto.marshaler_all) = true;
option (gogoproto.sizer_all) = true;
option (gogoproto.unmarshaler_all) = true;
option (gogoproto.goproto_getters_all) = false;
message ReadFilterRequest {
google.protobuf.Any read_source = 1 [(gogoproto.customname) = "ReadSource"];
TimestampRange range = 2 [(gogoproto.nullable) = false];
google.protobuf.Any ReadSource = 1;
TimestampRange range = 2;
Predicate predicate = 3;
}
message ReadGroupRequest {
google.protobuf.Any read_source = 1 [(gogoproto.customname) = "ReadSource"];
TimestampRange range = 2 [(gogoproto.nullable) = false];
google.protobuf.Any ReadSource = 1;
TimestampRange range = 2;
Predicate predicate = 3;
enum Group {
option (gogoproto.goproto_enum_prefix) = false;
// GroupNone returns all series as a single group.
// The single GroupFrame.TagKeys will be the union of all tag keys.
GROUP_NONE = 0 [(gogoproto.enumvalue_customname) = "GroupNone"];
GroupNone = 0;
// GroupBy returns a group for each unique value of the specified GroupKeys.
GROUP_BY = 2 [(gogoproto.enumvalue_customname) = "GroupBy"];
GroupBy = 2;
}
// GroupKeys specifies a list of tag keys used to order the data.
// It is dependent on the Group property to determine its behavior.
repeated string group_keys = 4 [(gogoproto.customname) = "GroupKeys"];
repeated string GroupKeys = 4;
Group group = 5;
Aggregate aggregate = 6;
@ -45,29 +38,25 @@ message ReadGroupRequest {
// This field should be removed and the tests that depend
// on it refactored.
enum HintFlags {
option (gogoproto.goproto_enum_prefix) = false;
HINT_NONE = 0x00 [(gogoproto.enumvalue_customname) = "HintNone"];
HINT_NO_POINTS = 0x01 [(gogoproto.enumvalue_customname) = "HintNoPoints"];
HINT_NO_SERIES = 0x02 [(gogoproto.enumvalue_customname) = "HintNoSeries"];
HintNone = 0x00;
HintNoPoints = 0x01;
HintNoSeries = 0x02;
// HintSchemaAllTime performs schema queries without using time ranges
HINT_SCHEMA_ALL_TIME = 0x04 [(gogoproto.enumvalue_customname) = "HintSchemaAllTime"];
HintSchemaAllTime = 0x04;
}
fixed32 hints = 7 [(gogoproto.customname) = "Hints", (gogoproto.casttype) = "HintFlags"];
fixed32 Hints = 7;
}
message Aggregate {
enum AggregateType {
option (gogoproto.goproto_enum_prefix) = false;
NONE = 0 [(gogoproto.enumvalue_customname) = "AggregateTypeNone"];
SUM = 1 [(gogoproto.enumvalue_customname) = "AggregateTypeSum"];
COUNT = 2 [(gogoproto.enumvalue_customname) = "AggregateTypeCount"];
MIN = 3 [(gogoproto.enumvalue_customname) = "AggregateTypeMin"];
MAX = 4 [(gogoproto.enumvalue_customname) = "AggregateTypeMax"];
FIRST = 5 [(gogoproto.enumvalue_customname) = "AggregateTypeFirst"];
LAST = 6 [(gogoproto.enumvalue_customname) = "AggregateTypeLast"];
MEAN = 7 [(gogoproto.enumvalue_customname) = "AggregateTypeMean"];
AggregateTypeNone = 0;
AggregateTypeSum = 1;
AggregateTypeCount = 2;
AggregateTypeMin = 3;
AggregateTypeMax = 4;
AggregateTypeFirst = 5;
AggregateTypeLast = 6;
AggregateTypeMean = 7;
}
AggregateType type = 1;
@ -83,43 +72,39 @@ message Tag {
// Response message for ReadFilter and ReadGroup
message ReadResponse {
enum FrameType {
option (gogoproto.goproto_enum_prefix) = false;
SERIES = 0 [(gogoproto.enumvalue_customname) = "FrameTypeSeries"];
POINTS = 1 [(gogoproto.enumvalue_customname) = "FrameTypePoints"];
FrameTypeSeries = 0;
FrameTypePoints = 1;
}
enum DataType {
option (gogoproto.goproto_enum_prefix) = false;
FLOAT = 0 [(gogoproto.enumvalue_customname) = "DataTypeFloat"];
INTEGER = 1 [(gogoproto.enumvalue_customname) = "DataTypeInteger"];
UNSIGNED = 2 [(gogoproto.enumvalue_customname) = "DataTypeUnsigned"];
BOOLEAN = 3 [(gogoproto.enumvalue_customname) = "DataTypeBoolean"];
STRING = 4 [(gogoproto.enumvalue_customname) = "DataTypeString"];
DataTypeFloat = 0;
DataTypeInteger = 1;
DataTypeUnsigned = 2;
DataTypeBoolean = 3;
DataTypeString = 4;
}
message Frame {
oneof data {
GroupFrame group = 7;
SeriesFrame series = 1;
FloatPointsFrame float_points = 2 [(gogoproto.customname) = "FloatPoints"];
IntegerPointsFrame integer_points = 3 [(gogoproto.customname) = "IntegerPoints"];
UnsignedPointsFrame unsigned_points = 4 [(gogoproto.customname) = "UnsignedPoints"];
BooleanPointsFrame boolean_points = 5 [(gogoproto.customname) = "BooleanPoints"];
StringPointsFrame string_points = 6 [(gogoproto.customname) = "StringPoints"];
FloatPointsFrame FloatPoints = 2;
IntegerPointsFrame IntegerPoints = 3;
UnsignedPointsFrame UnsignedPoints = 4;
BooleanPointsFrame BooleanPoints = 5;
StringPointsFrame StringPoints = 6;
}
}
message GroupFrame {
// TagKeys
repeated bytes tag_keys = 1 [(gogoproto.customname) = "TagKeys"];
repeated bytes TagKeys = 1;
// PartitionKeyVals is the values of the partition key for this group, order matching ReadGroupRequest.GroupKeys
repeated bytes partition_key_vals = 2 [(gogoproto.customname) = "PartitionKeyVals"];
repeated bytes PartitionKeyVals = 2;
}
message SeriesFrame {
repeated Tag tags = 1 [(gogoproto.nullable) = false];
repeated Tag tags = 1; // [(gogoproto.nullable) = false];
DataType data_type = 2;
}
@ -148,7 +133,7 @@ message ReadResponse {
repeated string values = 2;
}
repeated Frame frames = 1 [(gogoproto.nullable) = false];
repeated Frame frames = 1; // [(gogoproto.nullable) = false];
}
message Capability {
@ -175,22 +160,22 @@ message TimestampRange {
// TagKeysRequest is the request message for Storage.TagKeys.
message TagKeysRequest {
google.protobuf.Any tags_source = 1 [(gogoproto.customname) = "TagsSource"];
TimestampRange range = 2 [(gogoproto.nullable) = false];
google.protobuf.Any TagsSource = 1;
TimestampRange range = 2;
Predicate predicate = 3;
}
// TagValuesRequest is the request message for Storage.TagValues.
message TagValuesRequest {
google.protobuf.Any tags_source = 1 [(gogoproto.customname) = "TagsSource"];
TimestampRange range = 2 [(gogoproto.nullable) = false];
google.protobuf.Any TagsSource = 1;
TimestampRange range = 2;
Predicate predicate = 3;
string tag_key = 4;
}
message ReadSeriesCardinalityRequest {
google.protobuf.Any read_series_cardinality_source = 1 [(gogoproto.customname) = "ReadSource"];
TimestampRange range = 2 [(gogoproto.nullable) = false];
google.protobuf.Any ReadSource = 1;
TimestampRange range = 2;
Predicate predicate = 3;
}
@ -203,7 +188,7 @@ message StringValuesResponse {
// MeasurementNamesRequest is the request message for Storage.MeasurementNames.
message MeasurementNamesRequest {
google.protobuf.Any source = 1;
TimestampRange range = 2 [(gogoproto.nullable) = false];
TimestampRange range = 2;
Predicate predicate = 3;
}
@ -211,7 +196,7 @@ message MeasurementNamesRequest {
message MeasurementTagKeysRequest {
google.protobuf.Any source = 1;
string measurement = 2;
TimestampRange range = 3 [(gogoproto.nullable) = false];
TimestampRange range = 3;
Predicate predicate = 4;
}
@ -220,7 +205,7 @@ message MeasurementTagValuesRequest {
google.protobuf.Any source = 1;
string measurement = 2;
string tag_key = 3;
TimestampRange range = 4 [(gogoproto.nullable) = false];
TimestampRange range = 4;
Predicate predicate = 5;
}
@ -228,21 +213,19 @@ message MeasurementTagValuesRequest {
message MeasurementFieldsRequest {
google.protobuf.Any source = 1;
string measurement = 2;
TimestampRange range = 3 [(gogoproto.nullable) = false];
TimestampRange range = 3;
Predicate predicate = 4;
}
// MeasurementFieldsResponse is the response message for Storage.MeasurementFields.
message MeasurementFieldsResponse {
enum FieldType {
option (gogoproto.goproto_enum_prefix) = false;
FLOAT = 0 [(gogoproto.enumvalue_customname) = "FieldTypeFloat"];
INTEGER = 1 [(gogoproto.enumvalue_customname) = "FieldTypeInteger"];
UNSIGNED = 2 [(gogoproto.enumvalue_customname) = "FieldTypeUnsigned"];
STRING = 3 [(gogoproto.enumvalue_customname) = "FieldTypeString"];
BOOLEAN = 4 [(gogoproto.enumvalue_customname) = "FieldTypeBoolean"];
UNDEFINED = 5 [(gogoproto.enumvalue_customname) = "FieldTypeUndefined"];
FieldTypeFloat = 0;
FieldTypeInteger = 1;
FieldTypeUnsigned = 2;
FieldTypeString = 3;
FieldTypeBoolean = 4;
FieldTypeUndefined = 5;
}
message MessageField {
@ -251,12 +234,12 @@ message MeasurementFieldsResponse {
sfixed64 timestamp = 3;
}
repeated MessageField fields = 1 [(gogoproto.nullable) = false];
repeated MessageField fields = 1; // [(gogoproto.nullable) = false];
}
message ReadWindowAggregateRequest {
google.protobuf.Any read_source = 1 [(gogoproto.customname) = "ReadSource"];
TimestampRange range = 2 [(gogoproto.nullable) = false];
google.protobuf.Any ReadSource = 1;
TimestampRange range = 2;
Predicate predicate = 3;
int64 WindowEvery = 4;
int64 Offset = 6;

View File

@ -44,7 +44,7 @@ func GroupOptionNilSortLo() GroupOption {
// It returns true if an ascending cursor should be used (all other conditions)
// or a descending cursor (when `last` is used).
func IsLastDescendingGroupOptimization(req *datatypes.ReadGroupRequest) bool {
return req.Aggregate != nil && req.Aggregate.Type == datatypes.AggregateTypeLast
return req.Aggregate != nil && req.Aggregate.Type == datatypes.Aggregate_AggregateTypeLast
}
func NewGroupResultSet(ctx context.Context, req *datatypes.ReadGroupRequest, newSeriesCursorFn func() (SeriesCursor, error), opts ...GroupOption) GroupResultSet {
@ -62,14 +62,14 @@ func NewGroupResultSet(ctx context.Context, req *datatypes.ReadGroupRequest, new
}
ascending := !IsLastDescendingGroupOptimization(req)
g.arrayCursors = newMultiShardArrayCursors(ctx, req.Range.Start, req.Range.End, ascending)
g.arrayCursors = newMultiShardArrayCursors(ctx, req.Range.GetStart(), req.Range.GetEnd(), ascending)
for i, k := range req.GroupKeys {
g.keys[i] = []byte(k)
}
switch req.Group {
case datatypes.GroupBy:
case datatypes.ReadGroupRequest_GroupBy:
g.nextGroupFn = groupByNextGroup
g.groupByCursor = groupByCursor{
ctx: ctx,
@ -82,7 +82,7 @@ func NewGroupResultSet(ctx context.Context, req *datatypes.ReadGroupRequest, new
return nil
}
case datatypes.GroupNone:
case datatypes.ReadGroupRequest_GroupNone:
g.nextGroupFn = groupNoneNextGroup
if n, err := g.groupNoneSort(); n == 0 || err != nil {
@ -175,7 +175,7 @@ func (g *groupResultSet) groupNoneSort() (int, error) {
return 0, nil
}
allTime := g.req.Hints.HintSchemaAllTime()
allTime := datatypes.HintFlags(g.req.Hints).HintSchemaAllTime()
g.km.Clear()
n := 0
seriesRow := seriesCursor.Next()
@ -227,7 +227,7 @@ func (g *groupResultSet) groupBySort() (int, error) {
var seriesRows []*SeriesRow
vals := make([][]byte, len(g.keys))
tagsBuf := &tagsBuffer{sz: 4096}
allTime := g.req.Hints.HintSchemaAllTime()
allTime := datatypes.HintFlags(g.req.Hints).HintSchemaAllTime()
seriesRow := seriesCursor.Next()
for seriesRow != nil {

View File

@ -32,7 +32,7 @@ func TestNewGroupResultSet_Sorting(t *testing.T) {
"cpu,tag0=val01,tag1=val11",
"cpu,tag0=val01,tag1=val12",
)},
group: datatypes.GroupBy,
group: datatypes.ReadGroupRequest_GroupBy,
keys: []string{"tag1"},
exp: `group:
tag key : _m,tag0,tag1
@ -61,7 +61,7 @@ group:
"cpu,tag0=0001,tag1=11",
"cpu,tag0=00011,tag1=1",
)},
group: datatypes.GroupBy,
group: datatypes.ReadGroupRequest_GroupBy,
keys: []string{"tag0", "tag1"},
exp: `group:
tag key : _m,tag0,tag1
@ -93,7 +93,7 @@ group:
"cpu,tag0=a*,tag1=b",
"cpu,tag0=a*",
)},
group: datatypes.GroupBy,
group: datatypes.ReadGroupRequest_GroupBy,
keys: []string{"tag0", "tag1"},
exp: `group:
tag key : _m,tag0,tag1
@ -116,7 +116,7 @@ group:
"cpu,tag0=a,tag1=b",
"cpu,tag1=b",
)},
group: datatypes.GroupBy,
group: datatypes.ReadGroupRequest_GroupBy,
keys: []string{"tag0", "tag1"},
exp: `group:
tag key : _m,tag0,tag1
@ -141,7 +141,7 @@ group:
"cpu,tag0=val01,tag1=val11",
"cpu,tag0=val01,tag1=val12",
)},
group: datatypes.GroupBy,
group: datatypes.ReadGroupRequest_GroupBy,
keys: []string{"tag1"},
exp: `group:
tag key : _m,tag0,tag1
@ -178,7 +178,7 @@ group:
"mem,tag1=val11,tag2=val20",
"mem,tag1=val11,tag2=val21",
)},
group: datatypes.GroupBy,
group: datatypes.ReadGroupRequest_GroupBy,
keys: []string{"tag2", "tag1"},
exp: `group:
tag key : _m,tag1,tag2
@ -224,7 +224,7 @@ group:
"mem,tag1=val11,tag2=val20",
"mem,tag1=val11,tag2=val21",
)},
group: datatypes.GroupBy,
group: datatypes.ReadGroupRequest_GroupBy,
keys: []string{"tag0", "tag2"},
exp: `group:
tag key : _m,tag0,tag1
@ -265,7 +265,7 @@ group:
// TODO(jlapacik):
// Hints is not used except for the tests in this file.
// Eventually this field should be removed entirely.
Hints: hints,
Hints: uint32(hints),
}, newCursor)
sb := new(strings.Builder)
@ -287,7 +287,7 @@ func TestNewGroupResultSet_GroupNone_NoDataReturnsNil(t *testing.T) {
)}, nil
}
rs := reads.NewGroupResultSet(context.Background(), &datatypes.ReadGroupRequest{Group: datatypes.GroupNone}, newCursor)
rs := reads.NewGroupResultSet(context.Background(), &datatypes.ReadGroupRequest{Group: datatypes.ReadGroupRequest_GroupNone}, newCursor)
if rs != nil {
t.Errorf("expected nil cursor")
}
@ -302,7 +302,7 @@ func TestNewGroupResultSet_GroupBy_NoDataReturnsNil(t *testing.T) {
)}, nil
}
rs := reads.NewGroupResultSet(context.Background(), &datatypes.ReadGroupRequest{Group: datatypes.GroupBy, GroupKeys: []string{"tag0"}}, newCursor)
rs := reads.NewGroupResultSet(context.Background(), &datatypes.ReadGroupRequest{Group: datatypes.ReadGroupRequest_GroupBy, GroupKeys: []string{"tag0"}}, newCursor)
if rs != nil {
t.Errorf("expected nil cursor")
}
@ -386,12 +386,12 @@ group:
var hints datatypes.HintFlags
hints.SetHintSchemaAllTime()
rs := reads.NewGroupResultSet(context.Background(), &datatypes.ReadGroupRequest{
Group: datatypes.GroupBy,
Group: datatypes.ReadGroupRequest_GroupBy,
GroupKeys: tt.keys,
// TODO(jlapacik):
// Hints is not used except for the tests in this file.
// Eventually this field should be removed entirely.
Hints: hints,
Hints: uint32(hints),
}, newCursor, tt.opts...)
sb := new(strings.Builder)
@ -459,7 +459,7 @@ func BenchmarkNewGroupResultSet_GroupBy(b *testing.B) {
hints.SetHintSchemaAllTime()
for i := 0; i < b.N; i++ {
rs := reads.NewGroupResultSet(context.Background(), &datatypes.ReadGroupRequest{Group: datatypes.GroupBy, GroupKeys: []string{"tag2"}, Hints: hints}, newCursor)
rs := reads.NewGroupResultSet(context.Background(), &datatypes.ReadGroupRequest{Group: datatypes.ReadGroupRequest_GroupBy, GroupKeys: []string{"tag2"}, Hints: uint32(hints)}, newCursor)
rs.Close()
}
}
@ -484,7 +484,7 @@ func TestNewGroupResultSet_TimeRange(t *testing.T) {
ctx := context.Background()
req := datatypes.ReadGroupRequest{
Range: datatypes.TimestampRange{
Range: &datatypes.TimestampRange{
Start: 0,
End: 30,
},

View File

@ -49,10 +49,10 @@ func (v *nodeToExprVisitor) Visit(n *datatypes.Node) NodeVisitor {
}
switch n.NodeType {
case datatypes.NodeTypeLogicalExpression:
case datatypes.Node_TypeLogicalExpression:
if len(n.Children) > 1 {
op := influxql.AND
if n.GetLogical() == datatypes.LogicalOr {
if n.GetLogical() == datatypes.Node_LogicalOr {
op = influxql.OR
}
@ -76,7 +76,7 @@ func (v *nodeToExprVisitor) Visit(n *datatypes.Node) NodeVisitor {
return nil
}
case datatypes.NodeTypeParenExpression:
case datatypes.Node_TypeParenExpression:
if len(n.Children) != 1 {
v.err = errors.New("parenExpression expects one child")
return nil
@ -93,7 +93,7 @@ func (v *nodeToExprVisitor) Visit(n *datatypes.Node) NodeVisitor {
return nil
case datatypes.NodeTypeComparisonExpression:
case datatypes.Node_TypeComparisonExpression:
WalkChildren(v, n)
if len(v.exprs) < 2 {
@ -105,25 +105,25 @@ func (v *nodeToExprVisitor) Visit(n *datatypes.Node) NodeVisitor {
be := &influxql.BinaryExpr{LHS: lhs, RHS: rhs}
switch n.GetComparison() {
case datatypes.ComparisonEqual:
case datatypes.Node_ComparisonEqual:
be.Op = influxql.EQ
case datatypes.ComparisonNotEqual:
case datatypes.Node_ComparisonNotEqual:
be.Op = influxql.NEQ
case datatypes.ComparisonStartsWith:
case datatypes.Node_ComparisonStartsWith:
// TODO(sgc): rewrite to anchored RE, as index does not support startsWith yet
v.err = errors.New("startsWith not implemented")
return nil
case datatypes.ComparisonRegex:
case datatypes.Node_ComparisonRegex:
be.Op = influxql.EQREGEX
case datatypes.ComparisonNotRegex:
case datatypes.Node_ComparisonNotRegex:
be.Op = influxql.NEQREGEX
case datatypes.ComparisonLess:
case datatypes.Node_ComparisonLess:
be.Op = influxql.LT
case datatypes.ComparisonLessEqual:
case datatypes.Node_ComparisonLessEqual:
be.Op = influxql.LTE
case datatypes.ComparisonGreater:
case datatypes.Node_ComparisonGreater:
be.Op = influxql.GT
case datatypes.ComparisonGreaterEqual:
case datatypes.Node_ComparisonGreaterEqual:
be.Op = influxql.GTE
default:
v.err = errors.New("invalid comparison operator")
@ -134,7 +134,7 @@ func (v *nodeToExprVisitor) Visit(n *datatypes.Node) NodeVisitor {
return nil
case datatypes.NodeTypeTagRef:
case datatypes.Node_TypeTagRef:
ref := n.GetTagRefValue()
if v.remap != nil {
if nk, ok := v.remap[ref]; ok {
@ -145,11 +145,11 @@ func (v *nodeToExprVisitor) Visit(n *datatypes.Node) NodeVisitor {
v.exprs = append(v.exprs, &influxql.VarRef{Val: ref, Type: influxql.Tag})
return nil
case datatypes.NodeTypeFieldRef:
case datatypes.Node_TypeFieldRef:
v.exprs = append(v.exprs, &influxql.VarRef{Val: fieldRef})
return nil
case datatypes.NodeTypeLiteral:
case datatypes.Node_TypeLiteral:
switch val := n.Value.(type) {
case *datatypes.Node_StringValue:
v.exprs = append(v.exprs, &influxql.StringLiteral{Val: val.StringValue})

View File

@ -10,19 +10,19 @@ import (
func TestHasFieldValueKey(t *testing.T) {
predicates := []*datatypes.Node{
{
NodeType: datatypes.NodeTypeComparisonExpression,
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{
Comparison: datatypes.ComparisonLess,
Comparison: datatypes.Node_ComparisonLess,
},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeFieldRef,
NodeType: datatypes.Node_TypeFieldRef,
Value: &datatypes.Node_FieldRefValue{
FieldRefValue: "_value",
},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_IntegerValue{
IntegerValue: 3000,
},
@ -30,25 +30,25 @@ func TestHasFieldValueKey(t *testing.T) {
},
},
{
NodeType: datatypes.NodeTypeLogicalExpression,
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{
Logical: datatypes.LogicalAnd,
Logical: datatypes.Node_LogicalAnd,
},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeComparisonExpression,
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{
Comparison: datatypes.ComparisonEqual,
Comparison: datatypes.Node_ComparisonEqual,
},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{
TagRefValue: "_measurement",
},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{
StringValue: "cpu",
},
@ -56,19 +56,19 @@ func TestHasFieldValueKey(t *testing.T) {
},
},
{
NodeType: datatypes.NodeTypeComparisonExpression,
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{
Comparison: datatypes.ComparisonLess,
Comparison: datatypes.Node_ComparisonLess,
},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeFieldRef,
NodeType: datatypes.Node_TypeFieldRef,
Value: &datatypes.Node_FieldRefValue{
FieldRefValue: "_value",
},
},
{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_IntegerValue{
IntegerValue: 3000,
},

View File

@ -43,10 +43,10 @@ type predicateExpressionPrinter struct {
func (v *predicateExpressionPrinter) Visit(n *datatypes.Node) NodeVisitor {
switch n.NodeType {
case datatypes.NodeTypeLogicalExpression:
case datatypes.Node_TypeLogicalExpression:
if len(n.Children) > 0 {
var op string
if n.GetLogical() == datatypes.LogicalAnd {
if n.GetLogical() == datatypes.Node_LogicalAnd {
op = " AND "
} else {
op = " OR "
@ -60,7 +60,7 @@ func (v *predicateExpressionPrinter) Visit(n *datatypes.Node) NodeVisitor {
return nil
case datatypes.NodeTypeParenExpression:
case datatypes.Node_TypeParenExpression:
if len(n.Children) == 1 {
v.Buffer.WriteString("( ")
WalkNode(v, n.Children[0])
@ -69,27 +69,27 @@ func (v *predicateExpressionPrinter) Visit(n *datatypes.Node) NodeVisitor {
return nil
case datatypes.NodeTypeComparisonExpression:
case datatypes.Node_TypeComparisonExpression:
WalkNode(v, n.Children[0])
v.Buffer.WriteByte(' ')
switch n.GetComparison() {
case datatypes.ComparisonEqual:
case datatypes.Node_ComparisonEqual:
v.Buffer.WriteByte('=')
case datatypes.ComparisonNotEqual:
case datatypes.Node_ComparisonNotEqual:
v.Buffer.WriteString("!=")
case datatypes.ComparisonStartsWith:
case datatypes.Node_ComparisonStartsWith:
v.Buffer.WriteString("startsWith")
case datatypes.ComparisonRegex:
case datatypes.Node_ComparisonRegex:
v.Buffer.WriteString("=~")
case datatypes.ComparisonNotRegex:
case datatypes.Node_ComparisonNotRegex:
v.Buffer.WriteString("!~")
case datatypes.ComparisonLess:
case datatypes.Node_ComparisonLess:
v.Buffer.WriteByte('<')
case datatypes.ComparisonLessEqual:
case datatypes.Node_ComparisonLessEqual:
v.Buffer.WriteString("<=")
case datatypes.ComparisonGreater:
case datatypes.Node_ComparisonGreater:
v.Buffer.WriteByte('>')
case datatypes.ComparisonGreaterEqual:
case datatypes.Node_ComparisonGreaterEqual:
v.Buffer.WriteString(">=")
}
@ -97,17 +97,17 @@ func (v *predicateExpressionPrinter) Visit(n *datatypes.Node) NodeVisitor {
WalkNode(v, n.Children[1])
return nil
case datatypes.NodeTypeTagRef:
case datatypes.Node_TypeTagRef:
v.Buffer.WriteByte('\'')
v.Buffer.WriteString(n.GetTagRefValue())
v.Buffer.WriteByte('\'')
return nil
case datatypes.NodeTypeFieldRef:
case datatypes.Node_TypeFieldRef:
v.Buffer.WriteByte('$')
return nil
case datatypes.NodeTypeLiteral:
case datatypes.Node_TypeLiteral:
switch val := n.Value.(type) {
case *datatypes.Node_StringValue:
v.Buffer.WriteString(strconv.Quote(val.StringValue))

View File

@ -22,23 +22,23 @@ func TestPredicateToExprString(t *testing.T) {
n: "logical AND",
r: &datatypes.Predicate{
Root: &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.LogicalAnd},
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.Node_LogicalAnd},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{NodeType: datatypes.NodeTypeTagRef, Value: &datatypes.Node_TagRefValue{TagRefValue: "host"}},
{NodeType: datatypes.NodeTypeLiteral, Value: &datatypes.Node_StringValue{StringValue: "host1"}},
{NodeType: datatypes.Node_TypeTagRef, Value: &datatypes.Node_TagRefValue{TagRefValue: "host"}},
{NodeType: datatypes.Node_TypeLiteral, Value: &datatypes.Node_StringValue{StringValue: "host1"}},
},
},
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonRegex},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonRegex},
Children: []*datatypes.Node{
{NodeType: datatypes.NodeTypeTagRef, Value: &datatypes.Node_TagRefValue{TagRefValue: "region"}},
{NodeType: datatypes.NodeTypeLiteral, Value: &datatypes.Node_RegexValue{RegexValue: "^us-west"}},
{NodeType: datatypes.Node_TypeTagRef, Value: &datatypes.Node_TagRefValue{TagRefValue: "region"}},
{NodeType: datatypes.Node_TypeLiteral, Value: &datatypes.Node_RegexValue{RegexValue: "^us-west"}},
},
},
},

View File

@ -29,13 +29,13 @@ func TestNewFilteredResultSet_TimeRange(t *testing.T) {
ctx := context.Background()
req := datatypes.ReadFilterRequest{
Range: datatypes.TimestampRange{
Range: &datatypes.TimestampRange{
Start: 0,
End: 30,
},
}
resultSet := reads.NewFilteredResultSet(ctx, req.Range.Start, req.Range.End, &newCursor)
resultSet := reads.NewFilteredResultSet(ctx, req.Range.GetStart(), req.Range.GetEnd(), &newCursor)
if !resultSet.Next() {
t.Fatal("expected result")
}

View File

@ -3,10 +3,10 @@ package reads
import (
"context"
"github.com/gogo/protobuf/proto"
"github.com/influxdata/influxdb/v2/models"
"github.com/influxdata/influxdb/v2/storage/reads/datatypes"
"github.com/influxdata/influxdb/v2/tsdb/cursors"
"google.golang.org/protobuf/proto"
)
type ResultSet interface {

View File

@ -11,11 +11,11 @@ import (
"testing"
"time"
"github.com/gogo/protobuf/proto"
pr "github.com/influxdata/influxdb/v2/prometheus"
dto "github.com/prometheus/client_model/go"
"github.com/prometheus/common/expfmt"
"go.uber.org/zap/zaptest"
"google.golang.org/protobuf/proto"
)
func TestPushGateway_Handler(t *testing.T) {

View File

@ -5,9 +5,9 @@ import (
"testing"
"time"
"github.com/gogo/protobuf/proto"
pr "github.com/influxdata/influxdb/v2/prometheus"
dto "github.com/prometheus/client_model/go"
"google.golang.org/protobuf/proto"
)
func goodMetricWithTime() *dto.MetricFamily {

View File

@ -6,13 +6,12 @@ package influxdb
import (
_ "github.com/benbjohnson/tmpl"
_ "github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker"
_ "github.com/gogo/protobuf/protoc-gen-gogo"
_ "github.com/gogo/protobuf/protoc-gen-gogofaster"
_ "github.com/influxdata/pkg-config"
_ "github.com/kevinburke/go-bindata/go-bindata"
_ "github.com/mna/pigeon"
_ "golang.org/x/tools/cmd/goimports"
_ "golang.org/x/tools/cmd/stringer"
_ "google.golang.org/protobuf/cmd/protoc-gen-go"
_ "gopkg.in/yaml.v2"
_ "honnef.co/go/tools/cmd/staticcheck"
)

View File

@ -7,6 +7,7 @@ import (
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/storage/reads/datatypes"
"google.golang.org/protobuf/proto"
)
// Predicate is something that can match on a series key.
@ -29,7 +30,7 @@ func UnmarshalPredicate(data []byte) (Predicate, error) {
}
pred := new(datatypes.Predicate)
if err := pred.Unmarshal(data[1:]); err != nil {
if err := proto.Unmarshal(data[1:], pred); err != nil {
return nil, err
}
return NewProtobufPredicate(pred)
@ -74,7 +75,7 @@ func NewProtobufPredicate(pred *datatypes.Predicate) (Predicate, error) {
// Walk the predicate to collect the tag refs
locs := make(map[string]int)
walkPredicateNodes(pred.Root, func(node *datatypes.Node) {
if node.GetNodeType() == datatypes.NodeTypeTagRef {
if node.GetNodeType() == datatypes.Node_TypeTagRef {
switch value := node.GetValue().(type) {
case *datatypes.Node_TagRefValue:
// Only add to the matcher locations the first time we encounter
@ -161,10 +162,8 @@ func (p *predicateMatcher) Matches(key []byte) bool {
// Marshal returns a buffer representing the protobuf predicate.
func (p *predicateMatcher) Marshal() ([]byte, error) {
// Prefix it with the version byte so that we can change in the future if necessary
buf := make([]byte, 1+p.pred.Size())
buf[0] = predicateVersionZero
_, err := p.pred.MarshalTo(buf[1:])
return buf, err
buf, err := proto.Marshal(p.pred)
return append([]byte{predicateVersionZero}, buf...), err
}
// walkPredicateNodes recursively calls the function for each node.
@ -179,7 +178,7 @@ func walkPredicateNodes(node *datatypes.Node, fn func(node *datatypes.Node)) {
// in what it accepts.
func buildPredicateNode(state *predicateState, node *datatypes.Node) (predicateNode, error) {
switch node.GetNodeType() {
case datatypes.NodeTypeComparisonExpression:
case datatypes.Node_TypeComparisonExpression:
children := node.GetChildren()
if len(children) != 2 {
return nil, fmt.Errorf("invalid number of children for logical expression: %v", len(children))
@ -194,7 +193,7 @@ func buildPredicateNode(state *predicateState, node *datatypes.Node) (predicateN
// Fill in the left side of the comparison
switch left.GetNodeType() {
// Tag refs look up the location of the tag in the state
case datatypes.NodeTypeTagRef:
case datatypes.Node_TypeTagRef:
idx, ok := state.locs[left.GetTagRefValue()]
if !ok {
return nil, fmt.Errorf("invalid tag ref in comparison: %v", left.GetTagRefValue())
@ -202,7 +201,7 @@ func buildPredicateNode(state *predicateState, node *datatypes.Node) (predicateN
comp.leftIndex = idx
// Left literals are only allowed to be strings
case datatypes.NodeTypeLiteral:
case datatypes.Node_TypeLiteral:
lit, ok := left.GetValue().(*datatypes.Node_StringValue)
if !ok {
return nil, fmt.Errorf("invalid left literal in comparison: %v", left.GetValue())
@ -216,7 +215,7 @@ func buildPredicateNode(state *predicateState, node *datatypes.Node) (predicateN
// Fill in the right side of the comparison
switch right.GetNodeType() {
// Tag refs look up the location of the tag in the state
case datatypes.NodeTypeTagRef:
case datatypes.Node_TypeTagRef:
idx, ok := state.locs[right.GetTagRefValue()]
if !ok {
return nil, fmt.Errorf("invalid tag ref in comparison: %v", right.GetTagRefValue())
@ -224,7 +223,7 @@ func buildPredicateNode(state *predicateState, node *datatypes.Node) (predicateN
comp.rightIndex = idx
// Right literals are allowed to be regexes as well as strings
case datatypes.NodeTypeLiteral:
case datatypes.Node_TypeLiteral:
switch lit := right.GetValue().(type) {
case *datatypes.Node_StringValue:
comp.rightLiteral = []byte(lit.StringValue)
@ -246,18 +245,18 @@ func buildPredicateNode(state *predicateState, node *datatypes.Node) (predicateN
// Ensure that a regex is set on the right if and only if the comparison is a regex
if comp.rightReg == nil {
if comp.comp == datatypes.ComparisonRegex || comp.comp == datatypes.ComparisonNotRegex {
if comp.comp == datatypes.Node_ComparisonRegex || comp.comp == datatypes.Node_ComparisonNotRegex {
return nil, fmt.Errorf("invalid comparison involving regex: %v", node)
}
} else {
if comp.comp != datatypes.ComparisonRegex && comp.comp != datatypes.ComparisonNotRegex {
if comp.comp != datatypes.Node_ComparisonRegex && comp.comp != datatypes.Node_ComparisonNotRegex {
return nil, fmt.Errorf("invalid comparison not against regex: %v", node)
}
}
return comp, nil
case datatypes.NodeTypeLogicalExpression:
case datatypes.Node_TypeLogicalExpression:
children := node.GetChildren()
if len(children) != 2 {
return nil, fmt.Errorf("invalid number of children for logical expression: %v", len(children))
@ -273,14 +272,14 @@ func buildPredicateNode(state *predicateState, node *datatypes.Node) (predicateN
}
switch node.GetLogical() {
case datatypes.LogicalAnd:
case datatypes.Node_LogicalAnd:
return &predicateNodeAnd{
predicateCache: newPredicateCache(state),
left: left,
right: right,
}, nil
case datatypes.LogicalOr:
case datatypes.Node_LogicalOr:
return &predicateNodeOr{
predicateCache: newPredicateCache(state),
left: left,
@ -574,23 +573,23 @@ func (p *predicateNodeComparison) Update() predicateResponse {
// enumeration value was passed.
func predicateEval(comp datatypes.Node_Comparison, left, right []byte, rightReg *regexp.Regexp) bool {
switch comp {
case datatypes.ComparisonEqual:
case datatypes.Node_ComparisonEqual:
return string(left) == string(right)
case datatypes.ComparisonNotEqual:
case datatypes.Node_ComparisonNotEqual:
return string(left) != string(right)
case datatypes.ComparisonStartsWith:
case datatypes.Node_ComparisonStartsWith:
return bytes.HasPrefix(left, right)
case datatypes.ComparisonLess:
case datatypes.Node_ComparisonLess:
return string(left) < string(right)
case datatypes.ComparisonLessEqual:
case datatypes.Node_ComparisonLessEqual:
return string(left) <= string(right)
case datatypes.ComparisonGreater:
case datatypes.Node_ComparisonGreater:
return string(left) > string(right)
case datatypes.ComparisonGreaterEqual:
case datatypes.Node_ComparisonGreaterEqual:
return string(left) >= string(right)
case datatypes.ComparisonRegex:
case datatypes.Node_ComparisonRegex:
return rightReg.Match(left)
case datatypes.ComparisonNotRegex:
case datatypes.Node_ComparisonNotRegex:
return !rightReg.Match(left)
}
return false

View File

@ -2,7 +2,6 @@ package tsm1
import (
"fmt"
"reflect"
"testing"
"github.com/influxdata/influxdb/v2/storage/reads/datatypes"
@ -47,7 +46,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Basic Matching",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3"))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3"))),
Key: "bucketorg,tag3=val3",
Matches: true,
},
@ -55,7 +54,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Basic Unmatching",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3"))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3"))),
Key: "bucketorg,tag3=val2",
Matches: false,
},
@ -65,9 +64,9 @@ func TestPredicate_Matches(t *testing.T) {
Predicate: predicate(
orNode(
andNode(
comparisonNode(datatypes.ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.ComparisonEqual, tagNode("baz"), stringNode("no"))),
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3")))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("baz"), stringNode("no"))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3")))),
Key: "bucketorg,foo=bar,baz=bif,tag3=val3",
Matches: true,
},
@ -77,9 +76,9 @@ func TestPredicate_Matches(t *testing.T) {
Predicate: predicate(
orNode(
andNode(
comparisonNode(datatypes.ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.ComparisonEqual, tagNode("baz"), stringNode("no"))),
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3")))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("baz"), stringNode("no"))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3")))),
Key: "bucketorg,foo=bar,baz=bif,tag3=val2",
Matches: false,
},
@ -88,8 +87,8 @@ func TestPredicate_Matches(t *testing.T) {
Name: "Logical Or Short Circuit",
Predicate: predicate(
orNode(
comparisonNode(datatypes.ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.ComparisonEqual, tagNode("baz"), stringNode("no")))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("baz"), stringNode("no")))),
Key: "bucketorg,baz=bif,foo=bar,tag3=val3",
Matches: true,
},
@ -98,8 +97,8 @@ func TestPredicate_Matches(t *testing.T) {
Name: "Logical And Short Circuit",
Predicate: predicate(
andNode(
comparisonNode(datatypes.ComparisonEqual, tagNode("foo"), stringNode("no")),
comparisonNode(datatypes.ComparisonEqual, tagNode("baz"), stringNode("bif")))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("foo"), stringNode("no")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("baz"), stringNode("bif")))),
Key: "bucketorg,baz=bif,foo=bar,tag3=val3",
Matches: false,
},
@ -108,8 +107,8 @@ func TestPredicate_Matches(t *testing.T) {
Name: "Logical And Matching",
Predicate: predicate(
andNode(
comparisonNode(datatypes.ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.ComparisonEqual, tagNode("baz"), stringNode("bif")))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("baz"), stringNode("bif")))),
Key: "bucketorg,baz=bif,foo=bar,tag3=val3",
Matches: true,
},
@ -118,8 +117,8 @@ func TestPredicate_Matches(t *testing.T) {
Name: "Logical And Matching Reduce (Simplify)",
Predicate: predicate(
andNode(
comparisonNode(datatypes.ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.ComparisonNotEqual, tagNode("foo"), stringNode("bif")))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.Node_ComparisonNotEqual, tagNode("foo"), stringNode("bif")))),
Key: "bucketorg,baz=bif,foo=bar,tag3=val3",
Matches: true,
},
@ -127,7 +126,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Regex Matching",
Predicate: predicate(
comparisonNode(datatypes.ComparisonRegex, tagNode("tag3"), regexNode("...3"))),
comparisonNode(datatypes.Node_ComparisonRegex, tagNode("tag3"), regexNode("...3"))),
Key: "bucketorg,tag3=val3",
Matches: true,
},
@ -135,7 +134,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "NotRegex Matching",
Predicate: predicate(
comparisonNode(datatypes.ComparisonNotRegex, tagNode("tag3"), regexNode("...4"))),
comparisonNode(datatypes.Node_ComparisonNotRegex, tagNode("tag3"), regexNode("...4"))),
Key: "bucketorg,tag3=val3",
Matches: true,
},
@ -143,7 +142,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Regex Unmatching",
Predicate: predicate(
comparisonNode(datatypes.ComparisonRegex, tagNode("tag3"), regexNode("...4"))),
comparisonNode(datatypes.Node_ComparisonRegex, tagNode("tag3"), regexNode("...4"))),
Key: "bucketorg,tag3=val3",
Matches: false,
},
@ -151,7 +150,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "NotRegex Unmatching",
Predicate: predicate(
comparisonNode(datatypes.ComparisonNotRegex, tagNode("tag3"), regexNode("...3"))),
comparisonNode(datatypes.Node_ComparisonNotRegex, tagNode("tag3"), regexNode("...3"))),
Key: "bucketorg,tag3=val3",
Matches: false,
},
@ -159,7 +158,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Basic Matching Reversed",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, stringNode("val3"), tagNode("tag3"))),
comparisonNode(datatypes.Node_ComparisonEqual, stringNode("val3"), tagNode("tag3"))),
Key: "bucketorg,tag2=val2,tag3=val3",
Matches: true,
},
@ -167,7 +166,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Tag Matching Tag",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag4"), tagNode("tag3"))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag4"), tagNode("tag3"))),
Key: "bucketorg,tag3=val3,tag4=val3",
Matches: true,
},
@ -175,7 +174,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "No Tag",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag4"), stringNode("val4"))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag4"), stringNode("val4"))),
Key: "bucketorg,tag3=val3",
Matches: false,
},
@ -183,7 +182,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Not Equal",
Predicate: predicate(
comparisonNode(datatypes.ComparisonNotEqual, tagNode("tag3"), stringNode("val4"))),
comparisonNode(datatypes.Node_ComparisonNotEqual, tagNode("tag3"), stringNode("val4"))),
Key: "bucketorg,tag3=val3",
Matches: true,
},
@ -191,7 +190,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Starts With",
Predicate: predicate(
comparisonNode(datatypes.ComparisonStartsWith, tagNode("tag3"), stringNode("va"))),
comparisonNode(datatypes.Node_ComparisonStartsWith, tagNode("tag3"), stringNode("va"))),
Key: "bucketorg,tag3=val3",
Matches: true,
},
@ -199,7 +198,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Less",
Predicate: predicate(
comparisonNode(datatypes.ComparisonLess, tagNode("tag3"), stringNode("val4"))),
comparisonNode(datatypes.Node_ComparisonLess, tagNode("tag3"), stringNode("val4"))),
Key: "bucketorg,tag3=val3",
Matches: true,
},
@ -207,7 +206,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Less Equal",
Predicate: predicate(
comparisonNode(datatypes.ComparisonLessEqual, tagNode("tag3"), stringNode("val4"))),
comparisonNode(datatypes.Node_ComparisonLessEqual, tagNode("tag3"), stringNode("val4"))),
Key: "bucketorg,tag3=val3",
Matches: true,
},
@ -215,7 +214,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Greater",
Predicate: predicate(
comparisonNode(datatypes.ComparisonGreater, tagNode("tag3"), stringNode("u"))),
comparisonNode(datatypes.Node_ComparisonGreater, tagNode("tag3"), stringNode("u"))),
Key: "bucketorg,tag3=val3",
Matches: true,
},
@ -223,7 +222,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Greater Equal;",
Predicate: predicate(
comparisonNode(datatypes.ComparisonGreaterEqual, tagNode("tag3"), stringNode("u"))),
comparisonNode(datatypes.Node_ComparisonGreaterEqual, tagNode("tag3"), stringNode("u"))),
Key: "bucketorg,tag3=val3",
Matches: true,
},
@ -231,7 +230,7 @@ func TestPredicate_Matches(t *testing.T) {
{
Name: "Escaping Matching",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3"))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3"))),
Key: `bucketorg,tag1=\,foo,tag2=\ bar,tag2\=more=val2\,\ \=hello,tag3=val3`,
Matches: true,
},
@ -261,9 +260,9 @@ func TestPredicate_Unmarshal(t *testing.T) {
protoPred := predicate(
orNode(
andNode(
comparisonNode(datatypes.ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.ComparisonEqual, tagNode("baz"), stringNode("no"))),
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3"))))
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("foo"), stringNode("bar")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("baz"), stringNode("no"))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3"))))
pred1, err := NewProtobufPredicate(protoPred)
if err != nil {
@ -275,14 +274,16 @@ func TestPredicate_Unmarshal(t *testing.T) {
t.Fatal(err)
}
pred2, err := UnmarshalPredicate(predData)
_, err = UnmarshalPredicate(predData)
if err != nil {
t.Fatal(err)
}
if !reflect.DeepEqual(pred1, pred2) {
t.Fatal("mismatch on unmarshal")
}
t.Skip("TODO(dstrand1): Fix cmp for predicateMatcher. See in IDPE: https://github.com/influxdata/idpe/blob/7c52ef7c9bc387905f2864c8730c7366f07f8a1e/storage/tsdb/tsm1/predicate_test.go#L285")
//if !cmp.Equal(pred1, pred2, cmputil.IgnoreProtobufUnexported()) {
// t.Fatal("mismatch on unmarshal")
//}
}
func TestPredicate_Unmarshal_InvalidTag(t *testing.T) {
@ -316,8 +317,8 @@ func TestPredicate_Invalid_Protobuf(t *testing.T) {
{
Name: "Invalid Comparison Num Children",
Predicate: predicate(&datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{{}, {}, {}},
}),
},
@ -325,8 +326,8 @@ func TestPredicate_Invalid_Protobuf(t *testing.T) {
{
Name: "Mismatching Left Tag Type",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, &datatypes.Node{
NodeType: datatypes.NodeTypeTagRef,
comparisonNode(datatypes.Node_ComparisonEqual, &datatypes.Node{
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_IntegerValue{IntegerValue: 2},
}, tagNode("tag"))),
},
@ -334,8 +335,8 @@ func TestPredicate_Invalid_Protobuf(t *testing.T) {
{
Name: "Mismatching Left Literal Type",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
comparisonNode(datatypes.Node_ComparisonEqual, &datatypes.Node{
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_IntegerValue{IntegerValue: 2},
}, tagNode("tag"))),
},
@ -343,17 +344,17 @@ func TestPredicate_Invalid_Protobuf(t *testing.T) {
{
Name: "Invalid Left Node Type",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
comparisonNode(datatypes.Node_ComparisonEqual, &datatypes.Node{
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
}, tagNode("tag"))),
},
{
Name: "Mismatching Right Tag Type",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag"), &datatypes.Node{
NodeType: datatypes.NodeTypeTagRef,
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag"), &datatypes.Node{
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_IntegerValue{IntegerValue: 2},
})),
},
@ -361,14 +362,14 @@ func TestPredicate_Invalid_Protobuf(t *testing.T) {
{
Name: "Invalid Regex",
Predicate: predicate(
comparisonNode(datatypes.ComparisonRegex, tagNode("tag3"), regexNode("("))),
comparisonNode(datatypes.Node_ComparisonRegex, tagNode("tag3"), regexNode("("))),
},
{
Name: "Mismatching Right Literal Type",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag"), &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag"), &datatypes.Node{
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_IntegerValue{IntegerValue: 2},
})),
},
@ -376,29 +377,29 @@ func TestPredicate_Invalid_Protobuf(t *testing.T) {
{
Name: "Invalid Right Node Type",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag"), &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag"), &datatypes.Node{
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
})),
},
{
Name: "Invalid Comparison Without Regex",
Predicate: predicate(
comparisonNode(datatypes.ComparisonRegex, tagNode("tag3"), stringNode("val3"))),
comparisonNode(datatypes.Node_ComparisonRegex, tagNode("tag3"), stringNode("val3"))),
},
{
Name: "Invalid Comparison With Regex",
Predicate: predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), regexNode("."))),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), regexNode("."))),
},
{
Name: "Invalid Logical Operation Children",
Predicate: predicate(&datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.LogicalAnd},
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.Node_LogicalAnd},
Children: []*datatypes.Node{{}, {}, {}},
}),
},
@ -408,7 +409,7 @@ func TestPredicate_Invalid_Protobuf(t *testing.T) {
Predicate: predicate(
andNode(
tagNode("tag"),
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3")),
)),
},
@ -416,7 +417,7 @@ func TestPredicate_Invalid_Protobuf(t *testing.T) {
Name: "Invalid Right Logical Expression",
Predicate: predicate(
andNode(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3")),
tagNode("tag"),
)),
},
@ -424,11 +425,11 @@ func TestPredicate_Invalid_Protobuf(t *testing.T) {
{
Name: "Invalid Logical Value",
Predicate: predicate(&datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: 9999},
Children: []*datatypes.Node{
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3")),
comparisonNode(datatypes.ComparisonEqual, tagNode("tag3"), stringNode("val3")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag3"), stringNode("val3")),
},
}),
},
@ -473,7 +474,7 @@ func BenchmarkPredicate(b *testing.B) {
b.Run("Basic", func(b *testing.B) {
run(b, predicate(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag5"), stringNode("val5")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag5"), stringNode("val5")),
))
})
@ -481,10 +482,10 @@ func BenchmarkPredicate(b *testing.B) {
run(b, predicate(
orNode(
andNode(
comparisonNode(datatypes.ComparisonEqual, tagNode("tag0"), stringNode("val0")),
comparisonNode(datatypes.ComparisonEqual, tagNode("tag6"), stringNode("val5")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag0"), stringNode("val0")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag6"), stringNode("val5")),
),
comparisonNode(datatypes.ComparisonEqual, tagNode("tag5"), stringNode("val5")),
comparisonNode(datatypes.Node_ComparisonEqual, tagNode("tag5"), stringNode("val5")),
),
))
})
@ -496,28 +497,28 @@ func BenchmarkPredicate(b *testing.B) {
func tagNode(s string) *datatypes.Node {
return &datatypes.Node{
NodeType: datatypes.NodeTypeTagRef,
NodeType: datatypes.Node_TypeTagRef,
Value: &datatypes.Node_TagRefValue{TagRefValue: s},
}
}
func stringNode(s string) *datatypes.Node {
return &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_StringValue{StringValue: s},
}
}
func regexNode(s string) *datatypes.Node {
return &datatypes.Node{
NodeType: datatypes.NodeTypeLiteral,
NodeType: datatypes.Node_TypeLiteral,
Value: &datatypes.Node_RegexValue{RegexValue: s},
}
}
func comparisonNode(comp datatypes.Node_Comparison, left, right *datatypes.Node) *datatypes.Node {
return &datatypes.Node{
NodeType: datatypes.NodeTypeComparisonExpression,
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: comp},
Children: []*datatypes.Node{left, right},
}
@ -525,16 +526,16 @@ func comparisonNode(comp datatypes.Node_Comparison, left, right *datatypes.Node)
func andNode(left, right *datatypes.Node) *datatypes.Node {
return &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.LogicalAnd},
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.Node_LogicalAnd},
Children: []*datatypes.Node{left, right},
}
}
func orNode(left, right *datatypes.Node) *datatypes.Node {
return &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.LogicalOr},
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.Node_LogicalOr},
Children: []*datatypes.Node{left, right},
}
}

View File

@ -0,0 +1,435 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.1
// protoc v3.17.3
// source: internal/fieldsindex.proto
package tsdb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type Series struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Key string `protobuf:"bytes,1,opt,name=Key,proto3" json:"Key,omitempty"`
Tags []*Tag `protobuf:"bytes,2,rep,name=Tags,proto3" json:"Tags,omitempty"`
}
func (x *Series) Reset() {
*x = Series{}
if protoimpl.UnsafeEnabled {
mi := &file_internal_fieldsindex_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Series) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Series) ProtoMessage() {}
func (x *Series) ProtoReflect() protoreflect.Message {
mi := &file_internal_fieldsindex_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Series.ProtoReflect.Descriptor instead.
func (*Series) Descriptor() ([]byte, []int) {
return file_internal_fieldsindex_proto_rawDescGZIP(), []int{0}
}
func (x *Series) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *Series) GetTags() []*Tag {
if x != nil {
return x.Tags
}
return nil
}
type Tag struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Key string `protobuf:"bytes,1,opt,name=Key,proto3" json:"Key,omitempty"`
Value string `protobuf:"bytes,2,opt,name=Value,proto3" json:"Value,omitempty"`
}
func (x *Tag) Reset() {
*x = Tag{}
if protoimpl.UnsafeEnabled {
mi := &file_internal_fieldsindex_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Tag) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tag) ProtoMessage() {}
func (x *Tag) ProtoReflect() protoreflect.Message {
mi := &file_internal_fieldsindex_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tag.ProtoReflect.Descriptor instead.
func (*Tag) Descriptor() ([]byte, []int) {
return file_internal_fieldsindex_proto_rawDescGZIP(), []int{1}
}
func (x *Tag) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *Tag) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
type MeasurementFields struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name []byte `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
Fields []*Field `protobuf:"bytes,2,rep,name=Fields,proto3" json:"Fields,omitempty"`
}
func (x *MeasurementFields) Reset() {
*x = MeasurementFields{}
if protoimpl.UnsafeEnabled {
mi := &file_internal_fieldsindex_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MeasurementFields) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MeasurementFields) ProtoMessage() {}
func (x *MeasurementFields) ProtoReflect() protoreflect.Message {
mi := &file_internal_fieldsindex_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MeasurementFields.ProtoReflect.Descriptor instead.
func (*MeasurementFields) Descriptor() ([]byte, []int) {
return file_internal_fieldsindex_proto_rawDescGZIP(), []int{2}
}
func (x *MeasurementFields) GetName() []byte {
if x != nil {
return x.Name
}
return nil
}
func (x *MeasurementFields) GetFields() []*Field {
if x != nil {
return x.Fields
}
return nil
}
type Field struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name []byte `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"`
}
func (x *Field) Reset() {
*x = Field{}
if protoimpl.UnsafeEnabled {
mi := &file_internal_fieldsindex_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Field) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Field) ProtoMessage() {}
func (x *Field) ProtoReflect() protoreflect.Message {
mi := &file_internal_fieldsindex_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Field.ProtoReflect.Descriptor instead.
func (*Field) Descriptor() ([]byte, []int) {
return file_internal_fieldsindex_proto_rawDescGZIP(), []int{3}
}
func (x *Field) GetName() []byte {
if x != nil {
return x.Name
}
return nil
}
func (x *Field) GetType() int32 {
if x != nil {
return x.Type
}
return 0
}
type MeasurementFieldSet struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Measurements []*MeasurementFields `protobuf:"bytes,1,rep,name=Measurements,proto3" json:"Measurements,omitempty"`
}
func (x *MeasurementFieldSet) Reset() {
*x = MeasurementFieldSet{}
if protoimpl.UnsafeEnabled {
mi := &file_internal_fieldsindex_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MeasurementFieldSet) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MeasurementFieldSet) ProtoMessage() {}
func (x *MeasurementFieldSet) ProtoReflect() protoreflect.Message {
mi := &file_internal_fieldsindex_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MeasurementFieldSet.ProtoReflect.Descriptor instead.
func (*MeasurementFieldSet) Descriptor() ([]byte, []int) {
return file_internal_fieldsindex_proto_rawDescGZIP(), []int{4}
}
func (x *MeasurementFieldSet) GetMeasurements() []*MeasurementFields {
if x != nil {
return x.Measurements
}
return nil
}
var File_internal_fieldsindex_proto protoreflect.FileDescriptor
var file_internal_fieldsindex_proto_rawDesc = []byte{
0x0a, 0x1a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64,
0x73, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x74, 0x73,
0x64, 0x62, 0x22, 0x39, 0x0a, 0x06, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03,
0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x1d,
0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x74,
0x73, 0x64, 0x62, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x04, 0x54, 0x61, 0x67, 0x73, 0x22, 0x2d, 0x0a,
0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4c, 0x0a, 0x11,
0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64,
0x73, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x74, 0x73, 0x64, 0x62, 0x2e, 0x46, 0x69, 0x65,
0x6c, 0x64, 0x52, 0x06, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x2f, 0x0a, 0x05, 0x46, 0x69,
0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0c, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x22, 0x52, 0x0a, 0x13, 0x4d,
0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53,
0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0c, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e,
0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x73, 0x64, 0x62, 0x2e,
0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64,
0x73, 0x52, 0x0c, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x42,
0x08, 0x5a, 0x06, 0x2e, 0x3b, 0x74, 0x73, 0x64, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
}
var (
file_internal_fieldsindex_proto_rawDescOnce sync.Once
file_internal_fieldsindex_proto_rawDescData = file_internal_fieldsindex_proto_rawDesc
)
func file_internal_fieldsindex_proto_rawDescGZIP() []byte {
file_internal_fieldsindex_proto_rawDescOnce.Do(func() {
file_internal_fieldsindex_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_fieldsindex_proto_rawDescData)
})
return file_internal_fieldsindex_proto_rawDescData
}
var file_internal_fieldsindex_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_internal_fieldsindex_proto_goTypes = []interface{}{
(*Series)(nil), // 0: tsdb.Series
(*Tag)(nil), // 1: tsdb.Tag
(*MeasurementFields)(nil), // 2: tsdb.MeasurementFields
(*Field)(nil), // 3: tsdb.Field
(*MeasurementFieldSet)(nil), // 4: tsdb.MeasurementFieldSet
}
var file_internal_fieldsindex_proto_depIdxs = []int32{
1, // 0: tsdb.Series.Tags:type_name -> tsdb.Tag
3, // 1: tsdb.MeasurementFields.Fields:type_name -> tsdb.Field
2, // 2: tsdb.MeasurementFieldSet.Measurements:type_name -> tsdb.MeasurementFields
3, // [3:3] is the sub-list for method output_type
3, // [3:3] is the sub-list for method input_type
3, // [3:3] is the sub-list for extension type_name
3, // [3:3] is the sub-list for extension extendee
0, // [0:3] is the sub-list for field type_name
}
func init() { file_internal_fieldsindex_proto_init() }
func file_internal_fieldsindex_proto_init() {
if File_internal_fieldsindex_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_internal_fieldsindex_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Series); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_internal_fieldsindex_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Tag); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_internal_fieldsindex_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MeasurementFields); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_internal_fieldsindex_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Field); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_internal_fieldsindex_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MeasurementFieldSet); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_internal_fieldsindex_proto_rawDesc,
NumEnums: 0,
NumMessages: 5,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_internal_fieldsindex_proto_goTypes,
DependencyIndexes: file_internal_fieldsindex_proto_depIdxs,
MessageInfos: file_internal_fieldsindex_proto_msgTypes,
}.Build()
File_internal_fieldsindex_proto = out.File
file_internal_fieldsindex_proto_rawDesc = nil
file_internal_fieldsindex_proto_goTypes = nil
file_internal_fieldsindex_proto_depIdxs = nil
}

View File

@ -1,6 +1,7 @@
syntax = "proto3";
package tsdb;
option go_package = ".;tsdb";
//========================================================================
//

View File

@ -1,272 +0,0 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: internal/meta.proto
package tsdb
import (
fmt "fmt"
proto "github.com/gogo/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
type Series struct {
Key string `protobuf:"bytes,1,opt,name=Key,proto3" json:"Key,omitempty"`
Tags []*Tag `protobuf:"bytes,2,rep,name=Tags,proto3" json:"Tags,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Series) Reset() { *m = Series{} }
func (m *Series) String() string { return proto.CompactTextString(m) }
func (*Series) ProtoMessage() {}
func (*Series) Descriptor() ([]byte, []int) {
return fileDescriptor_59b0956366e72083, []int{0}
}
func (m *Series) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Series.Unmarshal(m, b)
}
func (m *Series) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Series.Marshal(b, m, deterministic)
}
func (m *Series) XXX_Merge(src proto.Message) {
xxx_messageInfo_Series.Merge(m, src)
}
func (m *Series) XXX_Size() int {
return xxx_messageInfo_Series.Size(m)
}
func (m *Series) XXX_DiscardUnknown() {
xxx_messageInfo_Series.DiscardUnknown(m)
}
var xxx_messageInfo_Series proto.InternalMessageInfo
func (m *Series) GetKey() string {
if m != nil {
return m.Key
}
return ""
}
func (m *Series) GetTags() []*Tag {
if m != nil {
return m.Tags
}
return nil
}
type Tag struct {
Key string `protobuf:"bytes,1,opt,name=Key,proto3" json:"Key,omitempty"`
Value string `protobuf:"bytes,2,opt,name=Value,proto3" json:"Value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Tag) Reset() { *m = Tag{} }
func (m *Tag) String() string { return proto.CompactTextString(m) }
func (*Tag) ProtoMessage() {}
func (*Tag) Descriptor() ([]byte, []int) {
return fileDescriptor_59b0956366e72083, []int{1}
}
func (m *Tag) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Tag.Unmarshal(m, b)
}
func (m *Tag) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Tag.Marshal(b, m, deterministic)
}
func (m *Tag) XXX_Merge(src proto.Message) {
xxx_messageInfo_Tag.Merge(m, src)
}
func (m *Tag) XXX_Size() int {
return xxx_messageInfo_Tag.Size(m)
}
func (m *Tag) XXX_DiscardUnknown() {
xxx_messageInfo_Tag.DiscardUnknown(m)
}
var xxx_messageInfo_Tag proto.InternalMessageInfo
func (m *Tag) GetKey() string {
if m != nil {
return m.Key
}
return ""
}
func (m *Tag) GetValue() string {
if m != nil {
return m.Value
}
return ""
}
type MeasurementFields struct {
Name []byte `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
Fields []*Field `protobuf:"bytes,2,rep,name=Fields,proto3" json:"Fields,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *MeasurementFields) Reset() { *m = MeasurementFields{} }
func (m *MeasurementFields) String() string { return proto.CompactTextString(m) }
func (*MeasurementFields) ProtoMessage() {}
func (*MeasurementFields) Descriptor() ([]byte, []int) {
return fileDescriptor_59b0956366e72083, []int{2}
}
func (m *MeasurementFields) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MeasurementFields.Unmarshal(m, b)
}
func (m *MeasurementFields) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_MeasurementFields.Marshal(b, m, deterministic)
}
func (m *MeasurementFields) XXX_Merge(src proto.Message) {
xxx_messageInfo_MeasurementFields.Merge(m, src)
}
func (m *MeasurementFields) XXX_Size() int {
return xxx_messageInfo_MeasurementFields.Size(m)
}
func (m *MeasurementFields) XXX_DiscardUnknown() {
xxx_messageInfo_MeasurementFields.DiscardUnknown(m)
}
var xxx_messageInfo_MeasurementFields proto.InternalMessageInfo
func (m *MeasurementFields) GetName() []byte {
if m != nil {
return m.Name
}
return nil
}
func (m *MeasurementFields) GetFields() []*Field {
if m != nil {
return m.Fields
}
return nil
}
type Field struct {
Name []byte `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
Type int32 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Field) Reset() { *m = Field{} }
func (m *Field) String() string { return proto.CompactTextString(m) }
func (*Field) ProtoMessage() {}
func (*Field) Descriptor() ([]byte, []int) {
return fileDescriptor_59b0956366e72083, []int{3}
}
func (m *Field) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Field.Unmarshal(m, b)
}
func (m *Field) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Field.Marshal(b, m, deterministic)
}
func (m *Field) XXX_Merge(src proto.Message) {
xxx_messageInfo_Field.Merge(m, src)
}
func (m *Field) XXX_Size() int {
return xxx_messageInfo_Field.Size(m)
}
func (m *Field) XXX_DiscardUnknown() {
xxx_messageInfo_Field.DiscardUnknown(m)
}
var xxx_messageInfo_Field proto.InternalMessageInfo
func (m *Field) GetName() []byte {
if m != nil {
return m.Name
}
return nil
}
func (m *Field) GetType() int32 {
if m != nil {
return m.Type
}
return 0
}
type MeasurementFieldSet struct {
Measurements []*MeasurementFields `protobuf:"bytes,1,rep,name=Measurements,proto3" json:"Measurements,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *MeasurementFieldSet) Reset() { *m = MeasurementFieldSet{} }
func (m *MeasurementFieldSet) String() string { return proto.CompactTextString(m) }
func (*MeasurementFieldSet) ProtoMessage() {}
func (*MeasurementFieldSet) Descriptor() ([]byte, []int) {
return fileDescriptor_59b0956366e72083, []int{4}
}
func (m *MeasurementFieldSet) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MeasurementFieldSet.Unmarshal(m, b)
}
func (m *MeasurementFieldSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_MeasurementFieldSet.Marshal(b, m, deterministic)
}
func (m *MeasurementFieldSet) XXX_Merge(src proto.Message) {
xxx_messageInfo_MeasurementFieldSet.Merge(m, src)
}
func (m *MeasurementFieldSet) XXX_Size() int {
return xxx_messageInfo_MeasurementFieldSet.Size(m)
}
func (m *MeasurementFieldSet) XXX_DiscardUnknown() {
xxx_messageInfo_MeasurementFieldSet.DiscardUnknown(m)
}
var xxx_messageInfo_MeasurementFieldSet proto.InternalMessageInfo
func (m *MeasurementFieldSet) GetMeasurements() []*MeasurementFields {
if m != nil {
return m.Measurements
}
return nil
}
func init() {
proto.RegisterType((*Series)(nil), "tsdb.Series")
proto.RegisterType((*Tag)(nil), "tsdb.Tag")
proto.RegisterType((*MeasurementFields)(nil), "tsdb.MeasurementFields")
proto.RegisterType((*Field)(nil), "tsdb.Field")
proto.RegisterType((*MeasurementFieldSet)(nil), "tsdb.MeasurementFieldSet")
}
func init() { proto.RegisterFile("internal/meta.proto", fileDescriptor_59b0956366e72083) }
var fileDescriptor_59b0956366e72083 = []byte{
// 226 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0x3d, 0x6b, 0xc3, 0x30,
0x10, 0x86, 0x71, 0x2c, 0x1b, 0x72, 0xc9, 0xd0, 0x5e, 0x0a, 0xd5, 0x52, 0x08, 0xea, 0x92, 0xa5,
0x0e, 0xb4, 0x53, 0xe9, 0xde, 0xa5, 0x1f, 0x83, 0x22, 0xba, 0x5f, 0xc8, 0x61, 0x0c, 0xb6, 0x13,
0x24, 0x65, 0xc8, 0xbf, 0x2f, 0x3e, 0x79, 0xe8, 0x87, 0xb7, 0x57, 0xcf, 0xe9, 0xd5, 0x23, 0x0e,
0x56, 0x4d, 0x1f, 0xd9, 0xf7, 0xd4, 0x6e, 0x3b, 0x8e, 0x54, 0x9d, 0xfc, 0x31, 0x1e, 0x51, 0xc5,
0x70, 0xd8, 0x9b, 0x67, 0x28, 0x77, 0xec, 0x1b, 0x0e, 0x78, 0x05, 0xf9, 0x1b, 0x5f, 0x74, 0xb6,
0xce, 0x36, 0x73, 0x3b, 0x44, 0xbc, 0x03, 0xe5, 0xa8, 0x0e, 0x7a, 0xb6, 0xce, 0x37, 0x8b, 0xc7,
0x79, 0x35, 0x14, 0x2a, 0x47, 0xb5, 0x15, 0x6c, 0x1e, 0x20, 0x77, 0x54, 0x4f, 0xf4, 0x6e, 0xa0,
0xf8, 0xa2, 0xf6, 0xcc, 0x7a, 0x26, 0x2c, 0x1d, 0xcc, 0x3b, 0x5c, 0x7f, 0x30, 0x85, 0xb3, 0xe7,
0x8e, 0xfb, 0xf8, 0xda, 0x70, 0x7b, 0x08, 0x88, 0xa0, 0x3e, 0xa9, 0x63, 0x69, 0x2f, 0xad, 0x64,
0xbc, 0x87, 0x32, 0x4d, 0x47, 0xf1, 0x22, 0x89, 0x85, 0xd9, 0x71, 0x64, 0xb6, 0x50, 0x48, 0x9a,
0x7c, 0x01, 0x41, 0xb9, 0xcb, 0x29, 0xf9, 0x0b, 0x2b, 0xd9, 0x58, 0x58, 0xfd, 0xd5, 0xef, 0x38,
0xe2, 0x0b, 0x2c, 0x7f, 0xe0, 0xa0, 0x33, 0x51, 0xde, 0x26, 0xe5, 0xbf, 0xff, 0xda, 0x5f, 0x97,
0xf7, 0xa5, 0x6c, 0xf2, 0xe9, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xa3, 0xed, 0xcf, 0x26, 0x60, 0x01,
0x00, 0x00,
}

View File

@ -1,6 +1,6 @@
package tsdb
//go:generate protoc --gogo_out=. internal/meta.proto
//go:generate protoc --go_out=internal/ internal/fieldsindex.proto
import (
"sort"

View File

@ -18,7 +18,6 @@ import (
"time"
"unsafe"
"github.com/gogo/protobuf/proto"
"github.com/influxdata/influxdb/v2/influxql/query"
"github.com/influxdata/influxdb/v2/models"
"github.com/influxdata/influxdb/v2/pkg/bytesutil"
@ -29,6 +28,7 @@ import (
internal "github.com/influxdata/influxdb/v2/tsdb/internal"
"github.com/influxdata/influxql"
"go.uber.org/zap"
"google.golang.org/protobuf/proto"
)
const (

View File

@ -11,15 +11,15 @@ import (
"time"
"unicode"
"github.com/gogo/protobuf/proto"
"github.com/influxdata/influxdb/v2/influxql/query"
"github.com/influxdata/influxdb/v2/models"
influxdb "github.com/influxdata/influxdb/v2/v1"
internal "github.com/influxdata/influxdb/v2/v1/services/meta/internal"
"github.com/influxdata/influxql"
"google.golang.org/protobuf/proto"
)
//go:generate protoc --gogo_out=. internal/meta.proto
//go:generate protoc --go_out=internal/ internal/meta.proto
const (
// DefaultRetentionPolicyReplicaN is the default value of RetentionPolicyInfo.ReplicaN.

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
syntax = "proto2";
package meta;
option go_package = ".;meta";
//========================================================================
//

View File

@ -1,3 +1,3 @@
package storage
//go:generate sh -c "protoc -I$(../../../scripts/gogo-path.sh) -I. --gogofaster_out=. source.proto"
//go:generate protoc --go_out=. source.proto

View File

@ -12,31 +12,31 @@ import (
func TestRewriteExprRemoveFieldKeyAndValue(t *testing.T) {
node := &datatypes.Node{
NodeType: datatypes.NodeTypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.LogicalAnd},
NodeType: datatypes.Node_TypeLogicalExpression,
Value: &datatypes.Node_Logical_{Logical: datatypes.Node_LogicalAnd},
Children: []*datatypes.Node{
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{NodeType: datatypes.NodeTypeTagRef, Value: &datatypes.Node_TagRefValue{TagRefValue: "host"}},
{NodeType: datatypes.NodeTypeLiteral, Value: &datatypes.Node_StringValue{StringValue: "host1"}},
{NodeType: datatypes.Node_TypeTagRef, Value: &datatypes.Node_TagRefValue{TagRefValue: "host"}},
{NodeType: datatypes.Node_TypeLiteral, Value: &datatypes.Node_StringValue{StringValue: "host1"}},
},
},
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonRegex},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonRegex},
Children: []*datatypes.Node{
{NodeType: datatypes.NodeTypeTagRef, Value: &datatypes.Node_TagRefValue{TagRefValue: "_field"}},
{NodeType: datatypes.NodeTypeLiteral, Value: &datatypes.Node_RegexValue{RegexValue: "^us-west"}},
{NodeType: datatypes.Node_TypeTagRef, Value: &datatypes.Node_TagRefValue{TagRefValue: "_field"}},
{NodeType: datatypes.Node_TypeLiteral, Value: &datatypes.Node_RegexValue{RegexValue: "^us-west"}},
},
},
{
NodeType: datatypes.NodeTypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.ComparisonEqual},
NodeType: datatypes.Node_TypeComparisonExpression,
Value: &datatypes.Node_Comparison_{Comparison: datatypes.Node_ComparisonEqual},
Children: []*datatypes.Node{
{NodeType: datatypes.NodeTypeFieldRef, Value: &datatypes.Node_FieldRefValue{FieldRefValue: "$"}},
{NodeType: datatypes.NodeTypeLiteral, Value: &datatypes.Node_FloatValue{FloatValue: 0.5}},
{NodeType: datatypes.Node_TypeFieldRef, Value: &datatypes.Node_FieldRefValue{FieldRefValue: "$"}},
{NodeType: datatypes.Node_TypeLiteral, Value: &datatypes.Node_FloatValue{FloatValue: 0.5}},
},
},
},

View File

@ -1,22 +1,18 @@
package storage
import (
"github.com/gogo/protobuf/types"
"github.com/influxdata/influxdb/v2/kit/platform"
"errors"
"google.golang.org/protobuf/types/known/anypb"
)
func GetReadSource(any types.Any) (*ReadSource, error) {
func GetReadSource(any *anypb.Any) (*ReadSource, error) {
if any == nil {
return nil, errors.New("reque")
}
var source ReadSource
if err := types.UnmarshalAny(&any, &source); err != nil {
if err := any.UnmarshalTo(&source); err != nil {
return nil, err
}
return &source, nil
}
func (r *ReadSource) GetOrgID() platform.ID {
return platform.ID(r.OrgID)
}
func (r *ReadSource) GetBucketID() platform.ID {
return platform.ID(r.BucketID)
}

View File

@ -1,326 +1,156 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.1
// protoc v3.17.3
// source: source.proto
package storage
import (
fmt "fmt"
_ "github.com/gogo/protobuf/gogoproto"
proto "github.com/gogo/protobuf/proto"
io "io"
math "math"
math_bits "math/bits"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type ReadSource struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// OrgID specifies the organization identifier for this request.
OrgID uint64 `protobuf:"varint,1,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"`
OrgID uint64 `protobuf:"varint,1,opt,name=OrgID,proto3" json:"OrgID,omitempty"`
// BucketID specifies the bucket in the organization.
BucketID uint64 `protobuf:"varint,2,opt,name=bucket_id,json=bucketId,proto3" json:"bucket_id,omitempty"`
BucketID uint64 `protobuf:"varint,2,opt,name=BucketID,proto3" json:"BucketID,omitempty"`
}
func (x *ReadSource) Reset() {
*x = ReadSource{}
if protoimpl.UnsafeEnabled {
mi := &file_source_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReadSource) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (m *ReadSource) Reset() { *m = ReadSource{} }
func (m *ReadSource) String() string { return proto.CompactTextString(m) }
func (*ReadSource) ProtoMessage() {}
func (x *ReadSource) ProtoReflect() protoreflect.Message {
mi := &file_source_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ReadSource.ProtoReflect.Descriptor instead.
func (*ReadSource) Descriptor() ([]byte, []int) {
return fileDescriptor_9229c9b6eb8e6b85, []int{0}
return file_source_proto_rawDescGZIP(), []int{0}
}
func (m *ReadSource) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *ReadSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_ReadSource.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
func (x *ReadSource) GetOrgID() uint64 {
if x != nil {
return x.OrgID
}
return b[:n], nil
}
}
func (m *ReadSource) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReadSource.Merge(m, src)
}
func (m *ReadSource) XXX_Size() int {
return m.Size()
}
func (m *ReadSource) XXX_DiscardUnknown() {
xxx_messageInfo_ReadSource.DiscardUnknown(m)
}
var xxx_messageInfo_ReadSource proto.InternalMessageInfo
func init() {
proto.RegisterType((*ReadSource)(nil), "com.github.influxdata.influxdb.services.storage.ReadSource")
}
func init() { proto.RegisterFile("source.proto", fileDescriptor_9229c9b6eb8e6b85) }
var fileDescriptor_9229c9b6eb8e6b85 = []byte{
// 211 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0xce, 0x2f, 0x2d,
0x4a, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xd2, 0x4f, 0xce, 0xcf, 0xd5, 0x4b, 0xcf,
0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0xcb, 0xcc, 0x4b, 0xcb, 0x29, 0xad, 0x48, 0x49, 0x2c, 0x49, 0x84,
0x31, 0x93, 0xf4, 0x8a, 0x53, 0x8b, 0xca, 0x32, 0x93, 0x53, 0x8b, 0xf5, 0x8a, 0x4b, 0xf2, 0x8b,
0x12, 0xd3, 0x53, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x7a, 0xf5, 0x41, 0x2c, 0x88, 0x31,
0x4a, 0x91, 0x5c, 0x5c, 0x41, 0xa9, 0x89, 0x29, 0xc1, 0x60, 0xa3, 0x85, 0x14, 0xb8, 0xd8, 0xf2,
0x8b, 0xd2, 0xe3, 0x33, 0x53, 0x24, 0x18, 0x15, 0x18, 0x35, 0x58, 0x9c, 0x38, 0x1f, 0xdd, 0x93,
0x67, 0xf5, 0x2f, 0x4a, 0xf7, 0x74, 0x09, 0x62, 0xcd, 0x2f, 0x4a, 0xf7, 0x4c, 0x11, 0xd2, 0xe4,
0xe2, 0x4c, 0x2a, 0x4d, 0xce, 0x4e, 0x2d, 0x01, 0x29, 0x62, 0x02, 0x2b, 0xe2, 0x79, 0x74, 0x4f,
0x9e, 0xc3, 0x09, 0x2c, 0xe8, 0xe9, 0x12, 0xc4, 0x01, 0x91, 0xf6, 0x4c, 0x71, 0x52, 0x3d, 0xf1,
0x50, 0x8e, 0xe1, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c,
0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xd8, 0xa1, 0xee,
0x4a, 0x62, 0x03, 0x3b, 0xc4, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x06, 0xd7, 0x76, 0xdf,
0x00, 0x00, 0x00,
}
func (m *ReadSource) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *ReadSource) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *ReadSource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.BucketID != 0 {
i = encodeVarintSource(dAtA, i, uint64(m.BucketID))
i--
dAtA[i] = 0x10
}
if m.OrgID != 0 {
i = encodeVarintSource(dAtA, i, uint64(m.OrgID))
i--
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
func encodeVarintSource(dAtA []byte, offset int, v uint64) int {
offset -= sovSource(v)
base := offset
for v >= 1<<7 {
dAtA[offset] = uint8(v&0x7f | 0x80)
v >>= 7
offset++
}
dAtA[offset] = uint8(v)
return base
}
func (m *ReadSource) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.OrgID != 0 {
n += 1 + sovSource(uint64(m.OrgID))
}
if m.BucketID != 0 {
n += 1 + sovSource(uint64(m.BucketID))
}
return n
}
func sovSource(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
func (x *ReadSource) GetBucketID() uint64 {
if x != nil {
return x.BucketID
}
return 0
}
func sozSource(x uint64) (n int) {
return sovSource(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
func (m *ReadSource) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowSource
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: ReadSource: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: ReadSource: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field OrgID", wireType)
}
m.OrgID = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowSource
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.OrgID |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 2:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field BucketID", wireType)
}
m.BucketID = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowSource
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.BucketID |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
default:
iNdEx = preIndex
skippy, err := skipSource(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthSource
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipSource(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0
depth := 0
for iNdEx < l {
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowSource
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
wireType := int(wire & 0x7)
switch wireType {
case 0:
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowSource
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
iNdEx++
if dAtA[iNdEx-1] < 0x80 {
break
}
}
case 1:
iNdEx += 8
case 2:
var length int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return 0, ErrIntOverflowSource
}
if iNdEx >= l {
return 0, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
length |= (int(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
if length < 0 {
return 0, ErrInvalidLengthSource
}
iNdEx += length
case 3:
depth++
case 4:
if depth == 0 {
return 0, ErrUnexpectedEndOfGroupSource
}
depth--
case 5:
iNdEx += 4
default:
return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
}
if iNdEx < 0 {
return 0, ErrInvalidLengthSource
}
if depth == 0 {
return iNdEx, nil
}
}
return 0, io.ErrUnexpectedEOF
var File_source_proto protoreflect.FileDescriptor
var file_source_proto_rawDesc = []byte{
0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2f,
0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x75,
0x78, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x69, 0x6e, 0x66, 0x6c, 0x75, 0x78, 0x64, 0x62, 0x2e, 0x73,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x22,
0x3e, 0x0a, 0x0a, 0x52, 0x65, 0x61, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a,
0x05, 0x4f, 0x72, 0x67, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x4f, 0x72,
0x67, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x18,
0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x42,
0x0b, 0x5a, 0x09, 0x2e, 0x3b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (
ErrInvalidLengthSource = fmt.Errorf("proto: negative length found during unmarshaling")
ErrIntOverflowSource = fmt.Errorf("proto: integer overflow")
ErrUnexpectedEndOfGroupSource = fmt.Errorf("proto: unexpected end of group")
file_source_proto_rawDescOnce sync.Once
file_source_proto_rawDescData = file_source_proto_rawDesc
)
func file_source_proto_rawDescGZIP() []byte {
file_source_proto_rawDescOnce.Do(func() {
file_source_proto_rawDescData = protoimpl.X.CompressGZIP(file_source_proto_rawDescData)
})
return file_source_proto_rawDescData
}
var file_source_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_source_proto_goTypes = []interface{}{
(*ReadSource)(nil), // 0: com.github.influxdata.influxdb.services.storage.ReadSource
}
var file_source_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_source_proto_init() }
func file_source_proto_init() {
if File_source_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_source_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReadSource); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_source_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_source_proto_goTypes,
DependencyIndexes: file_source_proto_depIdxs,
MessageInfos: file_source_proto_msgTypes,
}.Build()
File_source_proto = out.File
file_source_proto_rawDesc = nil
file_source_proto_goTypes = nil
file_source_proto_depIdxs = nil
}

View File

@ -1,18 +1,11 @@
syntax = "proto3";
package com.github.influxdata.influxdb.services.storage;
option go_package = "storage";
import "gogoproto/gogo.proto";
option (gogoproto.marshaler_all) = true;
option (gogoproto.sizer_all) = true;
option (gogoproto.unmarshaler_all) = true;
option (gogoproto.goproto_getters_all) = false;
option go_package = ".;storage";
message ReadSource {
// OrgID specifies the organization identifier for this request.
uint64 org_id = 1 [(gogoproto.customname) = "OrgID"];
uint64 OrgID = 1;
// BucketID specifies the bucket in the organization.
uint64 bucket_id = 2 [(gogoproto.customname) = "BucketID"];
uint64 BucketID = 2;
}

View File

@ -7,7 +7,6 @@ import (
"sort"
"time"
"github.com/gogo/protobuf/proto"
"github.com/influxdata/influxdb/v2/influxql/query"
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxdb/v2/models"
@ -19,6 +18,7 @@ import (
"github.com/influxdata/influxdb/v2/v1/services/meta"
"github.com/influxdata/influxql"
"go.uber.org/zap"
"google.golang.org/protobuf/proto"
)
var (
@ -52,12 +52,12 @@ func (s *Store) WindowAggregate(ctx context.Context, req *datatypes.ReadWindowAg
return nil, ErrMissingReadSource
}
source, err := GetReadSource(*req.ReadSource)
source, err := GetReadSource(req.ReadSource)
if err != nil {
return nil, err
}
database, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.Start, req.Range.End)
database, rp, start, end, err := s.validateArgs(source.GetOrgID(), source.GetBucketID(), req.Range.GetStart(), req.Range.GetEnd())
if err != nil {
return nil, err
}
@ -152,12 +152,12 @@ func (s *Store) ReadFilter(ctx context.Context, req *datatypes.ReadFilterRequest
return nil, ErrMissingReadSource
}
source, err := GetReadSource(*req.ReadSource)
source, err := GetReadSource(req.ReadSource)
if err != nil {
return nil, err
}
database, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.Start, req.Range.End)
database, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.GetStart(), req.Range.GetEnd())
if err != nil {
return nil, err
}
@ -179,10 +179,12 @@ func (s *Store) ReadFilter(ctx context.Context, req *datatypes.ReadFilterRequest
cur = ic
}
req.Range.Start = start
req.Range.End = end
req.Range = &datatypes.TimestampRange{
Start: start,
End: end,
}
return reads.NewFilteredResultSet(ctx, req.Range.Start, req.Range.End, cur), nil
return reads.NewFilteredResultSet(ctx, req.Range.GetStart(), req.Range.GetEnd(), cur), nil
}
func (s *Store) ReadGroup(ctx context.Context, req *datatypes.ReadGroupRequest) (reads.GroupResultSet, error) {
@ -190,12 +192,12 @@ func (s *Store) ReadGroup(ctx context.Context, req *datatypes.ReadGroupRequest)
return nil, ErrMissingReadSource
}
source, err := GetReadSource(*req.ReadSource)
source, err := GetReadSource(req.ReadSource)
if err != nil {
return nil, err
}
database, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.Start, req.Range.End)
database, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.GetStart(), req.Range.GetEnd())
if err != nil {
return nil, err
}
@ -214,8 +216,10 @@ func (s *Store) ReadGroup(ctx context.Context, req *datatypes.ReadGroupRequest)
shards := s.TSDBStore.Shards(shardIDs)
req.Range.Start = start
req.Range.End = end
req.Range = &datatypes.TimestampRange{
Start: start,
End: end,
}
newCursor := func() (reads.SeriesCursor, error) {
cur, err := newIndexSeriesCursor(ctx, req.Predicate, shards)
@ -280,11 +284,11 @@ func (s *Store) TagKeys(ctx context.Context, req *datatypes.TagKeysRequest) (cur
if req.TagsSource == nil {
return nil, ErrMissingReadSource
}
source, err := GetReadSource(*req.TagsSource)
source, err := GetReadSource(req.TagsSource)
if err != nil {
return nil, err
}
db, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.Start, req.Range.End)
db, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.GetStart(), req.Range.GetEnd())
if err != nil {
return nil, err
}
@ -310,7 +314,7 @@ func (s *Store) TagKeys(ctx context.Context, req *datatypes.TagKeysRequest) (cur
}
if found := reads.ExprHasKey(expr, fieldKey); found {
mqAttrs := &metaqueryAttributes{
orgID: source.GetOrgID(),
orgID: platform.ID(source.GetOrgID()),
db: db,
rp: rp,
start: start,
@ -355,12 +359,12 @@ func (s *Store) TagValues(ctx context.Context, req *datatypes.TagValuesRequest)
return nil, ErrMissingReadSource
}
source, err := GetReadSource(*req.TagsSource)
source, err := GetReadSource(req.TagsSource)
if err != nil {
return nil, err
}
db, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.Start, req.Range.End)
db, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.GetStart(), req.Range.GetEnd())
if err != nil {
return nil, err
}
@ -384,7 +388,7 @@ func (s *Store) TagValues(ctx context.Context, req *datatypes.TagValuesRequest)
}
mqAttrs := &metaqueryAttributes{
orgID: source.GetOrgID(),
orgID: platform.ID(source.GetOrgID()),
db: db,
rp: rp,
start: start,
@ -642,12 +646,12 @@ func (s *Store) ReadSeriesCardinality(ctx context.Context, req *datatypes.ReadSe
return nil, ErrMissingReadSource
}
source, err := GetReadSource(*req.ReadSource)
source, err := GetReadSource(req.ReadSource)
if err != nil {
return nil, err
}
db, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.Start, req.Range.End)
db, rp, start, end, err := s.validateArgs(source.OrgID, source.BucketID, req.Range.GetStart(), req.Range.GetEnd())
if err != nil {
return nil, err
}