milvus/pkg/proto/planpb/plan.pb.go
Spade A f6f716bcfd
feat: impl StructArray -- support embedding searches embeddings in embedding list with element level filter expression (#45830)
issue: https://github.com/milvus-io/milvus/issues/42148

For a vector field inside a STRUCT, since a STRUCT can only appear as
the element type of an ARRAY field, the vector field in STRUCT is
effectively an array of vectors, i.e. an embedding list.
Milvus already supports searching embedding lists with metrics whose
names start with the prefix MAX_SIM_.

This PR allows Milvus to search embeddings inside an embedding list
using the same metrics as normal embedding fields. Each embedding in the
list is treated as an independent vector and participates in ANN search.

Further, since STRUCT may contain scalar fields that are highly related
to the embedding field, this PR introduces an element-level filter
expression to refine search results.
The grammar of the element-level filter is:

element_filter(structFieldName, $[subFieldName] == 3)

where $[subFieldName] refers to the value of subFieldName in each
element of the STRUCT array structFieldName.

It can be combined with existing filter expressions, for example:

"varcharField == 'aaa' && element_filter(struct_field, $[struct_int] ==
3)"

A full example:
```
struct_schema = milvus_client.create_struct_field_schema()
struct_schema.add_field("struct_str", DataType.VARCHAR, max_length=65535)
struct_schema.add_field("struct_int", DataType.INT32)
struct_schema.add_field("struct_float_vec", DataType.FLOAT_VECTOR, dim=EMBEDDING_DIM)

schema.add_field(
    "struct_field",
    datatype=DataType.ARRAY,
    element_type=DataType.STRUCT,
    struct_schema=struct_schema,
    max_capacity=1000,
)
...

filter = "varcharField == 'aaa' && element_filter(struct_field, $[struct_int] == 3 && $[struct_str] == 'abc')"
res = milvus_client.search(
    COLLECTION_NAME,
    data=query_embeddings,
    limit=10,
    anns_field="struct_field[struct_float_vec]",
    filter=filter,
    output_fields=["struct_field[struct_int]", "varcharField"],
)

```
TODO:
1. When an `element_filter` expression is used, a regular filter
expression must also be present. Remove this restriction.
2. Implement `element_filter` expressions in the `query`.

---------

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
2025-12-15 12:01:15 +08:00

