milvus/pkg/proto/planpb/plan.pb.go
ZhuXi cd931a0388
feat:Geospatial Data Type and GIS Function support for milvus (#43661)
issue: #43427
pr: #37417

This pr's main goal is merge #37417 to milvus 2.5 without conflicts.

# Main Goals

1. Create and describe collections with geospatial type
2. Insert geospatial data into the insert binlog
3. Load segments containing geospatial data into memory
4. Enable query and search can display  geospatial data
5. Support using GIS funtions like ST_EQUALS in query

# Solution

1. **Add Type**: Modify the Milvus core by adding a Geospatial type in
both the C++ and Go code layers, defining the Geospatial data structure
and the corresponding interfaces.
2. **Dependency Libraries**: Introduce necessary geospatial data
processing libraries. In the C++ source code, use Conan package
management to include the GDAL library. In the Go source code, add the
go-geom library to the go.mod file.
3. **Protocol Interface**: Revise the Milvus protocol to provide
mechanisms for Geospatial message serialization and deserialization.
4. **Data Pipeline**: Facilitate interaction between the client and
proxy using the WKT format for geospatial data. The proxy will convert
all data into WKB format for downstream processing, providing column
data interfaces, segment encapsulation, segment loading, payload
writing, and cache block management.
5. **Query Operators**: Implement simple display and support for filter
queries. Initially, focus on filtering based on spatial relationships
for a single column of geospatial literal values, providing parsing and
execution for query expressions.Now only support brutal search
6. **Client Modification**: Enable the client to handle user input for
geospatial data and facilitate end-to-end testing.Check the modification
in pymilvus.

---------

Signed-off-by: Yinwei Li <yinwei.li@zilliz.com>
Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
Co-authored-by: cai.zhang <cai.zhang@zilliz.com>
2025-08-26 19:11:55 +08:00

3582 lines
129 KiB
Go

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.33.0
// protoc v3.21.4
// source: plan.proto
package planpb
import (
schemapb "github.com/milvus-io/milvus-proto/go-api/v2/schemapb"
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 OpType int32
const (
OpType_Invalid OpType = 0
OpType_GreaterThan OpType = 1
OpType_GreaterEqual OpType = 2
OpType_LessThan OpType = 3
OpType_LessEqual OpType = 4
OpType_Equal OpType = 5
OpType_NotEqual OpType = 6
OpType_PrefixMatch OpType = 7 // startsWith
OpType_PostfixMatch OpType = 8 // endsWith
OpType_Match OpType = 9 // like
OpType_Range OpType = 10 // for case 1 < a < b
OpType_In OpType = 11 // TODO:: used for term expr
OpType_NotIn OpType = 12
OpType_TextMatch OpType = 13 // text match
OpType_PhraseMatch OpType = 14 // phrase match
OpType_InnerMatch OpType = 15 // substring (e.g., "%value%")
)
// Enum value maps for OpType.
var (
OpType_name = map[int32]string{
0: "Invalid",
1: "GreaterThan",
2: "GreaterEqual",
3: "LessThan",
4: "LessEqual",
5: "Equal",
6: "NotEqual",
7: "PrefixMatch",
8: "PostfixMatch",
9: "Match",
10: "Range",
11: "In",
12: "NotIn",
13: "TextMatch",
14: "PhraseMatch",
15: "InnerMatch",
}
OpType_value = map[string]int32{
"Invalid": 0,
"GreaterThan": 1,
"GreaterEqual": 2,
"LessThan": 3,
"LessEqual": 4,
"Equal": 5,
"NotEqual": 6,
"PrefixMatch": 7,
"PostfixMatch": 8,
"Match": 9,
"Range": 10,
"In": 11,
"NotIn": 12,
"TextMatch": 13,
"PhraseMatch": 14,
"InnerMatch": 15,
}
)
func (x OpType) Enum() *OpType {
p := new(OpType)
*p = x
return p
}
func (x OpType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (OpType) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[0].Descriptor()
}
func (OpType) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[0]
}
func (x OpType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use OpType.Descriptor instead.
func (OpType) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{0}
}
type ArithOpType int32
const (
ArithOpType_Unknown ArithOpType = 0
ArithOpType_Add ArithOpType = 1
ArithOpType_Sub ArithOpType = 2
ArithOpType_Mul ArithOpType = 3
ArithOpType_Div ArithOpType = 4
ArithOpType_Mod ArithOpType = 5
ArithOpType_ArrayLength ArithOpType = 6
)
// Enum value maps for ArithOpType.
var (
ArithOpType_name = map[int32]string{
0: "Unknown",
1: "Add",
2: "Sub",
3: "Mul",
4: "Div",
5: "Mod",
6: "ArrayLength",
}
ArithOpType_value = map[string]int32{
"Unknown": 0,
"Add": 1,
"Sub": 2,
"Mul": 3,
"Div": 4,
"Mod": 5,
"ArrayLength": 6,
}
)
func (x ArithOpType) Enum() *ArithOpType {
p := new(ArithOpType)
*p = x
return p
}
func (x ArithOpType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ArithOpType) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[1].Descriptor()
}
func (ArithOpType) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[1]
}
func (x ArithOpType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ArithOpType.Descriptor instead.
func (ArithOpType) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{1}
}
type VectorType int32
const (
VectorType_BinaryVector VectorType = 0
VectorType_FloatVector VectorType = 1
VectorType_Float16Vector VectorType = 2
VectorType_BFloat16Vector VectorType = 3
VectorType_SparseFloatVector VectorType = 4
)
// Enum value maps for VectorType.
var (
VectorType_name = map[int32]string{
0: "BinaryVector",
1: "FloatVector",
2: "Float16Vector",
3: "BFloat16Vector",
4: "SparseFloatVector",
}
VectorType_value = map[string]int32{
"BinaryVector": 0,
"FloatVector": 1,
"Float16Vector": 2,
"BFloat16Vector": 3,
"SparseFloatVector": 4,
}
)
func (x VectorType) Enum() *VectorType {
p := new(VectorType)
*p = x
return p
}
func (x VectorType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (VectorType) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[2].Descriptor()
}
func (VectorType) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[2]
}
func (x VectorType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use VectorType.Descriptor instead.
func (VectorType) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{2}
}
// 0: invalid
// 1: json_contains | array_contains
// 2: json_contains_all | array_contains_all
// 3: json_contains_any | array_contains_any
type JSONContainsExpr_JSONOp int32
const (
JSONContainsExpr_Invalid JSONContainsExpr_JSONOp = 0
JSONContainsExpr_Contains JSONContainsExpr_JSONOp = 1
JSONContainsExpr_ContainsAll JSONContainsExpr_JSONOp = 2
JSONContainsExpr_ContainsAny JSONContainsExpr_JSONOp = 3
)
// Enum value maps for JSONContainsExpr_JSONOp.
var (
JSONContainsExpr_JSONOp_name = map[int32]string{
0: "Invalid",
1: "Contains",
2: "ContainsAll",
3: "ContainsAny",
}
JSONContainsExpr_JSONOp_value = map[string]int32{
"Invalid": 0,
"Contains": 1,
"ContainsAll": 2,
"ContainsAny": 3,
}
)
func (x JSONContainsExpr_JSONOp) Enum() *JSONContainsExpr_JSONOp {
p := new(JSONContainsExpr_JSONOp)
*p = x
return p
}
func (x JSONContainsExpr_JSONOp) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (JSONContainsExpr_JSONOp) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[3].Descriptor()
}
func (JSONContainsExpr_JSONOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[3]
}
func (x JSONContainsExpr_JSONOp) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use JSONContainsExpr_JSONOp.Descriptor instead.
func (JSONContainsExpr_JSONOp) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{13, 0}
}
type NullExpr_NullOp int32
const (
NullExpr_Invalid NullExpr_NullOp = 0
NullExpr_IsNull NullExpr_NullOp = 1
NullExpr_IsNotNull NullExpr_NullOp = 2
)
// Enum value maps for NullExpr_NullOp.
var (
NullExpr_NullOp_name = map[int32]string{
0: "Invalid",
1: "IsNull",
2: "IsNotNull",
}
NullExpr_NullOp_value = map[string]int32{
"Invalid": 0,
"IsNull": 1,
"IsNotNull": 2,
}
)
func (x NullExpr_NullOp) Enum() *NullExpr_NullOp {
p := new(NullExpr_NullOp)
*p = x
return p
}
func (x NullExpr_NullOp) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (NullExpr_NullOp) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[4].Descriptor()
}
func (NullExpr_NullOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[4]
}
func (x NullExpr_NullOp) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use NullExpr_NullOp.Descriptor instead.
func (NullExpr_NullOp) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{14, 0}
}
type GISFunctionFilterExpr_GISOp int32
const (
GISFunctionFilterExpr_Invalid GISFunctionFilterExpr_GISOp = 0
GISFunctionFilterExpr_Equals GISFunctionFilterExpr_GISOp = 1
GISFunctionFilterExpr_Touches GISFunctionFilterExpr_GISOp = 2
GISFunctionFilterExpr_Overlaps GISFunctionFilterExpr_GISOp = 3
GISFunctionFilterExpr_Crosses GISFunctionFilterExpr_GISOp = 4
GISFunctionFilterExpr_Contains GISFunctionFilterExpr_GISOp = 5
GISFunctionFilterExpr_Intersects GISFunctionFilterExpr_GISOp = 6
GISFunctionFilterExpr_Within GISFunctionFilterExpr_GISOp = 7
)
// Enum value maps for GISFunctionFilterExpr_GISOp.
var (
GISFunctionFilterExpr_GISOp_name = map[int32]string{
0: "Invalid",
1: "Equals",
2: "Touches",
3: "Overlaps",
4: "Crosses",
5: "Contains",
6: "Intersects",
7: "Within",
}
GISFunctionFilterExpr_GISOp_value = map[string]int32{
"Invalid": 0,
"Equals": 1,
"Touches": 2,
"Overlaps": 3,
"Crosses": 4,
"Contains": 5,
"Intersects": 6,
"Within": 7,
}
)
func (x GISFunctionFilterExpr_GISOp) Enum() *GISFunctionFilterExpr_GISOp {
p := new(GISFunctionFilterExpr_GISOp)
*p = x
return p
}
func (x GISFunctionFilterExpr_GISOp) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (GISFunctionFilterExpr_GISOp) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[5].Descriptor()
}
func (GISFunctionFilterExpr_GISOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[5]
}
func (x GISFunctionFilterExpr_GISOp) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use GISFunctionFilterExpr_GISOp.Descriptor instead.
func (GISFunctionFilterExpr_GISOp) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{15, 0}
}
type UnaryExpr_UnaryOp int32
const (
UnaryExpr_Invalid UnaryExpr_UnaryOp = 0
UnaryExpr_Not UnaryExpr_UnaryOp = 1
)
// Enum value maps for UnaryExpr_UnaryOp.
var (
UnaryExpr_UnaryOp_name = map[int32]string{
0: "Invalid",
1: "Not",
}
UnaryExpr_UnaryOp_value = map[string]int32{
"Invalid": 0,
"Not": 1,
}
)
func (x UnaryExpr_UnaryOp) Enum() *UnaryExpr_UnaryOp {
p := new(UnaryExpr_UnaryOp)
*p = x
return p
}
func (x UnaryExpr_UnaryOp) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (UnaryExpr_UnaryOp) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[6].Descriptor()
}
func (UnaryExpr_UnaryOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[6]
}
func (x UnaryExpr_UnaryOp) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use UnaryExpr_UnaryOp.Descriptor instead.
func (UnaryExpr_UnaryOp) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{16, 0}
}
type BinaryExpr_BinaryOp int32
const (
BinaryExpr_Invalid BinaryExpr_BinaryOp = 0
BinaryExpr_LogicalAnd BinaryExpr_BinaryOp = 1
BinaryExpr_LogicalOr BinaryExpr_BinaryOp = 2
)
// Enum value maps for BinaryExpr_BinaryOp.
var (
BinaryExpr_BinaryOp_name = map[int32]string{
0: "Invalid",
1: "LogicalAnd",
2: "LogicalOr",
}
BinaryExpr_BinaryOp_value = map[string]int32{
"Invalid": 0,
"LogicalAnd": 1,
"LogicalOr": 2,
}
)
func (x BinaryExpr_BinaryOp) Enum() *BinaryExpr_BinaryOp {
p := new(BinaryExpr_BinaryOp)
*p = x
return p
}
func (x BinaryExpr_BinaryOp) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (BinaryExpr_BinaryOp) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[7].Descriptor()
}
func (BinaryExpr_BinaryOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[7]
}
func (x BinaryExpr_BinaryOp) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use BinaryExpr_BinaryOp.Descriptor instead.
func (BinaryExpr_BinaryOp) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{17, 0}
}
type GenericValue struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Types that are assignable to Val:
//
// *GenericValue_BoolVal
// *GenericValue_Int64Val
// *GenericValue_FloatVal
// *GenericValue_StringVal
// *GenericValue_ArrayVal
Val isGenericValue_Val `protobuf_oneof:"val"`
}
func (x *GenericValue) Reset() {
*x = GenericValue{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GenericValue) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GenericValue) ProtoMessage() {}
func (x *GenericValue) ProtoReflect() protoreflect.Message {
mi := &file_plan_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 GenericValue.ProtoReflect.Descriptor instead.
func (*GenericValue) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{0}
}
func (m *GenericValue) GetVal() isGenericValue_Val {
if m != nil {
return m.Val
}
return nil
}
func (x *GenericValue) GetBoolVal() bool {
if x, ok := x.GetVal().(*GenericValue_BoolVal); ok {
return x.BoolVal
}
return false
}
func (x *GenericValue) GetInt64Val() int64 {
if x, ok := x.GetVal().(*GenericValue_Int64Val); ok {
return x.Int64Val
}
return 0
}
func (x *GenericValue) GetFloatVal() float64 {
if x, ok := x.GetVal().(*GenericValue_FloatVal); ok {
return x.FloatVal
}
return 0
}
func (x *GenericValue) GetStringVal() string {
if x, ok := x.GetVal().(*GenericValue_StringVal); ok {
return x.StringVal
}
return ""
}
func (x *GenericValue) GetArrayVal() *Array {
if x, ok := x.GetVal().(*GenericValue_ArrayVal); ok {
return x.ArrayVal
}
return nil
}
type isGenericValue_Val interface {
isGenericValue_Val()
}
type GenericValue_BoolVal struct {
BoolVal bool `protobuf:"varint,1,opt,name=bool_val,json=boolVal,proto3,oneof"`
}
type GenericValue_Int64Val struct {
Int64Val int64 `protobuf:"varint,2,opt,name=int64_val,json=int64Val,proto3,oneof"`
}
type GenericValue_FloatVal struct {
FloatVal float64 `protobuf:"fixed64,3,opt,name=float_val,json=floatVal,proto3,oneof"`
}
type GenericValue_StringVal struct {
StringVal string `protobuf:"bytes,4,opt,name=string_val,json=stringVal,proto3,oneof"`
}
type GenericValue_ArrayVal struct {
ArrayVal *Array `protobuf:"bytes,5,opt,name=array_val,json=arrayVal,proto3,oneof"`
}
func (*GenericValue_BoolVal) isGenericValue_Val() {}
func (*GenericValue_Int64Val) isGenericValue_Val() {}
func (*GenericValue_FloatVal) isGenericValue_Val() {}
func (*GenericValue_StringVal) isGenericValue_Val() {}
func (*GenericValue_ArrayVal) isGenericValue_Val() {}
type Array struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Array []*GenericValue `protobuf:"bytes,1,rep,name=array,proto3" json:"array,omitempty"`
SameType bool `protobuf:"varint,2,opt,name=same_type,json=sameType,proto3" json:"same_type,omitempty"`
ElementType schemapb.DataType `protobuf:"varint,3,opt,name=element_type,json=elementType,proto3,enum=milvus.proto.schema.DataType" json:"element_type,omitempty"`
}
func (x *Array) Reset() {
*x = Array{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Array) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Array) ProtoMessage() {}
func (x *Array) ProtoReflect() protoreflect.Message {
mi := &file_plan_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 Array.ProtoReflect.Descriptor instead.
func (*Array) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{1}
}
func (x *Array) GetArray() []*GenericValue {
if x != nil {
return x.Array
}
return nil
}
func (x *Array) GetSameType() bool {
if x != nil {
return x.SameType
}
return false
}
func (x *Array) GetElementType() schemapb.DataType {
if x != nil {
return x.ElementType
}
return schemapb.DataType(0)
}
type SearchIteratorV2Info struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
BatchSize uint32 `protobuf:"varint,2,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"`
LastBound *float32 `protobuf:"fixed32,3,opt,name=last_bound,json=lastBound,proto3,oneof" json:"last_bound,omitempty"`
}
func (x *SearchIteratorV2Info) Reset() {
*x = SearchIteratorV2Info{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SearchIteratorV2Info) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SearchIteratorV2Info) ProtoMessage() {}
func (x *SearchIteratorV2Info) ProtoReflect() protoreflect.Message {
mi := &file_plan_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 SearchIteratorV2Info.ProtoReflect.Descriptor instead.
func (*SearchIteratorV2Info) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{2}
}
func (x *SearchIteratorV2Info) GetToken() string {
if x != nil {
return x.Token
}
return ""
}
func (x *SearchIteratorV2Info) GetBatchSize() uint32 {
if x != nil {
return x.BatchSize
}
return 0
}
func (x *SearchIteratorV2Info) GetLastBound() float32 {
if x != nil && x.LastBound != nil {
return *x.LastBound
}
return 0
}
type QueryInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Topk int64 `protobuf:"varint,1,opt,name=topk,proto3" json:"topk,omitempty"`
MetricType string `protobuf:"bytes,3,opt,name=metric_type,json=metricType,proto3" json:"metric_type,omitempty"`
SearchParams string `protobuf:"bytes,4,opt,name=search_params,json=searchParams,proto3" json:"search_params,omitempty"`
RoundDecimal int64 `protobuf:"varint,5,opt,name=round_decimal,json=roundDecimal,proto3" json:"round_decimal,omitempty"`
GroupByFieldId int64 `protobuf:"varint,6,opt,name=group_by_field_id,json=groupByFieldId,proto3" json:"group_by_field_id,omitempty"`
MaterializedViewInvolved bool `protobuf:"varint,7,opt,name=materialized_view_involved,json=materializedViewInvolved,proto3" json:"materialized_view_involved,omitempty"`
GroupSize int64 `protobuf:"varint,8,opt,name=group_size,json=groupSize,proto3" json:"group_size,omitempty"`
StrictGroupSize bool `protobuf:"varint,9,opt,name=strict_group_size,json=strictGroupSize,proto3" json:"strict_group_size,omitempty"`
Bm25Avgdl float64 `protobuf:"fixed64,10,opt,name=bm25_avgdl,json=bm25Avgdl,proto3" json:"bm25_avgdl,omitempty"`
QueryFieldId int64 `protobuf:"varint,11,opt,name=query_field_id,json=queryFieldId,proto3" json:"query_field_id,omitempty"`
Hints string `protobuf:"bytes,12,opt,name=hints,proto3" json:"hints,omitempty"`
SearchIteratorV2Info *SearchIteratorV2Info `protobuf:"bytes,13,opt,name=search_iterator_v2_info,json=searchIteratorV2Info,proto3,oneof" json:"search_iterator_v2_info,omitempty"`
}
func (x *QueryInfo) Reset() {
*x = QueryInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryInfo) ProtoMessage() {}
func (x *QueryInfo) ProtoReflect() protoreflect.Message {
mi := &file_plan_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 QueryInfo.ProtoReflect.Descriptor instead.
func (*QueryInfo) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{3}
}
func (x *QueryInfo) GetTopk() int64 {
if x != nil {
return x.Topk
}
return 0
}
func (x *QueryInfo) GetMetricType() string {
if x != nil {
return x.MetricType
}
return ""
}
func (x *QueryInfo) GetSearchParams() string {
if x != nil {
return x.SearchParams
}
return ""
}
func (x *QueryInfo) GetRoundDecimal() int64 {
if x != nil {
return x.RoundDecimal
}
return 0
}
func (x *QueryInfo) GetGroupByFieldId() int64 {
if x != nil {
return x.GroupByFieldId
}
return 0
}
func (x *QueryInfo) GetMaterializedViewInvolved() bool {
if x != nil {
return x.MaterializedViewInvolved
}
return false
}
func (x *QueryInfo) GetGroupSize() int64 {
if x != nil {
return x.GroupSize
}
return 0
}
func (x *QueryInfo) GetStrictGroupSize() bool {
if x != nil {
return x.StrictGroupSize
}
return false
}
func (x *QueryInfo) GetBm25Avgdl() float64 {
if x != nil {
return x.Bm25Avgdl
}
return 0
}
func (x *QueryInfo) GetQueryFieldId() int64 {
if x != nil {
return x.QueryFieldId
}
return 0
}
func (x *QueryInfo) GetHints() string {
if x != nil {
return x.Hints
}
return ""
}
func (x *QueryInfo) GetSearchIteratorV2Info() *SearchIteratorV2Info {
if x != nil {
return x.SearchIteratorV2Info
}
return nil
}
type ColumnInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FieldId int64 `protobuf:"varint,1,opt,name=field_id,json=fieldId,proto3" json:"field_id,omitempty"`
DataType schemapb.DataType `protobuf:"varint,2,opt,name=data_type,json=dataType,proto3,enum=milvus.proto.schema.DataType" json:"data_type,omitempty"`
IsPrimaryKey bool `protobuf:"varint,3,opt,name=is_primary_key,json=isPrimaryKey,proto3" json:"is_primary_key,omitempty"`
IsAutoID bool `protobuf:"varint,4,opt,name=is_autoID,json=isAutoID,proto3" json:"is_autoID,omitempty"`
NestedPath []string `protobuf:"bytes,5,rep,name=nested_path,json=nestedPath,proto3" json:"nested_path,omitempty"`
IsPartitionKey bool `protobuf:"varint,6,opt,name=is_partition_key,json=isPartitionKey,proto3" json:"is_partition_key,omitempty"`
ElementType schemapb.DataType `protobuf:"varint,7,opt,name=element_type,json=elementType,proto3,enum=milvus.proto.schema.DataType" json:"element_type,omitempty"`
IsClusteringKey bool `protobuf:"varint,8,opt,name=is_clustering_key,json=isClusteringKey,proto3" json:"is_clustering_key,omitempty"`
Nullable bool `protobuf:"varint,9,opt,name=nullable,proto3" json:"nullable,omitempty"`
}
func (x *ColumnInfo) Reset() {
*x = ColumnInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ColumnInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ColumnInfo) ProtoMessage() {}
func (x *ColumnInfo) ProtoReflect() protoreflect.Message {
mi := &file_plan_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 ColumnInfo.ProtoReflect.Descriptor instead.
func (*ColumnInfo) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{4}
}
func (x *ColumnInfo) GetFieldId() int64 {
if x != nil {
return x.FieldId
}
return 0
}
func (x *ColumnInfo) GetDataType() schemapb.DataType {
if x != nil {
return x.DataType
}
return schemapb.DataType(0)
}
func (x *ColumnInfo) GetIsPrimaryKey() bool {
if x != nil {
return x.IsPrimaryKey
}
return false
}
func (x *ColumnInfo) GetIsAutoID() bool {
if x != nil {
return x.IsAutoID
}
return false
}
func (x *ColumnInfo) GetNestedPath() []string {
if x != nil {
return x.NestedPath
}
return nil
}
func (x *ColumnInfo) GetIsPartitionKey() bool {
if x != nil {
return x.IsPartitionKey
}
return false
}
func (x *ColumnInfo) GetElementType() schemapb.DataType {
if x != nil {
return x.ElementType
}
return schemapb.DataType(0)
}
func (x *ColumnInfo) GetIsClusteringKey() bool {
if x != nil {
return x.IsClusteringKey
}
return false
}
func (x *ColumnInfo) GetNullable() bool {
if x != nil {
return x.Nullable
}
return false
}
type ColumnExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Info *ColumnInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
}
func (x *ColumnExpr) Reset() {
*x = ColumnExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ColumnExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ColumnExpr) ProtoMessage() {}
func (x *ColumnExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[5]
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 ColumnExpr.ProtoReflect.Descriptor instead.
func (*ColumnExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{5}
}
func (x *ColumnExpr) GetInfo() *ColumnInfo {
if x != nil {
return x.Info
}
return nil
}
type ExistsExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Info *ColumnInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
}
func (x *ExistsExpr) Reset() {
*x = ExistsExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ExistsExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExistsExpr) ProtoMessage() {}
func (x *ExistsExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[6]
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 ExistsExpr.ProtoReflect.Descriptor instead.
func (*ExistsExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{6}
}
func (x *ExistsExpr) GetInfo() *ColumnInfo {
if x != nil {
return x.Info
}
return nil
}
type ValueExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Value *GenericValue `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
TemplateVariableName string `protobuf:"bytes,2,opt,name=template_variable_name,json=templateVariableName,proto3" json:"template_variable_name,omitempty"`
}
func (x *ValueExpr) Reset() {
*x = ValueExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ValueExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ValueExpr) ProtoMessage() {}
func (x *ValueExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[7]
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 ValueExpr.ProtoReflect.Descriptor instead.
func (*ValueExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{7}
}
func (x *ValueExpr) GetValue() *GenericValue {
if x != nil {
return x.Value
}
return nil
}
func (x *ValueExpr) GetTemplateVariableName() string {
if x != nil {
return x.TemplateVariableName
}
return ""
}
type UnaryRangeExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=column_info,json=columnInfo,proto3" json:"column_info,omitempty"`
Op OpType `protobuf:"varint,2,opt,name=op,proto3,enum=milvus.proto.plan.OpType" json:"op,omitempty"`
Value *GenericValue `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
TemplateVariableName string `protobuf:"bytes,4,opt,name=template_variable_name,json=templateVariableName,proto3" json:"template_variable_name,omitempty"`
ExtraValues []*GenericValue `protobuf:"bytes,5,rep,name=extra_values,json=extraValues,proto3" json:"extra_values,omitempty"`
}
func (x *UnaryRangeExpr) Reset() {
*x = UnaryRangeExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UnaryRangeExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UnaryRangeExpr) ProtoMessage() {}
func (x *UnaryRangeExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[8]
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 UnaryRangeExpr.ProtoReflect.Descriptor instead.
func (*UnaryRangeExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{8}
}
func (x *UnaryRangeExpr) GetColumnInfo() *ColumnInfo {
if x != nil {
return x.ColumnInfo
}
return nil
}
func (x *UnaryRangeExpr) GetOp() OpType {
if x != nil {
return x.Op
}
return OpType_Invalid
}
func (x *UnaryRangeExpr) GetValue() *GenericValue {
if x != nil {
return x.Value
}
return nil
}
func (x *UnaryRangeExpr) GetTemplateVariableName() string {
if x != nil {
return x.TemplateVariableName
}
return ""
}
func (x *UnaryRangeExpr) GetExtraValues() []*GenericValue {
if x != nil {
return x.ExtraValues
}
return nil
}
type BinaryRangeExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=column_info,json=columnInfo,proto3" json:"column_info,omitempty"`
LowerInclusive bool `protobuf:"varint,2,opt,name=lower_inclusive,json=lowerInclusive,proto3" json:"lower_inclusive,omitempty"`
UpperInclusive bool `protobuf:"varint,3,opt,name=upper_inclusive,json=upperInclusive,proto3" json:"upper_inclusive,omitempty"`
LowerValue *GenericValue `protobuf:"bytes,4,opt,name=lower_value,json=lowerValue,proto3" json:"lower_value,omitempty"`
UpperValue *GenericValue `protobuf:"bytes,5,opt,name=upper_value,json=upperValue,proto3" json:"upper_value,omitempty"`
LowerTemplateVariableName string `protobuf:"bytes,6,opt,name=lower_template_variable_name,json=lowerTemplateVariableName,proto3" json:"lower_template_variable_name,omitempty"`
UpperTemplateVariableName string `protobuf:"bytes,7,opt,name=upper_template_variable_name,json=upperTemplateVariableName,proto3" json:"upper_template_variable_name,omitempty"`
}
func (x *BinaryRangeExpr) Reset() {
*x = BinaryRangeExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BinaryRangeExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BinaryRangeExpr) ProtoMessage() {}
func (x *BinaryRangeExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[9]
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 BinaryRangeExpr.ProtoReflect.Descriptor instead.
func (*BinaryRangeExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{9}
}
func (x *BinaryRangeExpr) GetColumnInfo() *ColumnInfo {
if x != nil {
return x.ColumnInfo
}
return nil
}
func (x *BinaryRangeExpr) GetLowerInclusive() bool {
if x != nil {
return x.LowerInclusive
}
return false
}
func (x *BinaryRangeExpr) GetUpperInclusive() bool {
if x != nil {
return x.UpperInclusive
}
return false
}
func (x *BinaryRangeExpr) GetLowerValue() *GenericValue {
if x != nil {
return x.LowerValue
}
return nil
}
func (x *BinaryRangeExpr) GetUpperValue() *GenericValue {
if x != nil {
return x.UpperValue
}
return nil
}
func (x *BinaryRangeExpr) GetLowerTemplateVariableName() string {
if x != nil {
return x.LowerTemplateVariableName
}
return ""
}
func (x *BinaryRangeExpr) GetUpperTemplateVariableName() string {
if x != nil {
return x.UpperTemplateVariableName
}
return ""
}
type CallExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FunctionName string `protobuf:"bytes,1,opt,name=function_name,json=functionName,proto3" json:"function_name,omitempty"`
FunctionParameters []*Expr `protobuf:"bytes,2,rep,name=function_parameters,json=functionParameters,proto3" json:"function_parameters,omitempty"`
}
func (x *CallExpr) Reset() {
*x = CallExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CallExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CallExpr) ProtoMessage() {}
func (x *CallExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[10]
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 CallExpr.ProtoReflect.Descriptor instead.
func (*CallExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{10}
}
func (x *CallExpr) GetFunctionName() string {
if x != nil {
return x.FunctionName
}
return ""
}
func (x *CallExpr) GetFunctionParameters() []*Expr {
if x != nil {
return x.FunctionParameters
}
return nil
}
type CompareExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
LeftColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=left_column_info,json=leftColumnInfo,proto3" json:"left_column_info,omitempty"`
RightColumnInfo *ColumnInfo `protobuf:"bytes,2,opt,name=right_column_info,json=rightColumnInfo,proto3" json:"right_column_info,omitempty"`
Op OpType `protobuf:"varint,3,opt,name=op,proto3,enum=milvus.proto.plan.OpType" json:"op,omitempty"`
}
func (x *CompareExpr) Reset() {
*x = CompareExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CompareExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CompareExpr) ProtoMessage() {}
func (x *CompareExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[11]
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 CompareExpr.ProtoReflect.Descriptor instead.
func (*CompareExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{11}
}
func (x *CompareExpr) GetLeftColumnInfo() *ColumnInfo {
if x != nil {
return x.LeftColumnInfo
}
return nil
}
func (x *CompareExpr) GetRightColumnInfo() *ColumnInfo {
if x != nil {
return x.RightColumnInfo
}
return nil
}
func (x *CompareExpr) GetOp() OpType {
if x != nil {
return x.Op
}
return OpType_Invalid
}
type TermExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=column_info,json=columnInfo,proto3" json:"column_info,omitempty"`
Values []*GenericValue `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"`
IsInField bool `protobuf:"varint,3,opt,name=is_in_field,json=isInField,proto3" json:"is_in_field,omitempty"`
TemplateVariableName string `protobuf:"bytes,4,opt,name=template_variable_name,json=templateVariableName,proto3" json:"template_variable_name,omitempty"`
}
func (x *TermExpr) Reset() {
*x = TermExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TermExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TermExpr) ProtoMessage() {}
func (x *TermExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[12]
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 TermExpr.ProtoReflect.Descriptor instead.
func (*TermExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{12}
}
func (x *TermExpr) GetColumnInfo() *ColumnInfo {
if x != nil {
return x.ColumnInfo
}
return nil
}
func (x *TermExpr) GetValues() []*GenericValue {
if x != nil {
return x.Values
}
return nil
}
func (x *TermExpr) GetIsInField() bool {
if x != nil {
return x.IsInField
}
return false
}
func (x *TermExpr) GetTemplateVariableName() string {
if x != nil {
return x.TemplateVariableName
}
return ""
}
type JSONContainsExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=column_info,json=columnInfo,proto3" json:"column_info,omitempty"`
Elements []*GenericValue `protobuf:"bytes,2,rep,name=elements,proto3" json:"elements,omitempty"`
Op JSONContainsExpr_JSONOp `protobuf:"varint,3,opt,name=op,proto3,enum=milvus.proto.plan.JSONContainsExpr_JSONOp" json:"op,omitempty"`
ElementsSameType bool `protobuf:"varint,4,opt,name=elements_same_type,json=elementsSameType,proto3" json:"elements_same_type,omitempty"`
TemplateVariableName string `protobuf:"bytes,5,opt,name=template_variable_name,json=templateVariableName,proto3" json:"template_variable_name,omitempty"`
}
func (x *JSONContainsExpr) Reset() {
*x = JSONContainsExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *JSONContainsExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*JSONContainsExpr) ProtoMessage() {}
func (x *JSONContainsExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[13]
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 JSONContainsExpr.ProtoReflect.Descriptor instead.
func (*JSONContainsExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{13}
}
func (x *JSONContainsExpr) GetColumnInfo() *ColumnInfo {
if x != nil {
return x.ColumnInfo
}
return nil
}
func (x *JSONContainsExpr) GetElements() []*GenericValue {
if x != nil {
return x.Elements
}
return nil
}
func (x *JSONContainsExpr) GetOp() JSONContainsExpr_JSONOp {
if x != nil {
return x.Op
}
return JSONContainsExpr_Invalid
}
func (x *JSONContainsExpr) GetElementsSameType() bool {
if x != nil {
return x.ElementsSameType
}
return false
}
func (x *JSONContainsExpr) GetTemplateVariableName() string {
if x != nil {
return x.TemplateVariableName
}
return ""
}
type NullExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=column_info,json=columnInfo,proto3" json:"column_info,omitempty"`
Op NullExpr_NullOp `protobuf:"varint,2,opt,name=op,proto3,enum=milvus.proto.plan.NullExpr_NullOp" json:"op,omitempty"`
}
func (x *NullExpr) Reset() {
*x = NullExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *NullExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*NullExpr) ProtoMessage() {}
func (x *NullExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[14]
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 NullExpr.ProtoReflect.Descriptor instead.
func (*NullExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{14}
}
func (x *NullExpr) GetColumnInfo() *ColumnInfo {
if x != nil {
return x.ColumnInfo
}
return nil
}
func (x *NullExpr) GetOp() NullExpr_NullOp {
if x != nil {
return x.Op
}
return NullExpr_Invalid
}
type GISFunctionFilterExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=column_info,json=columnInfo,proto3" json:"column_info,omitempty"`
WktString string `protobuf:"bytes,2,opt,name=wkt_string,json=wktString,proto3" json:"wkt_string,omitempty"`
Op GISFunctionFilterExpr_GISOp `protobuf:"varint,3,opt,name=op,proto3,enum=milvus.proto.plan.GISFunctionFilterExpr_GISOp" json:"op,omitempty"`
}
func (x *GISFunctionFilterExpr) Reset() {
*x = GISFunctionFilterExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *GISFunctionFilterExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GISFunctionFilterExpr) ProtoMessage() {}
func (x *GISFunctionFilterExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[15]
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 GISFunctionFilterExpr.ProtoReflect.Descriptor instead.
func (*GISFunctionFilterExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{15}
}
func (x *GISFunctionFilterExpr) GetColumnInfo() *ColumnInfo {
if x != nil {
return x.ColumnInfo
}
return nil
}
func (x *GISFunctionFilterExpr) GetWktString() string {
if x != nil {
return x.WktString
}
return ""
}
func (x *GISFunctionFilterExpr) GetOp() GISFunctionFilterExpr_GISOp {
if x != nil {
return x.Op
}
return GISFunctionFilterExpr_Invalid
}
type UnaryExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Op UnaryExpr_UnaryOp `protobuf:"varint,1,opt,name=op,proto3,enum=milvus.proto.plan.UnaryExpr_UnaryOp" json:"op,omitempty"`
Child *Expr `protobuf:"bytes,2,opt,name=child,proto3" json:"child,omitempty"`
}
func (x *UnaryExpr) Reset() {
*x = UnaryExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UnaryExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UnaryExpr) ProtoMessage() {}
func (x *UnaryExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[16]
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 UnaryExpr.ProtoReflect.Descriptor instead.
func (*UnaryExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{16}
}
func (x *UnaryExpr) GetOp() UnaryExpr_UnaryOp {
if x != nil {
return x.Op
}
return UnaryExpr_Invalid
}
func (x *UnaryExpr) GetChild() *Expr {
if x != nil {
return x.Child
}
return nil
}
type BinaryExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Op BinaryExpr_BinaryOp `protobuf:"varint,1,opt,name=op,proto3,enum=milvus.proto.plan.BinaryExpr_BinaryOp" json:"op,omitempty"`
Left *Expr `protobuf:"bytes,2,opt,name=left,proto3" json:"left,omitempty"`
Right *Expr `protobuf:"bytes,3,opt,name=right,proto3" json:"right,omitempty"`
}
func (x *BinaryExpr) Reset() {
*x = BinaryExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BinaryExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BinaryExpr) ProtoMessage() {}
func (x *BinaryExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[17]
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 BinaryExpr.ProtoReflect.Descriptor instead.
func (*BinaryExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{17}
}
func (x *BinaryExpr) GetOp() BinaryExpr_BinaryOp {
if x != nil {
return x.Op
}
return BinaryExpr_Invalid
}
func (x *BinaryExpr) GetLeft() *Expr {
if x != nil {
return x.Left
}
return nil
}
func (x *BinaryExpr) GetRight() *Expr {
if x != nil {
return x.Right
}
return nil
}
type BinaryArithOp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=column_info,json=columnInfo,proto3" json:"column_info,omitempty"`
ArithOp ArithOpType `protobuf:"varint,2,opt,name=arith_op,json=arithOp,proto3,enum=milvus.proto.plan.ArithOpType" json:"arith_op,omitempty"`
RightOperand *GenericValue `protobuf:"bytes,3,opt,name=right_operand,json=rightOperand,proto3" json:"right_operand,omitempty"`
}
func (x *BinaryArithOp) Reset() {
*x = BinaryArithOp{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BinaryArithOp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BinaryArithOp) ProtoMessage() {}
func (x *BinaryArithOp) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[18]
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 BinaryArithOp.ProtoReflect.Descriptor instead.
func (*BinaryArithOp) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{18}
}
func (x *BinaryArithOp) GetColumnInfo() *ColumnInfo {
if x != nil {
return x.ColumnInfo
}
return nil
}
func (x *BinaryArithOp) GetArithOp() ArithOpType {
if x != nil {
return x.ArithOp
}
return ArithOpType_Unknown
}
func (x *BinaryArithOp) GetRightOperand() *GenericValue {
if x != nil {
return x.RightOperand
}
return nil
}
type BinaryArithExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Left *Expr `protobuf:"bytes,1,opt,name=left,proto3" json:"left,omitempty"`
Right *Expr `protobuf:"bytes,2,opt,name=right,proto3" json:"right,omitempty"`
Op ArithOpType `protobuf:"varint,3,opt,name=op,proto3,enum=milvus.proto.plan.ArithOpType" json:"op,omitempty"`
}
func (x *BinaryArithExpr) Reset() {
*x = BinaryArithExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BinaryArithExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BinaryArithExpr) ProtoMessage() {}
func (x *BinaryArithExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[19]
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 BinaryArithExpr.ProtoReflect.Descriptor instead.
func (*BinaryArithExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{19}
}
func (x *BinaryArithExpr) GetLeft() *Expr {
if x != nil {
return x.Left
}
return nil
}
func (x *BinaryArithExpr) GetRight() *Expr {
if x != nil {
return x.Right
}
return nil
}
func (x *BinaryArithExpr) GetOp() ArithOpType {
if x != nil {
return x.Op
}
return ArithOpType_Unknown
}
type BinaryArithOpEvalRangeExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ColumnInfo *ColumnInfo `protobuf:"bytes,1,opt,name=column_info,json=columnInfo,proto3" json:"column_info,omitempty"`
ArithOp ArithOpType `protobuf:"varint,2,opt,name=arith_op,json=arithOp,proto3,enum=milvus.proto.plan.ArithOpType" json:"arith_op,omitempty"`
RightOperand *GenericValue `protobuf:"bytes,3,opt,name=right_operand,json=rightOperand,proto3" json:"right_operand,omitempty"`
Op OpType `protobuf:"varint,4,opt,name=op,proto3,enum=milvus.proto.plan.OpType" json:"op,omitempty"`
Value *GenericValue `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"`
OperandTemplateVariableName string `protobuf:"bytes,6,opt,name=operand_template_variable_name,json=operandTemplateVariableName,proto3" json:"operand_template_variable_name,omitempty"`
ValueTemplateVariableName string `protobuf:"bytes,7,opt,name=value_template_variable_name,json=valueTemplateVariableName,proto3" json:"value_template_variable_name,omitempty"`
}
func (x *BinaryArithOpEvalRangeExpr) Reset() {
*x = BinaryArithOpEvalRangeExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BinaryArithOpEvalRangeExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BinaryArithOpEvalRangeExpr) ProtoMessage() {}
func (x *BinaryArithOpEvalRangeExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[20]
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 BinaryArithOpEvalRangeExpr.ProtoReflect.Descriptor instead.
func (*BinaryArithOpEvalRangeExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{20}
}
func (x *BinaryArithOpEvalRangeExpr) GetColumnInfo() *ColumnInfo {
if x != nil {
return x.ColumnInfo
}
return nil
}
func (x *BinaryArithOpEvalRangeExpr) GetArithOp() ArithOpType {
if x != nil {
return x.ArithOp
}
return ArithOpType_Unknown
}
func (x *BinaryArithOpEvalRangeExpr) GetRightOperand() *GenericValue {
if x != nil {
return x.RightOperand
}
return nil
}
func (x *BinaryArithOpEvalRangeExpr) GetOp() OpType {
if x != nil {
return x.Op
}
return OpType_Invalid
}
func (x *BinaryArithOpEvalRangeExpr) GetValue() *GenericValue {
if x != nil {
return x.Value
}
return nil
}
func (x *BinaryArithOpEvalRangeExpr) GetOperandTemplateVariableName() string {
if x != nil {
return x.OperandTemplateVariableName
}
return ""
}
func (x *BinaryArithOpEvalRangeExpr) GetValueTemplateVariableName() string {
if x != nil {
return x.ValueTemplateVariableName
}
return ""
}
type AlwaysTrueExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *AlwaysTrueExpr) Reset() {
*x = AlwaysTrueExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AlwaysTrueExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AlwaysTrueExpr) ProtoMessage() {}
func (x *AlwaysTrueExpr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[21]
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 AlwaysTrueExpr.ProtoReflect.Descriptor instead.
func (*AlwaysTrueExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{21}
}
type Expr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Types that are assignable to Expr:
//
// *Expr_TermExpr
// *Expr_UnaryExpr
// *Expr_BinaryExpr
// *Expr_CompareExpr
// *Expr_UnaryRangeExpr
// *Expr_BinaryRangeExpr
// *Expr_BinaryArithOpEvalRangeExpr
// *Expr_BinaryArithExpr
// *Expr_ValueExpr
// *Expr_ColumnExpr
// *Expr_ExistsExpr
// *Expr_AlwaysTrueExpr
// *Expr_JsonContainsExpr
// *Expr_CallExpr
// *Expr_NullExpr
// *Expr_GisfunctionFilterExpr
Expr isExpr_Expr `protobuf_oneof:"expr"`
IsTemplate bool `protobuf:"varint,20,opt,name=is_template,json=isTemplate,proto3" json:"is_template,omitempty"`
}
func (x *Expr) Reset() {
*x = Expr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Expr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Expr) ProtoMessage() {}
func (x *Expr) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[22]
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 Expr.ProtoReflect.Descriptor instead.
func (*Expr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{22}
}
func (m *Expr) GetExpr() isExpr_Expr {
if m != nil {
return m.Expr
}
return nil
}
func (x *Expr) GetTermExpr() *TermExpr {
if x, ok := x.GetExpr().(*Expr_TermExpr); ok {
return x.TermExpr
}
return nil
}
func (x *Expr) GetUnaryExpr() *UnaryExpr {
if x, ok := x.GetExpr().(*Expr_UnaryExpr); ok {
return x.UnaryExpr
}
return nil
}
func (x *Expr) GetBinaryExpr() *BinaryExpr {
if x, ok := x.GetExpr().(*Expr_BinaryExpr); ok {
return x.BinaryExpr
}
return nil
}
func (x *Expr) GetCompareExpr() *CompareExpr {
if x, ok := x.GetExpr().(*Expr_CompareExpr); ok {
return x.CompareExpr
}
return nil
}
func (x *Expr) GetUnaryRangeExpr() *UnaryRangeExpr {
if x, ok := x.GetExpr().(*Expr_UnaryRangeExpr); ok {
return x.UnaryRangeExpr
}
return nil
}
func (x *Expr) GetBinaryRangeExpr() *BinaryRangeExpr {
if x, ok := x.GetExpr().(*Expr_BinaryRangeExpr); ok {
return x.BinaryRangeExpr
}
return nil
}
func (x *Expr) GetBinaryArithOpEvalRangeExpr() *BinaryArithOpEvalRangeExpr {
if x, ok := x.GetExpr().(*Expr_BinaryArithOpEvalRangeExpr); ok {
return x.BinaryArithOpEvalRangeExpr
}
return nil
}
func (x *Expr) GetBinaryArithExpr() *BinaryArithExpr {
if x, ok := x.GetExpr().(*Expr_BinaryArithExpr); ok {
return x.BinaryArithExpr
}
return nil
}
func (x *Expr) GetValueExpr() *ValueExpr {
if x, ok := x.GetExpr().(*Expr_ValueExpr); ok {
return x.ValueExpr
}
return nil
}
func (x *Expr) GetColumnExpr() *ColumnExpr {
if x, ok := x.GetExpr().(*Expr_ColumnExpr); ok {
return x.ColumnExpr
}
return nil
}
func (x *Expr) GetExistsExpr() *ExistsExpr {
if x, ok := x.GetExpr().(*Expr_ExistsExpr); ok {
return x.ExistsExpr
}
return nil
}
func (x *Expr) GetAlwaysTrueExpr() *AlwaysTrueExpr {
if x, ok := x.GetExpr().(*Expr_AlwaysTrueExpr); ok {
return x.AlwaysTrueExpr
}
return nil
}
func (x *Expr) GetJsonContainsExpr() *JSONContainsExpr {
if x, ok := x.GetExpr().(*Expr_JsonContainsExpr); ok {
return x.JsonContainsExpr
}
return nil
}
func (x *Expr) GetCallExpr() *CallExpr {
if x, ok := x.GetExpr().(*Expr_CallExpr); ok {
return x.CallExpr
}
return nil
}
func (x *Expr) GetNullExpr() *NullExpr {
if x, ok := x.GetExpr().(*Expr_NullExpr); ok {
return x.NullExpr
}
return nil
}
func (x *Expr) GetGisfunctionFilterExpr() *GISFunctionFilterExpr {
if x, ok := x.GetExpr().(*Expr_GisfunctionFilterExpr); ok {
return x.GisfunctionFilterExpr
}
return nil
}
func (x *Expr) GetIsTemplate() bool {
if x != nil {
return x.IsTemplate
}
return false
}
type isExpr_Expr interface {
isExpr_Expr()
}
type Expr_TermExpr struct {
TermExpr *TermExpr `protobuf:"bytes,1,opt,name=term_expr,json=termExpr,proto3,oneof"`
}
type Expr_UnaryExpr struct {
UnaryExpr *UnaryExpr `protobuf:"bytes,2,opt,name=unary_expr,json=unaryExpr,proto3,oneof"`
}
type Expr_BinaryExpr struct {
BinaryExpr *BinaryExpr `protobuf:"bytes,3,opt,name=binary_expr,json=binaryExpr,proto3,oneof"`
}
type Expr_CompareExpr struct {
CompareExpr *CompareExpr `protobuf:"bytes,4,opt,name=compare_expr,json=compareExpr,proto3,oneof"`
}
type Expr_UnaryRangeExpr struct {
UnaryRangeExpr *UnaryRangeExpr `protobuf:"bytes,5,opt,name=unary_range_expr,json=unaryRangeExpr,proto3,oneof"`
}
type Expr_BinaryRangeExpr struct {
BinaryRangeExpr *BinaryRangeExpr `protobuf:"bytes,6,opt,name=binary_range_expr,json=binaryRangeExpr,proto3,oneof"`
}
type Expr_BinaryArithOpEvalRangeExpr struct {
BinaryArithOpEvalRangeExpr *BinaryArithOpEvalRangeExpr `protobuf:"bytes,7,opt,name=binary_arith_op_eval_range_expr,json=binaryArithOpEvalRangeExpr,proto3,oneof"`
}
type Expr_BinaryArithExpr struct {
BinaryArithExpr *BinaryArithExpr `protobuf:"bytes,8,opt,name=binary_arith_expr,json=binaryArithExpr,proto3,oneof"`
}
type Expr_ValueExpr struct {
ValueExpr *ValueExpr `protobuf:"bytes,9,opt,name=value_expr,json=valueExpr,proto3,oneof"`
}
type Expr_ColumnExpr struct {
ColumnExpr *ColumnExpr `protobuf:"bytes,10,opt,name=column_expr,json=columnExpr,proto3,oneof"`
}
type Expr_ExistsExpr struct {
ExistsExpr *ExistsExpr `protobuf:"bytes,11,opt,name=exists_expr,json=existsExpr,proto3,oneof"`
}
type Expr_AlwaysTrueExpr struct {
AlwaysTrueExpr *AlwaysTrueExpr `protobuf:"bytes,12,opt,name=always_true_expr,json=alwaysTrueExpr,proto3,oneof"`
}
type Expr_JsonContainsExpr struct {
JsonContainsExpr *JSONContainsExpr `protobuf:"bytes,13,opt,name=json_contains_expr,json=jsonContainsExpr,proto3,oneof"`
}
type Expr_CallExpr struct {
CallExpr *CallExpr `protobuf:"bytes,14,opt,name=call_expr,json=callExpr,proto3,oneof"`
}
type Expr_NullExpr struct {
NullExpr *NullExpr `protobuf:"bytes,15,opt,name=null_expr,json=nullExpr,proto3,oneof"`
}
type Expr_GisfunctionFilterExpr struct {
GisfunctionFilterExpr *GISFunctionFilterExpr `protobuf:"bytes,16,opt,name=gisfunction_filter_expr,json=gisfunctionFilterExpr,proto3,oneof"`
}
func (*Expr_TermExpr) isExpr_Expr() {}
func (*Expr_UnaryExpr) isExpr_Expr() {}
func (*Expr_BinaryExpr) isExpr_Expr() {}
func (*Expr_CompareExpr) isExpr_Expr() {}
func (*Expr_UnaryRangeExpr) isExpr_Expr() {}
func (*Expr_BinaryRangeExpr) isExpr_Expr() {}
func (*Expr_BinaryArithOpEvalRangeExpr) isExpr_Expr() {}
func (*Expr_BinaryArithExpr) isExpr_Expr() {}
func (*Expr_ValueExpr) isExpr_Expr() {}
func (*Expr_ColumnExpr) isExpr_Expr() {}
func (*Expr_ExistsExpr) isExpr_Expr() {}
func (*Expr_AlwaysTrueExpr) isExpr_Expr() {}
func (*Expr_JsonContainsExpr) isExpr_Expr() {}
func (*Expr_CallExpr) isExpr_Expr() {}
func (*Expr_NullExpr) isExpr_Expr() {}
func (*Expr_GisfunctionFilterExpr) isExpr_Expr() {}
type VectorANNS struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
VectorType VectorType `protobuf:"varint,1,opt,name=vector_type,json=vectorType,proto3,enum=milvus.proto.plan.VectorType" json:"vector_type,omitempty"`
FieldId int64 `protobuf:"varint,2,opt,name=field_id,json=fieldId,proto3" json:"field_id,omitempty"`
Predicates *Expr `protobuf:"bytes,3,opt,name=predicates,proto3" json:"predicates,omitempty"`
QueryInfo *QueryInfo `protobuf:"bytes,4,opt,name=query_info,json=queryInfo,proto3" json:"query_info,omitempty"`
PlaceholderTag string `protobuf:"bytes,5,opt,name=placeholder_tag,json=placeholderTag,proto3" json:"placeholder_tag,omitempty"` // always be "$0"
}
func (x *VectorANNS) Reset() {
*x = VectorANNS{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *VectorANNS) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*VectorANNS) ProtoMessage() {}
func (x *VectorANNS) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[23]
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 VectorANNS.ProtoReflect.Descriptor instead.
func (*VectorANNS) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{23}
}
func (x *VectorANNS) GetVectorType() VectorType {
if x != nil {
return x.VectorType
}
return VectorType_BinaryVector
}
func (x *VectorANNS) GetFieldId() int64 {
if x != nil {
return x.FieldId
}
return 0
}
func (x *VectorANNS) GetPredicates() *Expr {
if x != nil {
return x.Predicates
}
return nil
}
func (x *VectorANNS) GetQueryInfo() *QueryInfo {
if x != nil {
return x.QueryInfo
}
return nil
}
func (x *VectorANNS) GetPlaceholderTag() string {
if x != nil {
return x.PlaceholderTag
}
return ""
}
type QueryPlanNode struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Predicates *Expr `protobuf:"bytes,1,opt,name=predicates,proto3" json:"predicates,omitempty"`
IsCount bool `protobuf:"varint,2,opt,name=is_count,json=isCount,proto3" json:"is_count,omitempty"`
Limit int64 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
}
func (x *QueryPlanNode) Reset() {
*x = QueryPlanNode{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *QueryPlanNode) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*QueryPlanNode) ProtoMessage() {}
func (x *QueryPlanNode) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[24]
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 QueryPlanNode.ProtoReflect.Descriptor instead.
func (*QueryPlanNode) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{24}
}
func (x *QueryPlanNode) GetPredicates() *Expr {
if x != nil {
return x.Predicates
}
return nil
}
func (x *QueryPlanNode) GetIsCount() bool {
if x != nil {
return x.IsCount
}
return false
}
func (x *QueryPlanNode) GetLimit() int64 {
if x != nil {
return x.Limit
}
return 0
}
type PlanNode struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Types that are assignable to Node:
//
// *PlanNode_VectorAnns
// *PlanNode_Predicates
// *PlanNode_Query
Node isPlanNode_Node `protobuf_oneof:"node"`
OutputFieldIds []int64 `protobuf:"varint,3,rep,packed,name=output_field_ids,json=outputFieldIds,proto3" json:"output_field_ids,omitempty"`
DynamicFields []string `protobuf:"bytes,5,rep,name=dynamic_fields,json=dynamicFields,proto3" json:"dynamic_fields,omitempty"`
}
func (x *PlanNode) Reset() {
*x = PlanNode{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PlanNode) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PlanNode) ProtoMessage() {}
func (x *PlanNode) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[25]
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 PlanNode.ProtoReflect.Descriptor instead.
func (*PlanNode) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{25}
}
func (m *PlanNode) GetNode() isPlanNode_Node {
if m != nil {
return m.Node
}
return nil
}
func (x *PlanNode) GetVectorAnns() *VectorANNS {
if x, ok := x.GetNode().(*PlanNode_VectorAnns); ok {
return x.VectorAnns
}
return nil
}
func (x *PlanNode) GetPredicates() *Expr {
if x, ok := x.GetNode().(*PlanNode_Predicates); ok {
return x.Predicates
}
return nil
}
func (x *PlanNode) GetQuery() *QueryPlanNode {
if x, ok := x.GetNode().(*PlanNode_Query); ok {
return x.Query
}
return nil
}
func (x *PlanNode) GetOutputFieldIds() []int64 {
if x != nil {
return x.OutputFieldIds
}
return nil
}
func (x *PlanNode) GetDynamicFields() []string {
if x != nil {
return x.DynamicFields
}
return nil
}
type isPlanNode_Node interface {
isPlanNode_Node()
}
type PlanNode_VectorAnns struct {
VectorAnns *VectorANNS `protobuf:"bytes,1,opt,name=vector_anns,json=vectorAnns,proto3,oneof"`
}
type PlanNode_Predicates struct {
Predicates *Expr `protobuf:"bytes,2,opt,name=predicates,proto3,oneof"` // deprecated, use query instead.
}
type PlanNode_Query struct {
Query *QueryPlanNode `protobuf:"bytes,4,opt,name=query,proto3,oneof"`
}
func (*PlanNode_VectorAnns) isPlanNode_Node() {}
func (*PlanNode_Predicates) isPlanNode_Node() {}
func (*PlanNode_Query) isPlanNode_Node() {}
var File_plan_proto protoreflect.FileDescriptor
var file_plan_proto_rawDesc = []byte{
0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x1a,
0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xca, 0x01,
0x0a, 0x0c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b,
0x0a, 0x08, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
0x48, 0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x09, 0x69,
0x6e, 0x74, 0x36, 0x34, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00,
0x52, 0x08, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x09, 0x66, 0x6c,
0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52,
0x08, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0a, 0x73, 0x74, 0x72,
0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
0x09, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x72,
0x72, 0x61, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61,
0x6e, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x00, 0x52, 0x08, 0x61, 0x72, 0x72, 0x61, 0x79,
0x56, 0x61, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x9d, 0x01, 0x0a, 0x05, 0x41,
0x72, 0x72, 0x61, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73,
0x61, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
0x73, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x40, 0x0a, 0x0c, 0x65, 0x6c, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63,
0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x65,
0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x7e, 0x0a, 0x14, 0x53, 0x65,
0x61, 0x72, 0x63, 0x68, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63,
0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x62, 0x61,
0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f,
0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x09, 0x6c,
0x61, 0x73, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x22, 0x9a, 0x04, 0x0a, 0x09, 0x51,
0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x70, 0x6b,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x6f, 0x70, 0x6b, 0x12, 0x1f, 0x0a, 0x0b,
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a,
0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x63, 0x69,
0x6d, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x72, 0x6f, 0x75, 0x6e, 0x64,
0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x29, 0x0a, 0x11, 0x67, 0x72, 0x6f, 0x75, 0x70,
0x5f, 0x62, 0x79, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64,
0x49, 0x64, 0x12, 0x3c, 0x0a, 0x1a, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a,
0x65, 0x64, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64,
0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c,
0x69, 0x7a, 0x65, 0x64, 0x56, 0x69, 0x65, 0x77, 0x49, 0x6e, 0x76, 0x6f, 0x6c, 0x76, 0x65, 0x64,
0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08,
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12,
0x2a, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f,
0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x69,
0x63, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x62,
0x6d, 0x32, 0x35, 0x5f, 0x61, 0x76, 0x67, 0x64, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52,
0x09, 0x62, 0x6d, 0x32, 0x35, 0x41, 0x76, 0x67, 0x64, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x71, 0x75,
0x65, 0x72, 0x79, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64,
0x12, 0x14, 0x0a, 0x05, 0x68, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x68, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x63, 0x0a, 0x17, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68,
0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x32, 0x5f, 0x69, 0x6e, 0x66,
0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x53, 0x65, 0x61, 0x72,
0x63, 0x68, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x49, 0x6e, 0x66, 0x6f,
0x48, 0x00, 0x52, 0x14, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74,
0x6f, 0x72, 0x56, 0x32, 0x49, 0x6e, 0x66, 0x6f, 0x88, 0x01, 0x01, 0x42, 0x1a, 0x0a, 0x18, 0x5f,
0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f,
0x76, 0x32, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xfb, 0x02, 0x0a, 0x0a, 0x43, 0x6f, 0x6c, 0x75,
0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49,
0x64, 0x12, 0x3a, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54,
0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a,
0x0e, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x6b, 0x65, 0x79, 0x18,
0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79,
0x4b, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x49, 0x44,
0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x49, 0x44,
0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18,
0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74,
0x68, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x50,
0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x0c, 0x65,
0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65,
0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a,
0x11, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6b,
0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c,
0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x75, 0x6c,
0x6c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x3f, 0x0a, 0x0a, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45,
0x78, 0x70, 0x72, 0x12, 0x31, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x3f, 0x0a, 0x0a, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73,
0x45, 0x78, 0x70, 0x72, 0x12, 0x31, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0x78, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x75, 0x65,
0x45, 0x78, 0x70, 0x72, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x74,
0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65, 0x6d,
0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d,
0x65, 0x22, 0xac, 0x02, 0x0a, 0x0e, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65,
0x45, 0x78, 0x70, 0x72, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69,
0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f,
0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x19, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x6f, 0x70, 0x12,
0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61,
0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0c,
0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61,
0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73,
0x22, 0xa9, 0x03, 0x0a, 0x0f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65,
0x45, 0x78, 0x70, 0x72, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69,
0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f,
0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e,
0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6c,
0x6f, 0x77, 0x65, 0x72, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x12, 0x27, 0x0a,
0x0f, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x76, 0x65,
0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x75, 0x70, 0x70, 0x65, 0x72, 0x49, 0x6e, 0x63,
0x6c, 0x75, 0x73, 0x69, 0x76, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e,
0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x6c, 0x6f,
0x77, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65,
0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61,
0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a,
0x75, 0x70, 0x70, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x6c, 0x6f,
0x77, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72,
0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
0x52, 0x19, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56,
0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x75,
0x70, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61,
0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
0x09, 0x52, 0x19, 0x75, 0x70, 0x70, 0x65, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65,
0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x79, 0x0a, 0x08,
0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0c, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a,
0x13, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65,
0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x45,
0x78, 0x70, 0x72, 0x52, 0x12, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0xcc, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x70,
0x61, 0x72, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x47, 0x0a, 0x10, 0x6c, 0x65, 0x66, 0x74, 0x5f,
0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x0e, 0x6c, 0x65, 0x66, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x49, 0x0a, 0x11, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e,
0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x72, 0x69, 0x67, 0x68,
0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x02, 0x6f,
0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x4f, 0x70, 0x54, 0x79,
0x70, 0x65, 0x52, 0x02, 0x6f, 0x70, 0x22, 0xd9, 0x01, 0x0a, 0x08, 0x54, 0x65, 0x72, 0x6d, 0x45,
0x78, 0x70, 0x72, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e,
0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6c,
0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x37, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56,
0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0b,
0x69, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
0x08, 0x52, 0x09, 0x69, 0x73, 0x49, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x34, 0x0a, 0x16,
0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c,
0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x65,
0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61,
0x6d, 0x65, 0x22, 0xf6, 0x02, 0x0a, 0x10, 0x4a, 0x53, 0x4f, 0x4e, 0x43, 0x6f, 0x6e, 0x74, 0x61,
0x69, 0x6e, 0x73, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d,
0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e,
0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6f, 0x6c,
0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3b, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x47, 0x65,
0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x2a, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x4a, 0x53, 0x4f, 0x4e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
0x73, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x4a, 0x53, 0x4f, 0x4e, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70,
0x12, 0x2c, 0x0a, 0x12, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x73, 0x61, 0x6d,
0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x6c,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x53, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34,
0x0a, 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61,
0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14,
0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x06, 0x4a, 0x53, 0x4f, 0x4e, 0x4f, 0x70, 0x12, 0x0b,
0x0a, 0x07, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43,
0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x6f, 0x6e,
0x74, 0x61, 0x69, 0x6e, 0x73, 0x41, 0x6c, 0x6c, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x6f,
0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x41, 0x6e, 0x79, 0x10, 0x03, 0x22, 0xb0, 0x01, 0x0a, 0x08,
0x4e, 0x75, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75,
0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61,
0x6e, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6f,
0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x45, 0x78, 0x70,
0x72, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x30, 0x0a, 0x06,
0x4e, 0x75, 0x6c, 0x6c, 0x4f, 0x70, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69,
0x64, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x01, 0x12,
0x0d, 0x0a, 0x09, 0x49, 0x73, 0x4e, 0x6f, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x02, 0x22, 0xaa,
0x02, 0x0a, 0x15, 0x47, 0x49, 0x53, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69,
0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3e, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75,
0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61,
0x6e, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x6f,
0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x6b, 0x74, 0x5f,
0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x6b,
0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x3e, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x03, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x47, 0x49, 0x53, 0x46, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x47, 0x49,
0x53, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x72, 0x0a, 0x05, 0x47, 0x49, 0x53, 0x4f, 0x70,
0x12, 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, 0x0a, 0x0a,
0x06, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x6f, 0x75,
0x63, 0x68, 0x65, 0x73, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61,
0x70, 0x73, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x65, 0x73, 0x10,
0x04, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x10, 0x05, 0x12,
0x0e, 0x0a, 0x0a, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x73, 0x10, 0x06, 0x12,
0x0a, 0x0a, 0x06, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x10, 0x07, 0x22, 0x91, 0x01, 0x0a, 0x09,
0x55, 0x6e, 0x61, 0x72, 0x79, 0x45, 0x78, 0x70, 0x72, 0x12, 0x34, 0x0a, 0x02, 0x6f, 0x70, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x45,
0x78, 0x70, 0x72, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12,
0x2d, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x22, 0x1f,
0x0a, 0x07, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x76,
0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x6f, 0x74, 0x10, 0x01, 0x22,
0xd8, 0x01, 0x0a, 0x0a, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x45, 0x78, 0x70, 0x72, 0x12, 0x36,
0x0a, 0x02, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x42,
0x69, 0x6e, 0x61, 0x72, 0x79, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79,
0x4f, 0x70, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x04, 0x6c,
0x65, 0x66, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x05, 0x72, 0x69, 0x67,
0x68, 0x74, 0x22, 0x36, 0x0a, 0x08, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x4f, 0x70, 0x12, 0x0b,
0x0a, 0x07, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4c,
0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x6e, 0x64, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4c,
0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4f, 0x72, 0x10, 0x02, 0x22, 0xd0, 0x01, 0x0a, 0x0d, 0x42,
0x69, 0x6e, 0x61, 0x72, 0x79, 0x41, 0x72, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x12, 0x3e, 0x0a, 0x0b,
0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x08,
0x61, 0x72, 0x69, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x41, 0x72, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07,
0x61, 0x72, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x12, 0x44, 0x0a, 0x0d, 0x72, 0x69, 0x67, 0x68, 0x74,
0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
0x0c, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x22, 0x9d, 0x01,
0x0a, 0x0f, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x41, 0x72, 0x69, 0x74, 0x68, 0x45, 0x78, 0x70,
0x72, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x17, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x2d,
0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61,
0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2e, 0x0a,
0x02, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x41, 0x72,
0x69, 0x74, 0x68, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x6f, 0x70, 0x22, 0xc5, 0x03,
0x0a, 0x1a, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x41, 0x72, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x45,
0x76, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3e, 0x0a, 0x0b,
0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39, 0x0a, 0x08,
0x61, 0x72, 0x69, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x41, 0x72, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07,
0x61, 0x72, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x12, 0x44, 0x0a, 0x0d, 0x72, 0x69, 0x67, 0x68, 0x74,
0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
0x0c, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x12, 0x29, 0x0a,
0x02, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x4f, 0x70,
0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x6f, 0x70, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65,
0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12,
0x43, 0x0a, 0x1e, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c,
0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64,
0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x65,
0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c,
0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x41, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x54,
0x72, 0x75, 0x65, 0x45, 0x78, 0x70, 0x72, 0x22, 0xdd, 0x09, 0x0a, 0x04, 0x45, 0x78, 0x70, 0x72,
0x12, 0x3a, 0x0a, 0x09, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x45, 0x78, 0x70, 0x72,
0x48, 0x00, 0x52, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3d, 0x0a, 0x0a,
0x75, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00,
0x52, 0x09, 0x75, 0x6e, 0x61, 0x72, 0x79, 0x45, 0x78, 0x70, 0x72, 0x12, 0x40, 0x0a, 0x0b, 0x62,
0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x45, 0x78, 0x70, 0x72, 0x48,
0x00, 0x52, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x45, 0x78, 0x70, 0x72, 0x12, 0x43, 0x0a,
0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x04, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x45,
0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x45, 0x78,
0x70, 0x72, 0x12, 0x4d, 0x0a, 0x10, 0x75, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67,
0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e,
0x2e, 0x55, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48,
0x00, 0x52, 0x0e, 0x75, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70,
0x72, 0x12, 0x50, 0x0a, 0x11, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x72, 0x61, 0x6e, 0x67,
0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e,
0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72,
0x48, 0x00, 0x52, 0x0f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45,
0x78, 0x70, 0x72, 0x12, 0x74, 0x0a, 0x1f, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x61, 0x72,
0x69, 0x74, 0x68, 0x5f, 0x6f, 0x70, 0x5f, 0x65, 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67,
0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e,
0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x41, 0x72, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x45, 0x76,
0x61, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x1a, 0x62,
0x69, 0x6e, 0x61, 0x72, 0x79, 0x41, 0x72, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x45, 0x76, 0x61, 0x6c,
0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x50, 0x0a, 0x11, 0x62, 0x69, 0x6e,
0x61, 0x72, 0x79, 0x5f, 0x61, 0x72, 0x69, 0x74, 0x68, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x08,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x41,
0x72, 0x69, 0x74, 0x68, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x62, 0x69, 0x6e, 0x61,
0x72, 0x79, 0x41, 0x72, 0x69, 0x74, 0x68, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3d, 0x0a, 0x0a, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1c, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
0x6c, 0x61, 0x6e, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52,
0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x6f,
0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00,
0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x12, 0x40, 0x0a, 0x0b,
0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x45, 0x78, 0x70, 0x72,
0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x45, 0x78, 0x70, 0x72, 0x12, 0x4d,
0x0a, 0x10, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x5f, 0x74, 0x72, 0x75, 0x65, 0x5f, 0x65, 0x78,
0x70, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x41, 0x6c, 0x77,
0x61, 0x79, 0x73, 0x54, 0x72, 0x75, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x61,
0x6c, 0x77, 0x61, 0x79, 0x73, 0x54, 0x72, 0x75, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x53, 0x0a,
0x12, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x5f, 0x65,
0x78, 0x70, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x4a, 0x53,
0x4f, 0x4e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00,
0x52, 0x10, 0x6a, 0x73, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x45, 0x78,
0x70, 0x72, 0x12, 0x3a, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18,
0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x78,
0x70, 0x72, 0x48, 0x00, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3a,
0x0a, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00,
0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x12, 0x62, 0x0a, 0x17, 0x67, 0x69,
0x73, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e,
0x47, 0x49, 0x53, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65,
0x72, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x15, 0x67, 0x69, 0x73, 0x66, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x1f,
0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x14, 0x20,
0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42,
0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x22, 0x86, 0x02, 0x0a, 0x0a, 0x56, 0x65, 0x63, 0x74,
0x6f, 0x72, 0x41, 0x4e, 0x4e, 0x53, 0x12, 0x3e, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72,
0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e,
0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x76, 0x65, 0x63, 0x74,
0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49,
0x64, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x0a,
0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x71, 0x75,
0x65, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x71, 0x75,
0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x63, 0x65,
0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0e, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x54, 0x61, 0x67,
0x22, 0x79, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64,
0x65, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x52, 0x0a,
0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73,
0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73,
0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03,
0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x9a, 0x02, 0x0a, 0x08,
0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x76, 0x65, 0x63, 0x74,
0x6f, 0x72, 0x5f, 0x61, 0x6e, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61,
0x6e, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x4e, 0x4e, 0x53, 0x48, 0x00, 0x52, 0x0a,
0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x6e, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x72,
0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69,
0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c,
0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12,
0x28, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x70, 0x75,
0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x79, 0x6e,
0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
0x09, 0x52, 0x0d, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73,
0x42, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x2a, 0xea, 0x01, 0x0a, 0x06, 0x4f, 0x70, 0x54,
0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00,
0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x54, 0x68, 0x61, 0x6e, 0x10,
0x01, 0x12, 0x10, 0x0a, 0x0c, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x45, 0x71, 0x75, 0x61,
0x6c, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x65, 0x73, 0x73, 0x54, 0x68, 0x61, 0x6e, 0x10,
0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x65, 0x73, 0x73, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x10, 0x04,
0x12, 0x09, 0x0a, 0x05, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x4e,
0x6f, 0x74, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x72, 0x65,
0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x6f,
0x73, 0x74, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x08, 0x12, 0x09, 0x0a, 0x05,
0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65,
0x10, 0x0a, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x6e, 0x10, 0x0b, 0x12, 0x09, 0x0a, 0x05, 0x4e, 0x6f,
0x74, 0x49, 0x6e, 0x10, 0x0c, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x65, 0x78, 0x74, 0x4d, 0x61, 0x74,
0x63, 0x68, 0x10, 0x0d, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61,
0x74, 0x63, 0x68, 0x10, 0x0e, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x61,
0x74, 0x63, 0x68, 0x10, 0x0f, 0x2a, 0x58, 0x0a, 0x0b, 0x41, 0x72, 0x69, 0x74, 0x68, 0x4f, 0x70,
0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10,
0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x64, 0x64, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x75,
0x62, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x75, 0x6c, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03,
0x44, 0x69, 0x76, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x6f, 0x64, 0x10, 0x05, 0x12, 0x0f,
0x0a, 0x0b, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x10, 0x06, 0x2a,
0x6d, 0x0a, 0x0a, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a,
0x0c, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x00, 0x12,
0x0f, 0x0a, 0x0b, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x01,
0x12, 0x11, 0x0a, 0x0d, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x56, 0x65, 0x63, 0x74, 0x6f,
0x72, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x56,
0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x70, 0x61, 0x72, 0x73,
0x65, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x04, 0x42, 0x31,
0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2d, 0x69, 0x6f, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2f, 0x70, 0x6b,
0x67, 0x2f, 0x76, 0x32, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6c, 0x61, 0x6e, 0x70,
0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_plan_proto_rawDescOnce sync.Once
file_plan_proto_rawDescData = file_plan_proto_rawDesc
)
func file_plan_proto_rawDescGZIP() []byte {
file_plan_proto_rawDescOnce.Do(func() {
file_plan_proto_rawDescData = protoimpl.X.CompressGZIP(file_plan_proto_rawDescData)
})
return file_plan_proto_rawDescData
}
var file_plan_proto_enumTypes = make([]protoimpl.EnumInfo, 8)
var file_plan_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
var file_plan_proto_goTypes = []interface{}{
(OpType)(0), // 0: milvus.proto.plan.OpType
(ArithOpType)(0), // 1: milvus.proto.plan.ArithOpType
(VectorType)(0), // 2: milvus.proto.plan.VectorType
(JSONContainsExpr_JSONOp)(0), // 3: milvus.proto.plan.JSONContainsExpr.JSONOp
(NullExpr_NullOp)(0), // 4: milvus.proto.plan.NullExpr.NullOp
(GISFunctionFilterExpr_GISOp)(0), // 5: milvus.proto.plan.GISFunctionFilterExpr.GISOp
(UnaryExpr_UnaryOp)(0), // 6: milvus.proto.plan.UnaryExpr.UnaryOp
(BinaryExpr_BinaryOp)(0), // 7: milvus.proto.plan.BinaryExpr.BinaryOp
(*GenericValue)(nil), // 8: milvus.proto.plan.GenericValue
(*Array)(nil), // 9: milvus.proto.plan.Array
(*SearchIteratorV2Info)(nil), // 10: milvus.proto.plan.SearchIteratorV2Info
(*QueryInfo)(nil), // 11: milvus.proto.plan.QueryInfo
(*ColumnInfo)(nil), // 12: milvus.proto.plan.ColumnInfo
(*ColumnExpr)(nil), // 13: milvus.proto.plan.ColumnExpr
(*ExistsExpr)(nil), // 14: milvus.proto.plan.ExistsExpr
(*ValueExpr)(nil), // 15: milvus.proto.plan.ValueExpr
(*UnaryRangeExpr)(nil), // 16: milvus.proto.plan.UnaryRangeExpr
(*BinaryRangeExpr)(nil), // 17: milvus.proto.plan.BinaryRangeExpr
(*CallExpr)(nil), // 18: milvus.proto.plan.CallExpr
(*CompareExpr)(nil), // 19: milvus.proto.plan.CompareExpr
(*TermExpr)(nil), // 20: milvus.proto.plan.TermExpr
(*JSONContainsExpr)(nil), // 21: milvus.proto.plan.JSONContainsExpr
(*NullExpr)(nil), // 22: milvus.proto.plan.NullExpr
(*GISFunctionFilterExpr)(nil), // 23: milvus.proto.plan.GISFunctionFilterExpr
(*UnaryExpr)(nil), // 24: milvus.proto.plan.UnaryExpr
(*BinaryExpr)(nil), // 25: milvus.proto.plan.BinaryExpr
(*BinaryArithOp)(nil), // 26: milvus.proto.plan.BinaryArithOp
(*BinaryArithExpr)(nil), // 27: milvus.proto.plan.BinaryArithExpr
(*BinaryArithOpEvalRangeExpr)(nil), // 28: milvus.proto.plan.BinaryArithOpEvalRangeExpr
(*AlwaysTrueExpr)(nil), // 29: milvus.proto.plan.AlwaysTrueExpr
(*Expr)(nil), // 30: milvus.proto.plan.Expr
(*VectorANNS)(nil), // 31: milvus.proto.plan.VectorANNS
(*QueryPlanNode)(nil), // 32: milvus.proto.plan.QueryPlanNode
(*PlanNode)(nil), // 33: milvus.proto.plan.PlanNode
(schemapb.DataType)(0), // 34: milvus.proto.schema.DataType
}
var file_plan_proto_depIdxs = []int32{
9, // 0: milvus.proto.plan.GenericValue.array_val:type_name -> milvus.proto.plan.Array
8, // 1: milvus.proto.plan.Array.array:type_name -> milvus.proto.plan.GenericValue
34, // 2: milvus.proto.plan.Array.element_type:type_name -> milvus.proto.schema.DataType
10, // 3: milvus.proto.plan.QueryInfo.search_iterator_v2_info:type_name -> milvus.proto.plan.SearchIteratorV2Info
34, // 4: milvus.proto.plan.ColumnInfo.data_type:type_name -> milvus.proto.schema.DataType
34, // 5: milvus.proto.plan.ColumnInfo.element_type:type_name -> milvus.proto.schema.DataType
12, // 6: milvus.proto.plan.ColumnExpr.info:type_name -> milvus.proto.plan.ColumnInfo
12, // 7: milvus.proto.plan.ExistsExpr.info:type_name -> milvus.proto.plan.ColumnInfo
8, // 8: milvus.proto.plan.ValueExpr.value:type_name -> milvus.proto.plan.GenericValue
12, // 9: milvus.proto.plan.UnaryRangeExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
0, // 10: milvus.proto.plan.UnaryRangeExpr.op:type_name -> milvus.proto.plan.OpType
8, // 11: milvus.proto.plan.UnaryRangeExpr.value:type_name -> milvus.proto.plan.GenericValue
8, // 12: milvus.proto.plan.UnaryRangeExpr.extra_values:type_name -> milvus.proto.plan.GenericValue
12, // 13: milvus.proto.plan.BinaryRangeExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
8, // 14: milvus.proto.plan.BinaryRangeExpr.lower_value:type_name -> milvus.proto.plan.GenericValue
8, // 15: milvus.proto.plan.BinaryRangeExpr.upper_value:type_name -> milvus.proto.plan.GenericValue
30, // 16: milvus.proto.plan.CallExpr.function_parameters:type_name -> milvus.proto.plan.Expr
12, // 17: milvus.proto.plan.CompareExpr.left_column_info:type_name -> milvus.proto.plan.ColumnInfo
12, // 18: milvus.proto.plan.CompareExpr.right_column_info:type_name -> milvus.proto.plan.ColumnInfo
0, // 19: milvus.proto.plan.CompareExpr.op:type_name -> milvus.proto.plan.OpType
12, // 20: milvus.proto.plan.TermExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
8, // 21: milvus.proto.plan.TermExpr.values:type_name -> milvus.proto.plan.GenericValue
12, // 22: milvus.proto.plan.JSONContainsExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
8, // 23: milvus.proto.plan.JSONContainsExpr.elements:type_name -> milvus.proto.plan.GenericValue
3, // 24: milvus.proto.plan.JSONContainsExpr.op:type_name -> milvus.proto.plan.JSONContainsExpr.JSONOp
12, // 25: milvus.proto.plan.NullExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
4, // 26: milvus.proto.plan.NullExpr.op:type_name -> milvus.proto.plan.NullExpr.NullOp
12, // 27: milvus.proto.plan.GISFunctionFilterExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
5, // 28: milvus.proto.plan.GISFunctionFilterExpr.op:type_name -> milvus.proto.plan.GISFunctionFilterExpr.GISOp
6, // 29: milvus.proto.plan.UnaryExpr.op:type_name -> milvus.proto.plan.UnaryExpr.UnaryOp
30, // 30: milvus.proto.plan.UnaryExpr.child:type_name -> milvus.proto.plan.Expr
7, // 31: milvus.proto.plan.BinaryExpr.op:type_name -> milvus.proto.plan.BinaryExpr.BinaryOp
30, // 32: milvus.proto.plan.BinaryExpr.left:type_name -> milvus.proto.plan.Expr
30, // 33: milvus.proto.plan.BinaryExpr.right:type_name -> milvus.proto.plan.Expr
12, // 34: milvus.proto.plan.BinaryArithOp.column_info:type_name -> milvus.proto.plan.ColumnInfo
1, // 35: milvus.proto.plan.BinaryArithOp.arith_op:type_name -> milvus.proto.plan.ArithOpType
8, // 36: milvus.proto.plan.BinaryArithOp.right_operand:type_name -> milvus.proto.plan.GenericValue
30, // 37: milvus.proto.plan.BinaryArithExpr.left:type_name -> milvus.proto.plan.Expr
30, // 38: milvus.proto.plan.BinaryArithExpr.right:type_name -> milvus.proto.plan.Expr
1, // 39: milvus.proto.plan.BinaryArithExpr.op:type_name -> milvus.proto.plan.ArithOpType
12, // 40: milvus.proto.plan.BinaryArithOpEvalRangeExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
1, // 41: milvus.proto.plan.BinaryArithOpEvalRangeExpr.arith_op:type_name -> milvus.proto.plan.ArithOpType
8, // 42: milvus.proto.plan.BinaryArithOpEvalRangeExpr.right_operand:type_name -> milvus.proto.plan.GenericValue
0, // 43: milvus.proto.plan.BinaryArithOpEvalRangeExpr.op:type_name -> milvus.proto.plan.OpType
8, // 44: milvus.proto.plan.BinaryArithOpEvalRangeExpr.value:type_name -> milvus.proto.plan.GenericValue
20, // 45: milvus.proto.plan.Expr.term_expr:type_name -> milvus.proto.plan.TermExpr
24, // 46: milvus.proto.plan.Expr.unary_expr:type_name -> milvus.proto.plan.UnaryExpr
25, // 47: milvus.proto.plan.Expr.binary_expr:type_name -> milvus.proto.plan.BinaryExpr
19, // 48: milvus.proto.plan.Expr.compare_expr:type_name -> milvus.proto.plan.CompareExpr
16, // 49: milvus.proto.plan.Expr.unary_range_expr:type_name -> milvus.proto.plan.UnaryRangeExpr
17, // 50: milvus.proto.plan.Expr.binary_range_expr:type_name -> milvus.proto.plan.BinaryRangeExpr
28, // 51: milvus.proto.plan.Expr.binary_arith_op_eval_range_expr:type_name -> milvus.proto.plan.BinaryArithOpEvalRangeExpr
27, // 52: milvus.proto.plan.Expr.binary_arith_expr:type_name -> milvus.proto.plan.BinaryArithExpr
15, // 53: milvus.proto.plan.Expr.value_expr:type_name -> milvus.proto.plan.ValueExpr
13, // 54: milvus.proto.plan.Expr.column_expr:type_name -> milvus.proto.plan.ColumnExpr
14, // 55: milvus.proto.plan.Expr.exists_expr:type_name -> milvus.proto.plan.ExistsExpr
29, // 56: milvus.proto.plan.Expr.always_true_expr:type_name -> milvus.proto.plan.AlwaysTrueExpr
21, // 57: milvus.proto.plan.Expr.json_contains_expr:type_name -> milvus.proto.plan.JSONContainsExpr
18, // 58: milvus.proto.plan.Expr.call_expr:type_name -> milvus.proto.plan.CallExpr
22, // 59: milvus.proto.plan.Expr.null_expr:type_name -> milvus.proto.plan.NullExpr
23, // 60: milvus.proto.plan.Expr.gisfunction_filter_expr:type_name -> milvus.proto.plan.GISFunctionFilterExpr
2, // 61: milvus.proto.plan.VectorANNS.vector_type:type_name -> milvus.proto.plan.VectorType
30, // 62: milvus.proto.plan.VectorANNS.predicates:type_name -> milvus.proto.plan.Expr
11, // 63: milvus.proto.plan.VectorANNS.query_info:type_name -> milvus.proto.plan.QueryInfo
30, // 64: milvus.proto.plan.QueryPlanNode.predicates:type_name -> milvus.proto.plan.Expr
31, // 65: milvus.proto.plan.PlanNode.vector_anns:type_name -> milvus.proto.plan.VectorANNS
30, // 66: milvus.proto.plan.PlanNode.predicates:type_name -> milvus.proto.plan.Expr
32, // 67: milvus.proto.plan.PlanNode.query:type_name -> milvus.proto.plan.QueryPlanNode
68, // [68:68] is the sub-list for method output_type
68, // [68:68] is the sub-list for method input_type
68, // [68:68] is the sub-list for extension type_name
68, // [68:68] is the sub-list for extension extendee
0, // [0:68] is the sub-list for field type_name
}
func init() { file_plan_proto_init() }
func file_plan_proto_init() {
if File_plan_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_plan_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GenericValue); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Array); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SearchIteratorV2Info); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ColumnInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ColumnExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ExistsExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ValueExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UnaryRangeExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BinaryRangeExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CallExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CompareExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*TermExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*JSONContainsExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NullExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GISFunctionFilterExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UnaryExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BinaryExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BinaryArithOp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BinaryArithExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BinaryArithOpEvalRangeExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AlwaysTrueExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Expr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*VectorANNS); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*QueryPlanNode); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PlanNode); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
file_plan_proto_msgTypes[0].OneofWrappers = []interface{}{
(*GenericValue_BoolVal)(nil),
(*GenericValue_Int64Val)(nil),
(*GenericValue_FloatVal)(nil),
(*GenericValue_StringVal)(nil),
(*GenericValue_ArrayVal)(nil),
}
file_plan_proto_msgTypes[2].OneofWrappers = []interface{}{}
file_plan_proto_msgTypes[3].OneofWrappers = []interface{}{}
file_plan_proto_msgTypes[22].OneofWrappers = []interface{}{
(*Expr_TermExpr)(nil),
(*Expr_UnaryExpr)(nil),
(*Expr_BinaryExpr)(nil),
(*Expr_CompareExpr)(nil),
(*Expr_UnaryRangeExpr)(nil),
(*Expr_BinaryRangeExpr)(nil),
(*Expr_BinaryArithOpEvalRangeExpr)(nil),
(*Expr_BinaryArithExpr)(nil),
(*Expr_ValueExpr)(nil),
(*Expr_ColumnExpr)(nil),
(*Expr_ExistsExpr)(nil),
(*Expr_AlwaysTrueExpr)(nil),
(*Expr_JsonContainsExpr)(nil),
(*Expr_CallExpr)(nil),
(*Expr_NullExpr)(nil),
(*Expr_GisfunctionFilterExpr)(nil),
}
file_plan_proto_msgTypes[25].OneofWrappers = []interface{}{
(*PlanNode_VectorAnns)(nil),
(*PlanNode_Predicates)(nil),
(*PlanNode_Query)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_plan_proto_rawDesc,
NumEnums: 8,
NumMessages: 26,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_plan_proto_goTypes,
DependencyIndexes: file_plan_proto_depIdxs,
EnumInfos: file_plan_proto_enumTypes,
MessageInfos: file_plan_proto_msgTypes,
}.Build()
File_plan_proto = out.File
file_plan_proto_rawDesc = nil
file_plan_proto_goTypes = nil
file_plan_proto_depIdxs = nil
}