4584 lines
167 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 (
commonpb "github.com/milvus-io/milvus-proto/go-api/v2/commonpb"
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
VectorType_Int8Vector VectorType = 5
VectorType_EmbListFloatVector VectorType = 6
VectorType_EmbListFloat16Vector VectorType = 7
VectorType_EmbListBFloat16Vector VectorType = 8
VectorType_EmbListInt8Vector VectorType = 9
VectorType_EmbListBinaryVector VectorType = 10
)
// Enum value maps for VectorType.
var (
VectorType_name = map[int32]string{
0: "BinaryVector",
1: "FloatVector",
2: "Float16Vector",
3: "BFloat16Vector",
4: "SparseFloatVector",
5: "Int8Vector",
6: "EmbListFloatVector",
7: "EmbListFloat16Vector",
8: "EmbListBFloat16Vector",
9: "EmbListInt8Vector",
10: "EmbListBinaryVector",
}
VectorType_value = map[string]int32{
"BinaryVector": 0,
"FloatVector": 1,
"Float16Vector": 2,
"BFloat16Vector": 3,
"SparseFloatVector": 4,
"Int8Vector": 5,
"EmbListFloatVector": 6,
"EmbListFloat16Vector": 7,
"EmbListBFloat16Vector": 8,
"EmbListInt8Vector": 9,
"EmbListBinaryVector": 10,
}
)
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}
}
type FunctionType int32
const (
FunctionType_FunctionTypeWeight FunctionType = 0
FunctionType_FunctionTypeRandom FunctionType = 1
)
// Enum value maps for FunctionType.
var (
FunctionType_name = map[int32]string{
0: "FunctionTypeWeight",
1: "FunctionTypeRandom",
}
FunctionType_value = map[string]int32{
"FunctionTypeWeight": 0,
"FunctionTypeRandom": 1,
}
)
func (x FunctionType) Enum() *FunctionType {
p := new(FunctionType)
*p = x
return p
}
func (x FunctionType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (FunctionType) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[3].Descriptor()
}
func (FunctionType) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[3]
}
func (x FunctionType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use FunctionType.Descriptor instead.
func (FunctionType) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{3}
}
// FunctionMode decide how to calculate boost score
// for multiple boost function scores
type FunctionMode int32
const (
FunctionMode_FunctionModeMultiply FunctionMode = 0
FunctionMode_FunctionModeSum FunctionMode = 1
)
// Enum value maps for FunctionMode.
var (
FunctionMode_name = map[int32]string{
0: "FunctionModeMultiply",
1: "FunctionModeSum",
}
FunctionMode_value = map[string]int32{
"FunctionModeMultiply": 0,
"FunctionModeSum": 1,
}
)
func (x FunctionMode) Enum() *FunctionMode {
p := new(FunctionMode)
*p = x
return p
}
func (x FunctionMode) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (FunctionMode) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[4].Descriptor()
}
func (FunctionMode) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[4]
}
func (x FunctionMode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use FunctionMode.Descriptor instead.
func (FunctionMode) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{4}
}
// BoostMode decide how to calculate final score
// for origin score and boost score.
type BoostMode int32
const (
BoostMode_BoostModeMultiply BoostMode = 0
BoostMode_BoostModeSum BoostMode = 1
)
// Enum value maps for BoostMode.
var (
BoostMode_name = map[int32]string{
0: "BoostModeMultiply",
1: "BoostModeSum",
}
BoostMode_value = map[string]int32{
"BoostModeMultiply": 0,
"BoostModeSum": 1,
}
)
func (x BoostMode) Enum() *BoostMode {
p := new(BoostMode)
*p = x
return p
}
func (x BoostMode) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (BoostMode) Descriptor() protoreflect.EnumDescriptor {
return file_plan_proto_enumTypes[5].Descriptor()
}
func (BoostMode) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[5]
}
func (x BoostMode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use BoostMode.Descriptor instead.
func (BoostMode) EnumDescriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{5}
}
// 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[6].Descriptor()
}
func (JSONContainsExpr_JSONOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[6]
}
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[7].Descriptor()
}
func (NullExpr_NullOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[7]
}
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
GISFunctionFilterExpr_DWithin GISFunctionFilterExpr_GISOp = 8
// STIsValid is a special operator that conflicts with proto-generated default methods.
// Using STIsValid instead of IsValid to avoid naming conflicts with IsValid() method.
GISFunctionFilterExpr_STIsValid GISFunctionFilterExpr_GISOp = 9
)
// 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",
8: "DWithin",
9: "STIsValid",
}
GISFunctionFilterExpr_GISOp_value = map[string]int32{
"Invalid": 0,
"Equals": 1,
"Touches": 2,
"Overlaps": 3,
"Crosses": 4,
"Contains": 5,
"Intersects": 6,
"Within": 7,
"DWithin": 8,
"STIsValid": 9,
}
)
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[8].Descriptor()
}
func (GISFunctionFilterExpr_GISOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[8]
}
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[9].Descriptor()
}
func (UnaryExpr_UnaryOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[9]
}
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[10].Descriptor()
}
func (BinaryExpr_BinaryOp) Type() protoreflect.EnumType {
return &file_plan_proto_enumTypes[10]
}
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"`
JsonPath string `protobuf:"bytes,14,opt,name=json_path,json=jsonPath,proto3" json:"json_path,omitempty"`
JsonType schemapb.DataType `protobuf:"varint,15,opt,name=json_type,json=jsonType,proto3,enum=milvus.proto.schema.DataType" json:"json_type,omitempty"`
StrictCast bool `protobuf:"varint,16,opt,name=strict_cast,json=strictCast,proto3" json:"strict_cast,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
}
func (x *QueryInfo) GetJsonPath() string {
if x != nil {
return x.JsonPath
}
return ""
}
func (x *QueryInfo) GetJsonType() schemapb.DataType {
if x != nil {
return x.JsonType
}
return schemapb.DataType(0)
}
func (x *QueryInfo) GetStrictCast() bool {
if x != nil {
return x.StrictCast
}
return false
}
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"`
IsElementLevel bool `protobuf:"varint,10,opt,name=is_element_level,json=isElementLevel,proto3" json:"is_element_level,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
}
func (x *ColumnInfo) GetIsElementLevel() bool {
if x != nil {
return x.IsElementLevel
}
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"`
Distance float64 `protobuf:"fixed64,4,opt,name=distance,proto3" json:"distance,omitempty"` // Distance parameter for DWithin
}
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
}
func (x *GISFunctionFilterExpr) GetDistance() float64 {
if x != nil {
return x.Distance
}
return 0
}
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 RandomSampleExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
SampleFactor float32 `protobuf:"fixed32,1,opt,name=sample_factor,json=sampleFactor,proto3" json:"sample_factor,omitempty"`
Predicate *Expr `protobuf:"bytes,2,opt,name=predicate,proto3" json:"predicate,omitempty"`
}
func (x *RandomSampleExpr) Reset() {
*x = RandomSampleExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *RandomSampleExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RandomSampleExpr) ProtoMessage() {}
func (x *RandomSampleExpr) 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 RandomSampleExpr.ProtoReflect.Descriptor instead.
func (*RandomSampleExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{21}
}
func (x *RandomSampleExpr) GetSampleFactor() float32 {
if x != nil {
return x.SampleFactor
}
return 0
}
func (x *RandomSampleExpr) GetPredicate() *Expr {
if x != nil {
return x.Predicate
}
return nil
}
type ElementFilterExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ElementExpr *Expr `protobuf:"bytes,1,opt,name=element_expr,json=elementExpr,proto3" json:"element_expr,omitempty"`
StructName string `protobuf:"bytes,2,opt,name=struct_name,json=structName,proto3" json:"struct_name,omitempty"`
Predicate *Expr `protobuf:"bytes,3,opt,name=predicate,proto3" json:"predicate,omitempty"`
}
func (x *ElementFilterExpr) Reset() {
*x = ElementFilterExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ElementFilterExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ElementFilterExpr) ProtoMessage() {}
func (x *ElementFilterExpr) 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 ElementFilterExpr.ProtoReflect.Descriptor instead.
func (*ElementFilterExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{22}
}
func (x *ElementFilterExpr) GetElementExpr() *Expr {
if x != nil {
return x.ElementExpr
}
return nil
}
func (x *ElementFilterExpr) GetStructName() string {
if x != nil {
return x.StructName
}
return ""
}
func (x *ElementFilterExpr) GetPredicate() *Expr {
if x != nil {
return x.Predicate
}
return nil
}
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[23]
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[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 AlwaysTrueExpr.ProtoReflect.Descriptor instead.
func (*AlwaysTrueExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{23}
}
type Interval struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Years int64 `protobuf:"varint,1,opt,name=years,proto3" json:"years,omitempty"`
Months int64 `protobuf:"varint,2,opt,name=months,proto3" json:"months,omitempty"`
Days int64 `protobuf:"varint,3,opt,name=days,proto3" json:"days,omitempty"`
Hours int64 `protobuf:"varint,4,opt,name=hours,proto3" json:"hours,omitempty"`
Minutes int64 `protobuf:"varint,5,opt,name=minutes,proto3" json:"minutes,omitempty"`
Seconds int64 `protobuf:"varint,6,opt,name=seconds,proto3" json:"seconds,omitempty"`
}
func (x *Interval) Reset() {
*x = Interval{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Interval) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Interval) ProtoMessage() {}
func (x *Interval) 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 Interval.ProtoReflect.Descriptor instead.
func (*Interval) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{24}
}
func (x *Interval) GetYears() int64 {
if x != nil {
return x.Years
}
return 0
}
func (x *Interval) GetMonths() int64 {
if x != nil {
return x.Months
}
return 0
}
func (x *Interval) GetDays() int64 {
if x != nil {
return x.Days
}
return 0
}
func (x *Interval) GetHours() int64 {
if x != nil {
return x.Hours
}
return 0
}
func (x *Interval) GetMinutes() int64 {
if x != nil {
return x.Minutes
}
return 0
}
func (x *Interval) GetSeconds() int64 {
if x != nil {
return x.Seconds
}
return 0
}
// New expression type for the operation: (timestamp_col + interval) OP iso_string
type TimestamptzArithCompareExpr struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
TimestamptzColumn *ColumnInfo `protobuf:"bytes,1,opt,name=timestamptz_column,json=timestamptzColumn,proto3" json:"timestamptz_column,omitempty"`
ArithOp ArithOpType `protobuf:"varint,2,opt,name=arith_op,json=arithOp,proto3,enum=milvus.proto.plan.ArithOpType" json:"arith_op,omitempty"` // ADD or SUB
Interval *Interval `protobuf:"bytes,3,opt,name=interval,proto3" json:"interval,omitempty"`
CompareOp OpType `protobuf:"varint,4,opt,name=compare_op,json=compareOp,proto3,enum=milvus.proto.plan.OpType" json:"compare_op,omitempty"`
CompareValue *GenericValue `protobuf:"bytes,5,opt,name=compare_value,json=compareValue,proto3" json:"compare_value,omitempty"`
}
func (x *TimestamptzArithCompareExpr) Reset() {
*x = TimestamptzArithCompareExpr{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *TimestamptzArithCompareExpr) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TimestamptzArithCompareExpr) ProtoMessage() {}
func (x *TimestamptzArithCompareExpr) 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 TimestamptzArithCompareExpr.ProtoReflect.Descriptor instead.
func (*TimestamptzArithCompareExpr) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{25}
}
func (x *TimestamptzArithCompareExpr) GetTimestamptzColumn() *ColumnInfo {
if x != nil {
return x.TimestamptzColumn
}
return nil
}
func (x *TimestamptzArithCompareExpr) GetArithOp() ArithOpType {
if x != nil {
return x.ArithOp
}
return ArithOpType_Unknown
}
func (x *TimestamptzArithCompareExpr) GetInterval() *Interval {
if x != nil {
return x.Interval
}
return nil
}
func (x *TimestamptzArithCompareExpr) GetCompareOp() OpType {
if x != nil {
return x.CompareOp
}
return OpType_Invalid
}
func (x *TimestamptzArithCompareExpr) GetCompareValue() *GenericValue {
if x != nil {
return x.CompareValue
}
return nil
}
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_RandomSampleExpr
// *Expr_GisfunctionFilterExpr
// *Expr_TimestamptzArithCompareExpr
// *Expr_ElementFilterExpr
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[26]
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[26]
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{26}
}
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) GetRandomSampleExpr() *RandomSampleExpr {
if x, ok := x.GetExpr().(*Expr_RandomSampleExpr); ok {
return x.RandomSampleExpr
}
return nil
}
func (x *Expr) GetGisfunctionFilterExpr() *GISFunctionFilterExpr {
if x, ok := x.GetExpr().(*Expr_GisfunctionFilterExpr); ok {
return x.GisfunctionFilterExpr
}
return nil
}
func (x *Expr) GetTimestamptzArithCompareExpr() *TimestamptzArithCompareExpr {
if x, ok := x.GetExpr().(*Expr_TimestamptzArithCompareExpr); ok {
return x.TimestamptzArithCompareExpr
}
return nil
}
func (x *Expr) GetElementFilterExpr() *ElementFilterExpr {
if x, ok := x.GetExpr().(*Expr_ElementFilterExpr); ok {
return x.ElementFilterExpr
}
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_RandomSampleExpr struct {
RandomSampleExpr *RandomSampleExpr `protobuf:"bytes,16,opt,name=random_sample_expr,json=randomSampleExpr,proto3,oneof"`
}
type Expr_GisfunctionFilterExpr struct {
GisfunctionFilterExpr *GISFunctionFilterExpr `protobuf:"bytes,17,opt,name=gisfunction_filter_expr,json=gisfunctionFilterExpr,proto3,oneof"`
}
type Expr_TimestamptzArithCompareExpr struct {
TimestamptzArithCompareExpr *TimestamptzArithCompareExpr `protobuf:"bytes,18,opt,name=timestamptz_arith_compare_expr,json=timestamptzArithCompareExpr,proto3,oneof"`
}
type Expr_ElementFilterExpr struct {
ElementFilterExpr *ElementFilterExpr `protobuf:"bytes,19,opt,name=element_filter_expr,json=elementFilterExpr,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_RandomSampleExpr) isExpr_Expr() {}
func (*Expr_GisfunctionFilterExpr) isExpr_Expr() {}
func (*Expr_TimestamptzArithCompareExpr) isExpr_Expr() {}
func (*Expr_ElementFilterExpr) 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[27]
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[27]
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{27}
}
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[28]
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[28]
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{28}
}
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 ScoreFunction struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Filter *Expr `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
Weight float32 `protobuf:"fixed32,2,opt,name=weight,proto3" json:"weight,omitempty"`
Type FunctionType `protobuf:"varint,3,opt,name=type,proto3,enum=milvus.proto.plan.FunctionType" json:"type,omitempty"`
Params []*commonpb.KeyValuePair `protobuf:"bytes,4,rep,name=params,proto3" json:"params,omitempty"`
}
func (x *ScoreFunction) Reset() {
*x = ScoreFunction{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ScoreFunction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ScoreFunction) ProtoMessage() {}
func (x *ScoreFunction) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[29]
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 ScoreFunction.ProtoReflect.Descriptor instead.
func (*ScoreFunction) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{29}
}
func (x *ScoreFunction) GetFilter() *Expr {
if x != nil {
return x.Filter
}
return nil
}
func (x *ScoreFunction) GetWeight() float32 {
if x != nil {
return x.Weight
}
return 0
}
func (x *ScoreFunction) GetType() FunctionType {
if x != nil {
return x.Type
}
return FunctionType_FunctionTypeWeight
}
func (x *ScoreFunction) GetParams() []*commonpb.KeyValuePair {
if x != nil {
return x.Params
}
return nil
}
type ScoreOption struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
BoostMode BoostMode `protobuf:"varint,1,opt,name=boost_mode,json=boostMode,proto3,enum=milvus.proto.plan.BoostMode" json:"boost_mode,omitempty"`
FunctionMode FunctionMode `protobuf:"varint,2,opt,name=function_mode,json=functionMode,proto3,enum=milvus.proto.plan.FunctionMode" json:"function_mode,omitempty"`
}
func (x *ScoreOption) Reset() {
*x = ScoreOption{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ScoreOption) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ScoreOption) ProtoMessage() {}
func (x *ScoreOption) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[30]
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 ScoreOption.ProtoReflect.Descriptor instead.
func (*ScoreOption) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{30}
}
func (x *ScoreOption) GetBoostMode() BoostMode {
if x != nil {
return x.BoostMode
}
return BoostMode_BoostModeMultiply
}
func (x *ScoreOption) GetFunctionMode() FunctionMode {
if x != nil {
return x.FunctionMode
}
return FunctionMode_FunctionModeMultiply
}
type PlanOption struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ExprUseJsonStats bool `protobuf:"varint,1,opt,name=expr_use_json_stats,json=exprUseJsonStats,proto3" json:"expr_use_json_stats,omitempty"`
}
func (x *PlanOption) Reset() {
*x = PlanOption{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PlanOption) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PlanOption) ProtoMessage() {}
func (x *PlanOption) ProtoReflect() protoreflect.Message {
mi := &file_plan_proto_msgTypes[31]
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 PlanOption.ProtoReflect.Descriptor instead.
func (*PlanOption) Descriptor() ([]byte, []int) {
return file_plan_proto_rawDescGZIP(), []int{31}
}
func (x *PlanOption) GetExprUseJsonStats() bool {
if x != nil {
return x.ExprUseJsonStats
}
return false
}
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"`
Scorers []*ScoreFunction `protobuf:"bytes,6,rep,name=scorers,proto3" json:"scorers,omitempty"`
PlanOptions *PlanOption `protobuf:"bytes,7,opt,name=plan_options,json=planOptions,proto3" json:"plan_options,omitempty"`
ScoreOption *ScoreOption `protobuf:"bytes,8,opt,name=score_option,json=scoreOption,proto3" json:"score_option,omitempty"`
Namespace *string `protobuf:"bytes,9,opt,name=namespace,proto3,oneof" json:"namespace,omitempty"`
}
func (x *PlanNode) Reset() {
*x = PlanNode{}
if protoimpl.UnsafeEnabled {
mi := &file_plan_proto_msgTypes[32]
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[32]
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{32}
}
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
}
func (x *PlanNode) GetScorers() []*ScoreFunction {
if x != nil {
return x.Scorers
}
return nil
}
func (x *PlanNode) GetPlanOptions() *PlanOption {
if x != nil {
return x.PlanOptions
}
return nil
}
func (x *PlanNode) GetScoreOption() *ScoreOption {
if x != nil {
return x.ScoreOption
}
return nil
}
func (x *PlanNode) GetNamespace() string {
if x != nil && x.Namespace != nil {
return *x.Namespace
}
return ""
}
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, 0x1a, 0x0c, 0x63,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 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, 0x94, 0x05, 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, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f,
0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73,
0x6f, 0x6e, 0x50, 0x61, 0x74, 0x68, 0x12, 0x3a, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x74,
0x79, 0x70, 0x65, 0x18, 0x0f, 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, 0x6a, 0x73, 0x6f, 0x6e, 0x54, 0x79,
0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x63, 0x61, 0x73,
0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x43,
0x61, 0x73, 0x74, 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,
0xa5, 0x03, 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, 0x12, 0x28, 0x0a,
0x10, 0x69, 0x73, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x65, 0x76, 0x65,
0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x45, 0x6c, 0x65, 0x6d, 0x65,
0x6e, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 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, 0xe3, 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, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x64, 0x69, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x8e, 0x01, 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, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x57,
0x69, 0x74, 0x68, 0x69, 0x6e, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x54, 0x49, 0x73, 0x56,
0x61, 0x6c, 0x69, 0x64, 0x10, 0x09, 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, 0x6e, 0x0a, 0x10, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65,
0x45, 0x78, 0x70, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x66,
0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x73, 0x61, 0x6d,
0x70, 0x6c, 0x65, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x09, 0x70, 0x72, 0x65,
0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 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, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65,
0x22, 0xa7, 0x01, 0x0a, 0x11, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74,
0x65, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x3a, 0x0a, 0x0c, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e,
0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 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, 0x0b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x78,
0x70, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4e,
0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65,
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,
0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x41, 0x6c,
0x77, 0x61, 0x79, 0x73, 0x54, 0x72, 0x75, 0x65, 0x45, 0x78, 0x70, 0x72, 0x22, 0x96, 0x01, 0x0a,
0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x79, 0x65, 0x61,
0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x79, 0x65, 0x61, 0x72, 0x73, 0x12,
0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18,
0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x68,
0x6f, 0x75, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x68, 0x6f, 0x75, 0x72,
0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01,
0x28, 0x03, 0x52, 0x07, 0x6d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73,
0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x73, 0x65,
0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xdf, 0x02, 0x0a, 0x1b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
0x61, 0x6d, 0x70, 0x74, 0x7a, 0x41, 0x72, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72,
0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x4c, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
0x6d, 0x70, 0x74, 0x7a, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 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, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x74, 0x7a, 0x43, 0x6f, 0x6c,
0x75, 0x6d, 0x6e, 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, 0x37,
0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 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, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x69,
0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61,
0x72, 0x65, 0x5f, 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, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x4f,
0x70, 0x12, 0x44, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 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, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x61,
0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x81, 0x0c, 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, 0x53, 0x0a, 0x12, 0x72, 0x61,
0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72,
0x18, 0x10, 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, 0x52, 0x61, 0x6e, 0x64, 0x6f,
0x6d, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x10, 0x72,
0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 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, 0x11, 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, 0x75, 0x0a, 0x1e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
0x74, 0x7a, 0x5f, 0x61, 0x72, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65,
0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e,
0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x74, 0x7a, 0x41, 0x72, 0x69, 0x74, 0x68,
0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52, 0x1b, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x74, 0x7a, 0x41, 0x72, 0x69, 0x74, 0x68, 0x43,
0x6f, 0x6d, 0x70, 0x61, 0x72, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x56, 0x0a, 0x13, 0x65, 0x6c,
0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x78, 0x70,
0x72, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x45, 0x6c, 0x65, 0x6d,
0x65, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x70, 0x72, 0x48, 0x00, 0x52,
0x11, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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,
0xc8, 0x01, 0x0a, 0x0d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x12, 0x2f, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 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, 0x06, 0x66, 0x69, 0x6c, 0x74,
0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01,
0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x79,
0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x46, 0x75, 0x6e,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
0x39, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61,
0x69, 0x72, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x0b, 0x53,
0x63, 0x6f, 0x72, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0a, 0x62, 0x6f,
0x6f, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x62, 0x6f,
0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x6c,
0x61, 0x6e, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52,
0x0c, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x3b, 0x0a,
0x0a, 0x50, 0x6c, 0x61, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x13, 0x65,
0x78, 0x70, 0x72, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x65, 0x78, 0x70, 0x72, 0x55, 0x73,
0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x8c, 0x04, 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, 0x12,
0x3a, 0x0a, 0x07, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x70, 0x6c, 0x61, 0x6e, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x52, 0x07, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x70,
0x6c, 0x61, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 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, 0x50, 0x6c, 0x61, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x52, 0x0b, 0x70, 0x6c, 0x61, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a,
0x0c, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 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, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x4f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
0x12, 0x21, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x09, 0x20,
0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 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, 0xfa, 0x01, 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,
0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x6e, 0x74, 0x38, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x05,
0x12, 0x16, 0x0a, 0x12, 0x45, 0x6d, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74,
0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x6d, 0x62, 0x4c,
0x69, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x31, 0x36, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72,
0x10, 0x07, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x6d, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x46, 0x6c,
0x6f, 0x61, 0x74, 0x31, 0x36, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x08, 0x12, 0x15, 0x0a,
0x11, 0x45, 0x6d, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x38, 0x56, 0x65, 0x63, 0x74,
0x6f, 0x72, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x6d, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x42,
0x69, 0x6e, 0x61, 0x72, 0x79, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x10, 0x0a, 0x2a, 0x3e, 0x0a,
0x0c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a,
0x12, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x57, 0x65, 0x69,
0x67, 0x68, 0x74, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x10, 0x01, 0x2a, 0x3d, 0x0a,
0x0c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a,
0x14, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x4d, 0x75, 0x6c,
0x74, 0x69, 0x70, 0x6c, 0x79, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x75, 0x6d, 0x10, 0x01, 0x2a, 0x34, 0x0a, 0x09,
0x42, 0x6f, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x6f, 0x6f,
0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x79, 0x10, 0x00,
0x12, 0x10, 0x0a, 0x0c, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x75, 0x6d,
0x10, 0x01, 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, 11)
var file_plan_proto_msgTypes = make([]protoimpl.MessageInfo, 33)
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
(FunctionType)(0), // 3: milvus.proto.plan.FunctionType
(FunctionMode)(0), // 4: milvus.proto.plan.FunctionMode
(BoostMode)(0), // 5: milvus.proto.plan.BoostMode
(JSONContainsExpr_JSONOp)(0), // 6: milvus.proto.plan.JSONContainsExpr.JSONOp
(NullExpr_NullOp)(0), // 7: milvus.proto.plan.NullExpr.NullOp
(GISFunctionFilterExpr_GISOp)(0), // 8: milvus.proto.plan.GISFunctionFilterExpr.GISOp
(UnaryExpr_UnaryOp)(0), // 9: milvus.proto.plan.UnaryExpr.UnaryOp
(BinaryExpr_BinaryOp)(0), // 10: milvus.proto.plan.BinaryExpr.BinaryOp
(*GenericValue)(nil), // 11: milvus.proto.plan.GenericValue
(*Array)(nil), // 12: milvus.proto.plan.Array
(*SearchIteratorV2Info)(nil), // 13: milvus.proto.plan.SearchIteratorV2Info
(*QueryInfo)(nil), // 14: milvus.proto.plan.QueryInfo
(*ColumnInfo)(nil), // 15: milvus.proto.plan.ColumnInfo
(*ColumnExpr)(nil), // 16: milvus.proto.plan.ColumnExpr
(*ExistsExpr)(nil), // 17: milvus.proto.plan.ExistsExpr
(*ValueExpr)(nil), // 18: milvus.proto.plan.ValueExpr
(*UnaryRangeExpr)(nil), // 19: milvus.proto.plan.UnaryRangeExpr
(*BinaryRangeExpr)(nil), // 20: milvus.proto.plan.BinaryRangeExpr
(*CallExpr)(nil), // 21: milvus.proto.plan.CallExpr
(*CompareExpr)(nil), // 22: milvus.proto.plan.CompareExpr
(*TermExpr)(nil), // 23: milvus.proto.plan.TermExpr
(*JSONContainsExpr)(nil), // 24: milvus.proto.plan.JSONContainsExpr
(*NullExpr)(nil), // 25: milvus.proto.plan.NullExpr
(*GISFunctionFilterExpr)(nil), // 26: milvus.proto.plan.GISFunctionFilterExpr
(*UnaryExpr)(nil), // 27: milvus.proto.plan.UnaryExpr
(*BinaryExpr)(nil), // 28: milvus.proto.plan.BinaryExpr
(*BinaryArithOp)(nil), // 29: milvus.proto.plan.BinaryArithOp
(*BinaryArithExpr)(nil), // 30: milvus.proto.plan.BinaryArithExpr
(*BinaryArithOpEvalRangeExpr)(nil), // 31: milvus.proto.plan.BinaryArithOpEvalRangeExpr
(*RandomSampleExpr)(nil), // 32: milvus.proto.plan.RandomSampleExpr
(*ElementFilterExpr)(nil), // 33: milvus.proto.plan.ElementFilterExpr
(*AlwaysTrueExpr)(nil), // 34: milvus.proto.plan.AlwaysTrueExpr
(*Interval)(nil), // 35: milvus.proto.plan.Interval
(*TimestamptzArithCompareExpr)(nil), // 36: milvus.proto.plan.TimestamptzArithCompareExpr
(*Expr)(nil), // 37: milvus.proto.plan.Expr
(*VectorANNS)(nil), // 38: milvus.proto.plan.VectorANNS
(*QueryPlanNode)(nil), // 39: milvus.proto.plan.QueryPlanNode
(*ScoreFunction)(nil), // 40: milvus.proto.plan.ScoreFunction
(*ScoreOption)(nil), // 41: milvus.proto.plan.ScoreOption
(*PlanOption)(nil), // 42: milvus.proto.plan.PlanOption
(*PlanNode)(nil), // 43: milvus.proto.plan.PlanNode
(schemapb.DataType)(0), // 44: milvus.proto.schema.DataType
(*commonpb.KeyValuePair)(nil), // 45: milvus.proto.common.KeyValuePair
}
var file_plan_proto_depIdxs = []int32{
12, // 0: milvus.proto.plan.GenericValue.array_val:type_name -> milvus.proto.plan.Array
11, // 1: milvus.proto.plan.Array.array:type_name -> milvus.proto.plan.GenericValue
44, // 2: milvus.proto.plan.Array.element_type:type_name -> milvus.proto.schema.DataType
13, // 3: milvus.proto.plan.QueryInfo.search_iterator_v2_info:type_name -> milvus.proto.plan.SearchIteratorV2Info
44, // 4: milvus.proto.plan.QueryInfo.json_type:type_name -> milvus.proto.schema.DataType
44, // 5: milvus.proto.plan.ColumnInfo.data_type:type_name -> milvus.proto.schema.DataType
44, // 6: milvus.proto.plan.ColumnInfo.element_type:type_name -> milvus.proto.schema.DataType
15, // 7: milvus.proto.plan.ColumnExpr.info:type_name -> milvus.proto.plan.ColumnInfo
15, // 8: milvus.proto.plan.ExistsExpr.info:type_name -> milvus.proto.plan.ColumnInfo
11, // 9: milvus.proto.plan.ValueExpr.value:type_name -> milvus.proto.plan.GenericValue
15, // 10: milvus.proto.plan.UnaryRangeExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
0, // 11: milvus.proto.plan.UnaryRangeExpr.op:type_name -> milvus.proto.plan.OpType
11, // 12: milvus.proto.plan.UnaryRangeExpr.value:type_name -> milvus.proto.plan.GenericValue
11, // 13: milvus.proto.plan.UnaryRangeExpr.extra_values:type_name -> milvus.proto.plan.GenericValue
15, // 14: milvus.proto.plan.BinaryRangeExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
11, // 15: milvus.proto.plan.BinaryRangeExpr.lower_value:type_name -> milvus.proto.plan.GenericValue
11, // 16: milvus.proto.plan.BinaryRangeExpr.upper_value:type_name -> milvus.proto.plan.GenericValue
37, // 17: milvus.proto.plan.CallExpr.function_parameters:type_name -> milvus.proto.plan.Expr
15, // 18: milvus.proto.plan.CompareExpr.left_column_info:type_name -> milvus.proto.plan.ColumnInfo
15, // 19: milvus.proto.plan.CompareExpr.right_column_info:type_name -> milvus.proto.plan.ColumnInfo
0, // 20: milvus.proto.plan.CompareExpr.op:type_name -> milvus.proto.plan.OpType
15, // 21: milvus.proto.plan.TermExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
11, // 22: milvus.proto.plan.TermExpr.values:type_name -> milvus.proto.plan.GenericValue
15, // 23: milvus.proto.plan.JSONContainsExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
11, // 24: milvus.proto.plan.JSONContainsExpr.elements:type_name -> milvus.proto.plan.GenericValue
6, // 25: milvus.proto.plan.JSONContainsExpr.op:type_name -> milvus.proto.plan.JSONContainsExpr.JSONOp
15, // 26: milvus.proto.plan.NullExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
7, // 27: milvus.proto.plan.NullExpr.op:type_name -> milvus.proto.plan.NullExpr.NullOp
15, // 28: milvus.proto.plan.GISFunctionFilterExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
8, // 29: milvus.proto.plan.GISFunctionFilterExpr.op:type_name -> milvus.proto.plan.GISFunctionFilterExpr.GISOp
9, // 30: milvus.proto.plan.UnaryExpr.op:type_name -> milvus.proto.plan.UnaryExpr.UnaryOp
37, // 31: milvus.proto.plan.UnaryExpr.child:type_name -> milvus.proto.plan.Expr
10, // 32: milvus.proto.plan.BinaryExpr.op:type_name -> milvus.proto.plan.BinaryExpr.BinaryOp
37, // 33: milvus.proto.plan.BinaryExpr.left:type_name -> milvus.proto.plan.Expr
37, // 34: milvus.proto.plan.BinaryExpr.right:type_name -> milvus.proto.plan.Expr
15, // 35: milvus.proto.plan.BinaryArithOp.column_info:type_name -> milvus.proto.plan.ColumnInfo
1, // 36: milvus.proto.plan.BinaryArithOp.arith_op:type_name -> milvus.proto.plan.ArithOpType
11, // 37: milvus.proto.plan.BinaryArithOp.right_operand:type_name -> milvus.proto.plan.GenericValue
37, // 38: milvus.proto.plan.BinaryArithExpr.left:type_name -> milvus.proto.plan.Expr
37, // 39: milvus.proto.plan.BinaryArithExpr.right:type_name -> milvus.proto.plan.Expr
1, // 40: milvus.proto.plan.BinaryArithExpr.op:type_name -> milvus.proto.plan.ArithOpType
15, // 41: milvus.proto.plan.BinaryArithOpEvalRangeExpr.column_info:type_name -> milvus.proto.plan.ColumnInfo
1, // 42: milvus.proto.plan.BinaryArithOpEvalRangeExpr.arith_op:type_name -> milvus.proto.plan.ArithOpType
11, // 43: milvus.proto.plan.BinaryArithOpEvalRangeExpr.right_operand:type_name -> milvus.proto.plan.GenericValue
0, // 44: milvus.proto.plan.BinaryArithOpEvalRangeExpr.op:type_name -> milvus.proto.plan.OpType
11, // 45: milvus.proto.plan.BinaryArithOpEvalRangeExpr.value:type_name -> milvus.proto.plan.GenericValue
37, // 46: milvus.proto.plan.RandomSampleExpr.predicate:type_name -> milvus.proto.plan.Expr
37, // 47: milvus.proto.plan.ElementFilterExpr.element_expr:type_name -> milvus.proto.plan.Expr
37, // 48: milvus.proto.plan.ElementFilterExpr.predicate:type_name -> milvus.proto.plan.Expr
15, // 49: milvus.proto.plan.TimestamptzArithCompareExpr.timestamptz_column:type_name -> milvus.proto.plan.ColumnInfo
1, // 50: milvus.proto.plan.TimestamptzArithCompareExpr.arith_op:type_name -> milvus.proto.plan.ArithOpType
35, // 51: milvus.proto.plan.TimestamptzArithCompareExpr.interval:type_name -> milvus.proto.plan.Interval
0, // 52: milvus.proto.plan.TimestamptzArithCompareExpr.compare_op:type_name -> milvus.proto.plan.OpType
11, // 53: milvus.proto.plan.TimestamptzArithCompareExpr.compare_value:type_name -> milvus.proto.plan.GenericValue
23, // 54: milvus.proto.plan.Expr.term_expr:type_name -> milvus.proto.plan.TermExpr
27, // 55: milvus.proto.plan.Expr.unary_expr:type_name -> milvus.proto.plan.UnaryExpr
28, // 56: milvus.proto.plan.Expr.binary_expr:type_name -> milvus.proto.plan.BinaryExpr
22, // 57: milvus.proto.plan.Expr.compare_expr:type_name -> milvus.proto.plan.CompareExpr
19, // 58: milvus.proto.plan.Expr.unary_range_expr:type_name -> milvus.proto.plan.UnaryRangeExpr
20, // 59: milvus.proto.plan.Expr.binary_range_expr:type_name -> milvus.proto.plan.BinaryRangeExpr
31, // 60: milvus.proto.plan.Expr.binary_arith_op_eval_range_expr:type_name -> milvus.proto.plan.BinaryArithOpEvalRangeExpr
30, // 61: milvus.proto.plan.Expr.binary_arith_expr:type_name -> milvus.proto.plan.BinaryArithExpr
18, // 62: milvus.proto.plan.Expr.value_expr:type_name -> milvus.proto.plan.ValueExpr
16, // 63: milvus.proto.plan.Expr.column_expr:type_name -> milvus.proto.plan.ColumnExpr
17, // 64: milvus.proto.plan.Expr.exists_expr:type_name -> milvus.proto.plan.ExistsExpr
34, // 65: milvus.proto.plan.Expr.always_true_expr:type_name -> milvus.proto.plan.AlwaysTrueExpr
24, // 66: milvus.proto.plan.Expr.json_contains_expr:type_name -> milvus.proto.plan.JSONContainsExpr
21, // 67: milvus.proto.plan.Expr.call_expr:type_name -> milvus.proto.plan.CallExpr
25, // 68: milvus.proto.plan.Expr.null_expr:type_name -> milvus.proto.plan.NullExpr
32, // 69: milvus.proto.plan.Expr.random_sample_expr:type_name -> milvus.proto.plan.RandomSampleExpr
26, // 70: milvus.proto.plan.Expr.gisfunction_filter_expr:type_name -> milvus.proto.plan.GISFunctionFilterExpr
36, // 71: milvus.proto.plan.Expr.timestamptz_arith_compare_expr:type_name -> milvus.proto.plan.TimestamptzArithCompareExpr
33, // 72: milvus.proto.plan.Expr.element_filter_expr:type_name -> milvus.proto.plan.ElementFilterExpr
2, // 73: milvus.proto.plan.VectorANNS.vector_type:type_name -> milvus.proto.plan.VectorType
37, // 74: milvus.proto.plan.VectorANNS.predicates:type_name -> milvus.proto.plan.Expr
14, // 75: milvus.proto.plan.VectorANNS.query_info:type_name -> milvus.proto.plan.QueryInfo
37, // 76: milvus.proto.plan.QueryPlanNode.predicates:type_name -> milvus.proto.plan.Expr
37, // 77: milvus.proto.plan.ScoreFunction.filter:type_name -> milvus.proto.plan.Expr
3, // 78: milvus.proto.plan.ScoreFunction.type:type_name -> milvus.proto.plan.FunctionType
45, // 79: milvus.proto.plan.ScoreFunction.params:type_name -> milvus.proto.common.KeyValuePair
5, // 80: milvus.proto.plan.ScoreOption.boost_mode:type_name -> milvus.proto.plan.BoostMode
4, // 81: milvus.proto.plan.ScoreOption.function_mode:type_name -> milvus.proto.plan.FunctionMode
38, // 82: milvus.proto.plan.PlanNode.vector_anns:type_name -> milvus.proto.plan.VectorANNS
37, // 83: milvus.proto.plan.PlanNode.predicates:type_name -> milvus.proto.plan.Expr
39, // 84: milvus.proto.plan.PlanNode.query:type_name -> milvus.proto.plan.QueryPlanNode
40, // 85: milvus.proto.plan.PlanNode.scorers:type_name -> milvus.proto.plan.ScoreFunction
42, // 86: milvus.proto.plan.PlanNode.plan_options:type_name -> milvus.proto.plan.PlanOption
41, // 87: milvus.proto.plan.PlanNode.score_option:type_name -> milvus.proto.plan.ScoreOption
88, // [88:88] is the sub-list for method output_type
88, // [88:88] is the sub-list for method input_type
88, // [88:88] is the sub-list for extension type_name
88, // [88:88] is the sub-list for extension extendee
0, // [0:88] 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.(*RandomSampleExpr); 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.(*ElementFilterExpr); 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.(*AlwaysTrueExpr); 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.(*Interval); 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.(*TimestamptzArithCompareExpr); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[26].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[27].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[28].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[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ScoreFunction); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ScoreOption); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PlanOption); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_plan_proto_msgTypes[32].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[26].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_RandomSampleExpr)(nil),
(*Expr_GisfunctionFilterExpr)(nil),
(*Expr_TimestamptzArithCompareExpr)(nil),
(*Expr_ElementFilterExpr)(nil),
}
file_plan_proto_msgTypes[32].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: 11,
NumMessages: 33,
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
}