From 0a7151d50a9fc3205e42d0cbbea0a7208b08ee21 Mon Sep 17 00:00:00 2001 From: kaidaguerre Date: Wed, 17 Apr 2024 08:59:55 -0500 Subject: [PATCH] Add support for pushing down sort order. Closes #596 --- grpc/proto/plugin.pb.go | 1093 +++++++++++++++++------------ grpc/proto/plugin.proto | 15 + grpc/proto/query_context.go | 7 +- grpc/proto/sort_column.go | 5 + plugin/column.go | 43 ++ plugin/plugin.go | 2 + plugin/query_context.go | 7 + plugin/query_data.go | 23 +- plugin/row_data.go | 3 + plugin/table_schema.go | 1 + query_cache/cache_request.go | 14 +- query_cache/index_bucket.go | 3 +- query_cache/index_item.go | 24 +- query_cache/pending_index_item.go | 2 +- query_cache/query_cache.go | 5 +- 15 files changed, 768 insertions(+), 479 deletions(-) create mode 100644 grpc/proto/sort_column.go diff --git a/grpc/proto/plugin.pb.go b/grpc/proto/plugin.pb.go index 485a0a34..0b818761 100644 --- a/grpc/proto/plugin.pb.go +++ b/grpc/proto/plugin.pb.go @@ -64,6 +64,58 @@ func (PluginMessageType) EnumDescriptor() ([]byte, []int) { return file_plugin_proto_rawDescGZIP(), []int{0} } +type SortOrder int32 + +const ( + SortOrder_None SortOrder = 0 + SortOrder_Asc SortOrder = 1 + SortOrder_Desc SortOrder = 2 + SortOrder_All SortOrder = 3 +) + +// Enum value maps for SortOrder. +var ( + SortOrder_name = map[int32]string{ + 0: "None", + 1: "Asc", + 2: "Desc", + 3: "All", + } + SortOrder_value = map[string]int32{ + "None": 0, + "Asc": 1, + "Desc": 2, + "All": 3, + } +) + +func (x SortOrder) Enum() *SortOrder { + p := new(SortOrder) + *p = x + return p +} + +func (x SortOrder) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SortOrder) Descriptor() protoreflect.EnumDescriptor { + return file_plugin_proto_enumTypes[1].Descriptor() +} + +func (SortOrder) Type() protoreflect.EnumType { + return &file_plugin_proto_enumTypes[1] +} + +func (x SortOrder) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SortOrder.Descriptor instead. +func (SortOrder) EnumDescriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{1} +} + // `NullValue` is a singleton enumeration to represent the null value for the // `Value` type union. // @@ -96,11 +148,11 @@ func (x NullValue) String() string { } func (NullValue) Descriptor() protoreflect.EnumDescriptor { - return file_plugin_proto_enumTypes[1].Descriptor() + return file_plugin_proto_enumTypes[2].Descriptor() } func (NullValue) Type() protoreflect.EnumType { - return &file_plugin_proto_enumTypes[1] + return &file_plugin_proto_enumTypes[2] } func (x NullValue) Number() protoreflect.EnumNumber { @@ -109,7 +161,7 @@ func (x NullValue) Number() protoreflect.EnumNumber { // Deprecated: Use NullValue.Descriptor instead. func (NullValue) EnumDescriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{1} + return file_plugin_proto_rawDescGZIP(), []int{2} } type ColumnType int32 @@ -173,11 +225,11 @@ func (x ColumnType) String() string { } func (ColumnType) Descriptor() protoreflect.EnumDescriptor { - return file_plugin_proto_enumTypes[2].Descriptor() + return file_plugin_proto_enumTypes[3].Descriptor() } func (ColumnType) Type() protoreflect.EnumType { - return &file_plugin_proto_enumTypes[2] + return &file_plugin_proto_enumTypes[3] } func (x ColumnType) Number() protoreflect.EnumNumber { @@ -186,7 +238,7 @@ func (x ColumnType) Number() protoreflect.EnumNumber { // Deprecated: Use ColumnType.Descriptor instead. func (ColumnType) EnumDescriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{2} + return file_plugin_proto_rawDescGZIP(), []int{3} } type Operator_Operation int32 @@ -219,11 +271,11 @@ func (x Operator_Operation) String() string { } func (Operator_Operation) Descriptor() protoreflect.EnumDescriptor { - return file_plugin_proto_enumTypes[3].Descriptor() + return file_plugin_proto_enumTypes[4].Descriptor() } func (Operator_Operation) Type() protoreflect.EnumType { - return &file_plugin_proto_enumTypes[3] + return &file_plugin_proto_enumTypes[4] } func (x Operator_Operation) Number() protoreflect.EnumNumber { @@ -835,7 +887,8 @@ type QueryContext struct { Columns []string `protobuf:"bytes,1,rep,name=columns,proto3" json:"columns,omitempty"` Quals map[string]*Quals `protobuf:"bytes,2,rep,name=quals,proto3" json:"quals,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Deprecated: Marked as deprecated in plugin.proto. - Limit *NullableInt `protobuf:"bytes,3,opt,name=limit,proto3" json:"limit,omitempty"` + Limit *NullableInt `protobuf:"bytes,3,opt,name=limit,proto3" json:"limit,omitempty"` + SortOrder []*SortColumn `protobuf:"bytes,4,rep,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` } func (x *QueryContext) Reset() { @@ -892,6 +945,13 @@ func (x *QueryContext) GetLimit() *NullableInt { return nil } +func (x *QueryContext) GetSortOrder() []*SortColumn { + if x != nil { + return x.SortOrder + } + return nil +} + type NullableInt struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1093,6 +1153,61 @@ func (x *ExecuteRequest) GetExecuteConnectionData() map[string]*ExecuteConnectio return nil } +type SortColumn struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Column string `protobuf:"bytes,1,opt,name=column,proto3" json:"column,omitempty"` + Order SortOrder `protobuf:"varint,2,opt,name=order,proto3,enum=proto.SortOrder" json:"order,omitempty"` +} + +func (x *SortColumn) Reset() { + *x = SortColumn{} + if protoimpl.UnsafeEnabled { + mi := &file_plugin_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SortColumn) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SortColumn) ProtoMessage() {} + +func (x *SortColumn) ProtoReflect() protoreflect.Message { + mi := &file_plugin_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 SortColumn.ProtoReflect.Descriptor instead. +func (*SortColumn) Descriptor() ([]byte, []int) { + return file_plugin_proto_rawDescGZIP(), []int{12} +} + +func (x *SortColumn) GetColumn() string { + if x != nil { + return x.Column + } + return "" +} + +func (x *SortColumn) GetOrder() SortOrder { + if x != nil { + return x.Order + } + return SortOrder_None +} + type ExecuteConnectionData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1106,7 +1221,7 @@ type ExecuteConnectionData struct { func (x *ExecuteConnectionData) Reset() { *x = ExecuteConnectionData{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[12] + mi := &file_plugin_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1119,7 +1234,7 @@ func (x *ExecuteConnectionData) String() string { func (*ExecuteConnectionData) ProtoMessage() {} func (x *ExecuteConnectionData) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[12] + mi := &file_plugin_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1132,7 +1247,7 @@ func (x *ExecuteConnectionData) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteConnectionData.ProtoReflect.Descriptor instead. func (*ExecuteConnectionData) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{12} + return file_plugin_proto_rawDescGZIP(), []int{13} } func (x *ExecuteConnectionData) GetLimit() *NullableInt { @@ -1169,7 +1284,7 @@ type ExecuteResponse struct { func (x *ExecuteResponse) Reset() { *x = ExecuteResponse{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[13] + mi := &file_plugin_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1182,7 +1297,7 @@ func (x *ExecuteResponse) String() string { func (*ExecuteResponse) ProtoMessage() {} func (x *ExecuteResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[13] + mi := &file_plugin_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1195,7 +1310,7 @@ func (x *ExecuteResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExecuteResponse.ProtoReflect.Descriptor instead. func (*ExecuteResponse) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{13} + return file_plugin_proto_rawDescGZIP(), []int{14} } func (x *ExecuteResponse) GetRow() *Row { @@ -1232,7 +1347,7 @@ type QueryMetadata struct { func (x *QueryMetadata) Reset() { *x = QueryMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[14] + mi := &file_plugin_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1245,7 +1360,7 @@ func (x *QueryMetadata) String() string { func (*QueryMetadata) ProtoMessage() {} func (x *QueryMetadata) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[14] + mi := &file_plugin_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1258,7 +1373,7 @@ func (x *QueryMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryMetadata.ProtoReflect.Descriptor instead. func (*QueryMetadata) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{14} + return file_plugin_proto_rawDescGZIP(), []int{15} } func (x *QueryMetadata) GetHydrateCalls() int64 { @@ -1293,7 +1408,7 @@ type GetSchemaRequest struct { func (x *GetSchemaRequest) Reset() { *x = GetSchemaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[15] + mi := &file_plugin_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1306,7 +1421,7 @@ func (x *GetSchemaRequest) String() string { func (*GetSchemaRequest) ProtoMessage() {} func (x *GetSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[15] + mi := &file_plugin_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1319,7 +1434,7 @@ func (x *GetSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSchemaRequest.ProtoReflect.Descriptor instead. func (*GetSchemaRequest) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{15} + return file_plugin_proto_rawDescGZIP(), []int{16} } func (x *GetSchemaRequest) GetConnection() string { @@ -1341,7 +1456,7 @@ type GetSchemaResponse struct { func (x *GetSchemaResponse) Reset() { *x = GetSchemaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[16] + mi := &file_plugin_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1354,7 +1469,7 @@ func (x *GetSchemaResponse) String() string { func (*GetSchemaResponse) ProtoMessage() {} func (x *GetSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[16] + mi := &file_plugin_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1367,7 +1482,7 @@ func (x *GetSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSchemaResponse.ProtoReflect.Descriptor instead. func (*GetSchemaResponse) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{16} + return file_plugin_proto_rawDescGZIP(), []int{17} } func (x *GetSchemaResponse) GetSchema() *Schema { @@ -1393,7 +1508,7 @@ type GetSupportedOperationsRequest struct { func (x *GetSupportedOperationsRequest) Reset() { *x = GetSupportedOperationsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[17] + mi := &file_plugin_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1406,7 +1521,7 @@ func (x *GetSupportedOperationsRequest) String() string { func (*GetSupportedOperationsRequest) ProtoMessage() {} func (x *GetSupportedOperationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[17] + mi := &file_plugin_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1419,7 +1534,7 @@ func (x *GetSupportedOperationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSupportedOperationsRequest.ProtoReflect.Descriptor instead. func (*GetSupportedOperationsRequest) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{17} + return file_plugin_proto_rawDescGZIP(), []int{18} } // NOTE: this must be consistent with GetSupportedOperationsResponse in steampipe/pkg/pluginmanager_service/grpc/proto/plugin_manager.proto @@ -1438,7 +1553,7 @@ type GetSupportedOperationsResponse struct { func (x *GetSupportedOperationsResponse) Reset() { *x = GetSupportedOperationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[18] + mi := &file_plugin_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1451,7 +1566,7 @@ func (x *GetSupportedOperationsResponse) String() string { func (*GetSupportedOperationsResponse) ProtoMessage() {} func (x *GetSupportedOperationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[18] + mi := &file_plugin_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1464,7 +1579,7 @@ func (x *GetSupportedOperationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSupportedOperationsResponse.ProtoReflect.Descriptor instead. func (*GetSupportedOperationsResponse) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{18} + return file_plugin_proto_rawDescGZIP(), []int{19} } func (x *GetSupportedOperationsResponse) GetQueryCache() bool { @@ -1515,7 +1630,7 @@ type SetConnectionConfigRequest struct { func (x *SetConnectionConfigRequest) Reset() { *x = SetConnectionConfigRequest{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[19] + mi := &file_plugin_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1528,7 +1643,7 @@ func (x *SetConnectionConfigRequest) String() string { func (*SetConnectionConfigRequest) ProtoMessage() {} func (x *SetConnectionConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[19] + mi := &file_plugin_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1541,7 +1656,7 @@ func (x *SetConnectionConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetConnectionConfigRequest.ProtoReflect.Descriptor instead. func (*SetConnectionConfigRequest) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{19} + return file_plugin_proto_rawDescGZIP(), []int{20} } func (x *SetConnectionConfigRequest) GetConnectionName() string { @@ -1570,7 +1685,7 @@ type ConnectionConfigPayload struct { func (x *ConnectionConfigPayload) Reset() { *x = ConnectionConfigPayload{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[20] + mi := &file_plugin_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1583,7 +1698,7 @@ func (x *ConnectionConfigPayload) String() string { func (*ConnectionConfigPayload) ProtoMessage() {} func (x *ConnectionConfigPayload) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[20] + mi := &file_plugin_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1596,7 +1711,7 @@ func (x *ConnectionConfigPayload) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectionConfigPayload.ProtoReflect.Descriptor instead. func (*ConnectionConfigPayload) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{20} + return file_plugin_proto_rawDescGZIP(), []int{21} } func (x *ConnectionConfigPayload) GetConnectionName() string { @@ -1625,7 +1740,7 @@ type SetAllConnectionConfigsRequest struct { func (x *SetAllConnectionConfigsRequest) Reset() { *x = SetAllConnectionConfigsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[21] + mi := &file_plugin_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1638,7 +1753,7 @@ func (x *SetAllConnectionConfigsRequest) String() string { func (*SetAllConnectionConfigsRequest) ProtoMessage() {} func (x *SetAllConnectionConfigsRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[21] + mi := &file_plugin_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1651,7 +1766,7 @@ func (x *SetAllConnectionConfigsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetAllConnectionConfigsRequest.ProtoReflect.Descriptor instead. func (*SetAllConnectionConfigsRequest) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{21} + return file_plugin_proto_rawDescGZIP(), []int{22} } func (x *SetAllConnectionConfigsRequest) GetConfigs() []*ConnectionConfig { @@ -1681,7 +1796,7 @@ type UpdateConnectionConfigsRequest struct { func (x *UpdateConnectionConfigsRequest) Reset() { *x = UpdateConnectionConfigsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[22] + mi := &file_plugin_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1694,7 +1809,7 @@ func (x *UpdateConnectionConfigsRequest) String() string { func (*UpdateConnectionConfigsRequest) ProtoMessage() {} func (x *UpdateConnectionConfigsRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[22] + mi := &file_plugin_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1707,7 +1822,7 @@ func (x *UpdateConnectionConfigsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateConnectionConfigsRequest.ProtoReflect.Descriptor instead. func (*UpdateConnectionConfigsRequest) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{22} + return file_plugin_proto_rawDescGZIP(), []int{23} } func (x *UpdateConnectionConfigsRequest) GetAdded() []*ConnectionConfig { @@ -1748,7 +1863,7 @@ type ConnectionConfig struct { func (x *ConnectionConfig) Reset() { *x = ConnectionConfig{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[23] + mi := &file_plugin_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1761,7 +1876,7 @@ func (x *ConnectionConfig) String() string { func (*ConnectionConfig) ProtoMessage() {} func (x *ConnectionConfig) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[23] + mi := &file_plugin_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1774,7 +1889,7 @@ func (x *ConnectionConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectionConfig.ProtoReflect.Descriptor instead. func (*ConnectionConfig) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{23} + return file_plugin_proto_rawDescGZIP(), []int{24} } func (x *ConnectionConfig) GetConnection() string { @@ -1837,7 +1952,7 @@ type SetConnectionConfigResponse struct { func (x *SetConnectionConfigResponse) Reset() { *x = SetConnectionConfigResponse{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[24] + mi := &file_plugin_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1850,7 +1965,7 @@ func (x *SetConnectionConfigResponse) String() string { func (*SetConnectionConfigResponse) ProtoMessage() {} func (x *SetConnectionConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[24] + mi := &file_plugin_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1863,7 +1978,7 @@ func (x *SetConnectionConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetConnectionConfigResponse.ProtoReflect.Descriptor instead. func (*SetConnectionConfigResponse) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{24} + return file_plugin_proto_rawDescGZIP(), []int{25} } func (x *SetConnectionConfigResponse) GetFailedConnections() map[string]string { @@ -1884,7 +1999,7 @@ type UpdateConnectionConfigsResponse struct { func (x *UpdateConnectionConfigsResponse) Reset() { *x = UpdateConnectionConfigsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[25] + mi := &file_plugin_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1897,7 +2012,7 @@ func (x *UpdateConnectionConfigsResponse) String() string { func (*UpdateConnectionConfigsResponse) ProtoMessage() {} func (x *UpdateConnectionConfigsResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[25] + mi := &file_plugin_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1910,7 +2025,7 @@ func (x *UpdateConnectionConfigsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateConnectionConfigsResponse.ProtoReflect.Descriptor instead. func (*UpdateConnectionConfigsResponse) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{25} + return file_plugin_proto_rawDescGZIP(), []int{26} } func (x *UpdateConnectionConfigsResponse) GetFailedConnections() map[string]string { @@ -1931,7 +2046,7 @@ type Row struct { func (x *Row) Reset() { *x = Row{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[26] + mi := &file_plugin_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1944,7 +2059,7 @@ func (x *Row) String() string { func (*Row) ProtoMessage() {} func (x *Row) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[26] + mi := &file_plugin_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1957,7 +2072,7 @@ func (x *Row) ProtoReflect() protoreflect.Message { // Deprecated: Use Row.ProtoReflect.Descriptor instead. func (*Row) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{26} + return file_plugin_proto_rawDescGZIP(), []int{27} } func (x *Row) GetColumns() map[string]*Column { @@ -1987,7 +2102,7 @@ type TableSchema struct { func (x *TableSchema) Reset() { *x = TableSchema{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[27] + mi := &file_plugin_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2000,7 +2115,7 @@ func (x *TableSchema) String() string { func (*TableSchema) ProtoMessage() {} func (x *TableSchema) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[27] + mi := &file_plugin_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2013,7 +2128,7 @@ func (x *TableSchema) ProtoReflect() protoreflect.Message { // Deprecated: Use TableSchema.ProtoReflect.Descriptor instead. func (*TableSchema) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{27} + return file_plugin_proto_rawDescGZIP(), []int{28} } func (x *TableSchema) GetColumns() []*ColumnDefinition { @@ -2085,7 +2200,7 @@ type KeyColumnsSet struct { func (x *KeyColumnsSet) Reset() { *x = KeyColumnsSet{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[28] + mi := &file_plugin_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2098,7 +2213,7 @@ func (x *KeyColumnsSet) String() string { func (*KeyColumnsSet) ProtoMessage() {} func (x *KeyColumnsSet) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[28] + mi := &file_plugin_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2111,7 +2226,7 @@ func (x *KeyColumnsSet) ProtoReflect() protoreflect.Message { // Deprecated: Use KeyColumnsSet.ProtoReflect.Descriptor instead. func (*KeyColumnsSet) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{28} + return file_plugin_proto_rawDescGZIP(), []int{29} } func (x *KeyColumnsSet) GetSingle() string { @@ -2149,7 +2264,7 @@ type KeyColumn struct { func (x *KeyColumn) Reset() { *x = KeyColumn{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[29] + mi := &file_plugin_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2162,7 +2277,7 @@ func (x *KeyColumn) String() string { func (*KeyColumn) ProtoMessage() {} func (x *KeyColumn) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[29] + mi := &file_plugin_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2175,7 +2290,7 @@ func (x *KeyColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use KeyColumn.ProtoReflect.Descriptor instead. func (*KeyColumn) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{29} + return file_plugin_proto_rawDescGZIP(), []int{30} } func (x *KeyColumn) GetName() string { @@ -2220,7 +2335,7 @@ type Schema struct { func (x *Schema) Reset() { *x = Schema{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[30] + mi := &file_plugin_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2233,7 +2348,7 @@ func (x *Schema) String() string { func (*Schema) ProtoMessage() {} func (x *Schema) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[30] + mi := &file_plugin_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2246,7 +2361,7 @@ func (x *Schema) ProtoReflect() protoreflect.Message { // Deprecated: Use Schema.ProtoReflect.Descriptor instead. func (*Schema) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{30} + return file_plugin_proto_rawDescGZIP(), []int{31} } func (x *Schema) GetSchema() map[string]*TableSchema { @@ -2300,7 +2415,7 @@ type Column struct { func (x *Column) Reset() { *x = Column{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[31] + mi := &file_plugin_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2313,7 +2428,7 @@ func (x *Column) String() string { func (*Column) ProtoMessage() {} func (x *Column) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[31] + mi := &file_plugin_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2326,12 +2441,12 @@ func (x *Column) ProtoReflect() protoreflect.Message { // Deprecated: Use Column.ProtoReflect.Descriptor instead. func (*Column) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{31} + return file_plugin_proto_rawDescGZIP(), []int{32} } -func (x *Column) GetValue() isColumn_Value { - if x != nil { - return x.Value +func (m *Column) GetValue() isColumn_Value { + if m != nil { + return m.Value } return nil } @@ -2490,12 +2605,13 @@ type ColumnDefinition struct { Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` Hydrate string `protobuf:"bytes,4,opt,name=hydrate,proto3" json:"hydrate,omitempty"` Default *Column `protobuf:"bytes,5,opt,name=default,proto3" json:"default,omitempty"` + SortOrder SortOrder `protobuf:"varint,6,opt,name=sort_order,json=sortOrder,proto3,enum=proto.SortOrder" json:"sort_order,omitempty"` } func (x *ColumnDefinition) Reset() { *x = ColumnDefinition{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[32] + mi := &file_plugin_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2508,7 +2624,7 @@ func (x *ColumnDefinition) String() string { func (*ColumnDefinition) ProtoMessage() {} func (x *ColumnDefinition) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[32] + mi := &file_plugin_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2521,7 +2637,7 @@ func (x *ColumnDefinition) ProtoReflect() protoreflect.Message { // Deprecated: Use ColumnDefinition.ProtoReflect.Descriptor instead. func (*ColumnDefinition) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{32} + return file_plugin_proto_rawDescGZIP(), []int{33} } func (x *ColumnDefinition) GetName() string { @@ -2559,6 +2675,13 @@ func (x *ColumnDefinition) GetDefault() *Column { return nil } +func (x *ColumnDefinition) GetSortOrder() SortOrder { + if x != nil { + return x.SortOrder + } + return SortOrder_None +} + type QueryResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2570,7 +2693,7 @@ type QueryResult struct { func (x *QueryResult) Reset() { *x = QueryResult{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[33] + mi := &file_plugin_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2583,7 +2706,7 @@ func (x *QueryResult) String() string { func (*QueryResult) ProtoMessage() {} func (x *QueryResult) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[33] + mi := &file_plugin_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2596,7 +2719,7 @@ func (x *QueryResult) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryResult.ProtoReflect.Descriptor instead. func (*QueryResult) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{33} + return file_plugin_proto_rawDescGZIP(), []int{34} } func (x *QueryResult) GetRows() []*Row { @@ -2617,7 +2740,7 @@ type IndexBucket struct { func (x *IndexBucket) Reset() { *x = IndexBucket{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[34] + mi := &file_plugin_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2630,7 +2753,7 @@ func (x *IndexBucket) String() string { func (*IndexBucket) ProtoMessage() {} func (x *IndexBucket) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[34] + mi := &file_plugin_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2643,7 +2766,7 @@ func (x *IndexBucket) ProtoReflect() protoreflect.Message { // Deprecated: Use IndexBucket.ProtoReflect.Descriptor instead. func (*IndexBucket) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{34} + return file_plugin_proto_rawDescGZIP(), []int{35} } func (x *IndexBucket) GetItems() []*IndexItem { @@ -2664,12 +2787,13 @@ type IndexItem struct { Limit int64 `protobuf:"varint,5,opt,name=limit,proto3" json:"limit,omitempty"` PageCount int64 `protobuf:"varint,6,opt,name=page_count,json=pageCount,proto3" json:"page_count,omitempty"` InsertionTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=insertion_time,json=insertionTime,proto3" json:"insertion_time,omitempty"` + SortOrder []*SortColumn `protobuf:"bytes,8,rep,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` } func (x *IndexItem) Reset() { *x = IndexItem{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[35] + mi := &file_plugin_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2682,7 +2806,7 @@ func (x *IndexItem) String() string { func (*IndexItem) ProtoMessage() {} func (x *IndexItem) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[35] + mi := &file_plugin_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2695,7 +2819,7 @@ func (x *IndexItem) ProtoReflect() protoreflect.Message { // Deprecated: Use IndexItem.ProtoReflect.Descriptor instead. func (*IndexItem) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{35} + return file_plugin_proto_rawDescGZIP(), []int{36} } func (x *IndexItem) GetKey() string { @@ -2740,6 +2864,13 @@ func (x *IndexItem) GetInsertionTime() *timestamppb.Timestamp { return nil } +func (x *IndexItem) GetSortOrder() []*SortColumn { + if x != nil { + return x.SortOrder + } + return nil +} + type SetCacheOptionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2753,7 +2884,7 @@ type SetCacheOptionsRequest struct { func (x *SetCacheOptionsRequest) Reset() { *x = SetCacheOptionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[36] + mi := &file_plugin_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2766,7 +2897,7 @@ func (x *SetCacheOptionsRequest) String() string { func (*SetCacheOptionsRequest) ProtoMessage() {} func (x *SetCacheOptionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[36] + mi := &file_plugin_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2779,7 +2910,7 @@ func (x *SetCacheOptionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetCacheOptionsRequest.ProtoReflect.Descriptor instead. func (*SetCacheOptionsRequest) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{36} + return file_plugin_proto_rawDescGZIP(), []int{37} } func (x *SetCacheOptionsRequest) GetEnabled() bool { @@ -2812,7 +2943,7 @@ type SetCacheOptionsResponse struct { func (x *SetCacheOptionsResponse) Reset() { *x = SetCacheOptionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[37] + mi := &file_plugin_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2825,7 +2956,7 @@ func (x *SetCacheOptionsResponse) String() string { func (*SetCacheOptionsResponse) ProtoMessage() {} func (x *SetCacheOptionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[37] + mi := &file_plugin_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2838,7 +2969,7 @@ func (x *SetCacheOptionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetCacheOptionsResponse.ProtoReflect.Descriptor instead. func (*SetCacheOptionsResponse) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{37} + return file_plugin_proto_rawDescGZIP(), []int{38} } type SetConnectionCacheOptionsRequest struct { @@ -2852,7 +2983,7 @@ type SetConnectionCacheOptionsRequest struct { func (x *SetConnectionCacheOptionsRequest) Reset() { *x = SetConnectionCacheOptionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[38] + mi := &file_plugin_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2865,7 +2996,7 @@ func (x *SetConnectionCacheOptionsRequest) String() string { func (*SetConnectionCacheOptionsRequest) ProtoMessage() {} func (x *SetConnectionCacheOptionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[38] + mi := &file_plugin_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2878,7 +3009,7 @@ func (x *SetConnectionCacheOptionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetConnectionCacheOptionsRequest.ProtoReflect.Descriptor instead. func (*SetConnectionCacheOptionsRequest) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{38} + return file_plugin_proto_rawDescGZIP(), []int{39} } func (x *SetConnectionCacheOptionsRequest) GetClearCacheForConnection() string { @@ -2897,7 +3028,7 @@ type SetConnectionCacheOptionsResponse struct { func (x *SetConnectionCacheOptionsResponse) Reset() { *x = SetConnectionCacheOptionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[39] + mi := &file_plugin_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2910,7 +3041,7 @@ func (x *SetConnectionCacheOptionsResponse) String() string { func (*SetConnectionCacheOptionsResponse) ProtoMessage() {} func (x *SetConnectionCacheOptionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[39] + mi := &file_plugin_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2923,7 +3054,7 @@ func (x *SetConnectionCacheOptionsResponse) ProtoReflect() protoreflect.Message // Deprecated: Use SetConnectionCacheOptionsResponse.ProtoReflect.Descriptor instead. func (*SetConnectionCacheOptionsResponse) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{39} + return file_plugin_proto_rawDescGZIP(), []int{40} } type RateLimiterDefinition struct { @@ -2942,7 +3073,7 @@ type RateLimiterDefinition struct { func (x *RateLimiterDefinition) Reset() { *x = RateLimiterDefinition{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[40] + mi := &file_plugin_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2955,7 +3086,7 @@ func (x *RateLimiterDefinition) String() string { func (*RateLimiterDefinition) ProtoMessage() {} func (x *RateLimiterDefinition) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[40] + mi := &file_plugin_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2968,7 +3099,7 @@ func (x *RateLimiterDefinition) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimiterDefinition.ProtoReflect.Descriptor instead. func (*RateLimiterDefinition) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{40} + return file_plugin_proto_rawDescGZIP(), []int{41} } func (x *RateLimiterDefinition) GetName() string { @@ -3024,7 +3155,7 @@ type SetRateLimitersRequest struct { func (x *SetRateLimitersRequest) Reset() { *x = SetRateLimitersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[41] + mi := &file_plugin_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3037,7 +3168,7 @@ func (x *SetRateLimitersRequest) String() string { func (*SetRateLimitersRequest) ProtoMessage() {} func (x *SetRateLimitersRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[41] + mi := &file_plugin_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3050,7 +3181,7 @@ func (x *SetRateLimitersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetRateLimitersRequest.ProtoReflect.Descriptor instead. func (*SetRateLimitersRequest) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{41} + return file_plugin_proto_rawDescGZIP(), []int{42} } func (x *SetRateLimitersRequest) GetDefinitions() []*RateLimiterDefinition { @@ -3069,7 +3200,7 @@ type SetRateLimitersResponse struct { func (x *SetRateLimitersResponse) Reset() { *x = SetRateLimitersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[42] + mi := &file_plugin_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3082,7 +3213,7 @@ func (x *SetRateLimitersResponse) String() string { func (*SetRateLimitersResponse) ProtoMessage() {} func (x *SetRateLimitersResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[42] + mi := &file_plugin_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3095,7 +3226,7 @@ func (x *SetRateLimitersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetRateLimitersResponse.ProtoReflect.Descriptor instead. func (*SetRateLimitersResponse) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{42} + return file_plugin_proto_rawDescGZIP(), []int{43} } type GetRateLimitersRequest struct { @@ -3107,7 +3238,7 @@ type GetRateLimitersRequest struct { func (x *GetRateLimitersRequest) Reset() { *x = GetRateLimitersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[43] + mi := &file_plugin_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3120,7 +3251,7 @@ func (x *GetRateLimitersRequest) String() string { func (*GetRateLimitersRequest) ProtoMessage() {} func (x *GetRateLimitersRequest) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[43] + mi := &file_plugin_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3133,7 +3264,7 @@ func (x *GetRateLimitersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRateLimitersRequest.ProtoReflect.Descriptor instead. func (*GetRateLimitersRequest) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{43} + return file_plugin_proto_rawDescGZIP(), []int{44} } type GetRateLimitersResponse struct { @@ -3147,7 +3278,7 @@ type GetRateLimitersResponse struct { func (x *GetRateLimitersResponse) Reset() { *x = GetRateLimitersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_plugin_proto_msgTypes[44] + mi := &file_plugin_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3160,7 +3291,7 @@ func (x *GetRateLimitersResponse) String() string { func (*GetRateLimitersResponse) ProtoMessage() {} func (x *GetRateLimitersResponse) ProtoReflect() protoreflect.Message { - mi := &file_plugin_proto_msgTypes[44] + mi := &file_plugin_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3173,7 +3304,7 @@ func (x *GetRateLimitersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRateLimitersResponse.ProtoReflect.Descriptor instead. func (*GetRateLimitersResponse) Descriptor() ([]byte, []int) { - return file_plugin_proto_rawDescGZIP(), []int{44} + return file_plugin_proto_rawDescGZIP(), []int{45} } func (x *GetRateLimitersResponse) GetDefinitions() []*RateLimiterDefinition { @@ -3256,7 +3387,7 @@ var file_plugin_proto_rawDesc = []byte{ 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x2a, 0x0a, 0x05, 0x51, 0x75, 0x61, 0x6c, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x52, 0x05, - 0x71, 0x75, 0x61, 0x6c, 0x73, 0x22, 0xd4, 0x01, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, + 0x71, 0x75, 0x61, 0x6c, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, @@ -3265,47 +3396,55 @@ var file_plugin_proto_rawDesc = []byte{ 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x46, 0x0a, 0x0a, 0x51, 0x75, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x51, 0x75, 0x61, 0x6c, - 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, 0x0a, 0x0b, - 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x24, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xed, 0x03, 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x38, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0c, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0d, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x74, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, 0x63, 0x68, - 0x65, 0x54, 0x74, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x38, 0x0a, - 0x0d, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, 0x72, 0x61, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x66, 0x0a, 0x15, 0x65, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x1a, - 0x66, 0x0a, 0x1a, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x83, 0x01, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x09, 0x73, 0x6f, 0x72, + 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x1a, 0x46, 0x0a, 0x0a, 0x51, 0x75, 0x61, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x51, 0x75, + 0x61, 0x6c, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x23, + 0x0a, 0x0b, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x24, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xed, 0x03, 0x0a, 0x0e, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0c, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0d, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x63, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, + 0x74, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x63, 0x61, + 0x63, 0x68, 0x65, 0x54, 0x74, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x64, 0x12, + 0x38, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0c, 0x74, 0x72, 0x61, + 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x66, 0x0a, 0x15, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x1a, 0x66, 0x0a, 0x1a, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4c, 0x0a, 0x0a, 0x53, 0x6f, 0x72, + 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, + 0x26, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x83, 0x01, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, @@ -3526,7 +3665,7 @@ var file_plugin_proto_rawDesc = []byte{ 0x69, 0x64, 0x72, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x6c, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x74, 0x72, 0x65, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x10, 0x43, 0x6f, + 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xe3, 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, @@ -3537,153 +3676,163 @@ var file_plugin_proto_rawDesc = []byte{ 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x79, 0x64, 0x72, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x2d, - 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, - 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x22, 0x35, 0x0a, - 0x0b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x05, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x22, 0xaa, 0x02, 0x0a, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x74, - 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x4b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x65, - 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x46, 0x0a, 0x0a, 0x51, 0x75, 0x61, - 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x64, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x1e, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, - 0x78, 0x53, 0x69, 0x7a, 0x65, 0x4d, 0x62, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x43, 0x61, - 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, 0x6c, 0x65, 0x61, - 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x46, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x15, 0x52, 0x61, 0x74, - 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x72, - 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x6c, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6d, - 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x22, 0x58, 0x0a, 0x16, 0x53, 0x65, 0x74, - 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, - 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x59, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, - 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, - 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2a, 0x27, 0x0a, 0x11, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x43, 0x48, 0x45, - 0x4d, 0x41, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x00, 0x2a, 0x1b, 0x0a, 0x09, - 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x55, 0x4c, - 0x4c, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x2a, 0x9f, 0x01, 0x0a, 0x0a, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, - 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, - 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, - 0x47, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, - 0x08, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x49, - 0x50, 0x41, 0x44, 0x44, 0x52, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x49, 0x44, 0x52, 0x10, - 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x08, - 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x45, 0x54, 0x10, 0x09, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x54, - 0x52, 0x45, 0x45, 0x10, 0x0a, 0x12, 0x14, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x32, 0xde, 0x07, 0x0a, 0x0d, - 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x56, 0x0a, - 0x16, 0x45, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x45, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x30, 0x01, 0x12, 0x3e, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x12, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, - 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, - 0x01, 0x12, 0x5c, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x64, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2f, + 0x0a, 0x0a, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, + 0x2d, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, + 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x22, 0x35, + 0x0a, 0x0b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x26, 0x0a, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, + 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xdc, 0x02, 0x0a, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x05, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x65, 0x72, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x69, 0x6e, 0x73, + 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x73, 0x6f, + 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x52, 0x09, 0x73, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x1a, 0x46, 0x0a, 0x0a, + 0x51, 0x75, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x51, 0x75, 0x61, 0x6c, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x1e, 0x0a, 0x0b, 0x6d, 0x61, + 0x78, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x4d, 0x62, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x65, + 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5f, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x63, 0x6c, 0x65, + 0x61, 0x72, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x63, + 0x6c, 0x65, 0x61, 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x46, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x15, + 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, + 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x66, 0x69, + 0x6c, 0x6c, 0x52, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x63, + 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x22, 0x58, 0x0a, 0x16, + 0x53, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x52, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x59, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x44, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x27, 0x0a, 0x11, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x53, + 0x43, 0x48, 0x45, 0x4d, 0x41, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x00, 0x2a, + 0x31, 0x0a, 0x09, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x08, 0x0a, 0x04, + 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x73, 0x63, 0x10, 0x01, 0x12, + 0x08, 0x0a, 0x04, 0x44, 0x65, 0x73, 0x63, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x6c, 0x6c, + 0x10, 0x03, 0x2a, 0x1b, 0x0a, 0x09, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x0e, 0x0a, 0x0a, 0x4e, 0x55, 0x4c, 0x4c, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x2a, + 0x9f, 0x01, 0x0a, 0x0a, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, + 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x54, 0x10, + 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, + 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, + 0x4e, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x10, + 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x50, 0x41, 0x44, 0x44, 0x52, 0x10, 0x06, 0x12, 0x08, 0x0a, + 0x04, 0x43, 0x49, 0x44, 0x52, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x49, 0x4d, 0x45, 0x53, + 0x54, 0x41, 0x4d, 0x50, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x45, 0x54, 0x10, 0x09, + 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x54, 0x52, 0x45, 0x45, 0x10, 0x0a, 0x12, 0x14, 0x0a, 0x07, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x01, 0x32, 0xde, 0x07, 0x0a, 0x0d, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x12, 0x56, 0x0a, 0x16, 0x45, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x24, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x01, 0x12, 0x3e, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x5c, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x21, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, - 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x65, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, + 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x17, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2e, 0x53, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x52, - 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x19, - 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x09, 0x5a, 0x07, - 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0f, + 0x53, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, + 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x61, 0x74, + 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x50, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3698,143 +3847,149 @@ func file_plugin_proto_rawDescGZIP() []byte { return file_plugin_proto_rawDescData } -var file_plugin_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 52) +var file_plugin_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 53) var file_plugin_proto_goTypes = []interface{}{ (PluginMessageType)(0), // 0: proto.PluginMessageType - (NullValue)(0), // 1: proto.NullValue - (ColumnType)(0), // 2: proto.ColumnType - (Operator_Operation)(0), // 3: proto.Operator.Operation - (*EstablishMessageStreamRequest)(nil), // 4: proto.EstablishMessageStreamRequest - (*PluginMessage)(nil), // 5: proto.PluginMessage - (*Operator)(nil), // 6: proto.Operator - (*Qual)(nil), // 7: proto.Qual - (*QualValueList)(nil), // 8: proto.QualValueList - (*QualValue)(nil), // 9: proto.QualValue - (*Inet)(nil), // 10: proto.Inet - (*Quals)(nil), // 11: proto.Quals - (*QueryContext)(nil), // 12: proto.QueryContext - (*NullableInt)(nil), // 13: proto.NullableInt - (*TraceContext)(nil), // 14: proto.TraceContext - (*ExecuteRequest)(nil), // 15: proto.ExecuteRequest - (*ExecuteConnectionData)(nil), // 16: proto.ExecuteConnectionData - (*ExecuteResponse)(nil), // 17: proto.ExecuteResponse - (*QueryMetadata)(nil), // 18: proto.QueryMetadata - (*GetSchemaRequest)(nil), // 19: proto.GetSchemaRequest - (*GetSchemaResponse)(nil), // 20: proto.GetSchemaResponse - (*GetSupportedOperationsRequest)(nil), // 21: proto.GetSupportedOperationsRequest - (*GetSupportedOperationsResponse)(nil), // 22: proto.GetSupportedOperationsResponse - (*SetConnectionConfigRequest)(nil), // 23: proto.SetConnectionConfigRequest - (*ConnectionConfigPayload)(nil), // 24: proto.ConnectionConfigPayload - (*SetAllConnectionConfigsRequest)(nil), // 25: proto.SetAllConnectionConfigsRequest - (*UpdateConnectionConfigsRequest)(nil), // 26: proto.UpdateConnectionConfigsRequest - (*ConnectionConfig)(nil), // 27: proto.ConnectionConfig - (*SetConnectionConfigResponse)(nil), // 28: proto.SetConnectionConfigResponse - (*UpdateConnectionConfigsResponse)(nil), // 29: proto.UpdateConnectionConfigsResponse - (*Row)(nil), // 30: proto.Row - (*TableSchema)(nil), // 31: proto.TableSchema - (*KeyColumnsSet)(nil), // 32: proto.KeyColumnsSet - (*KeyColumn)(nil), // 33: proto.KeyColumn - (*Schema)(nil), // 34: proto.Schema - (*Column)(nil), // 35: proto.Column - (*ColumnDefinition)(nil), // 36: proto.ColumnDefinition - (*QueryResult)(nil), // 37: proto.QueryResult - (*IndexBucket)(nil), // 38: proto.IndexBucket - (*IndexItem)(nil), // 39: proto.IndexItem - (*SetCacheOptionsRequest)(nil), // 40: proto.SetCacheOptionsRequest - (*SetCacheOptionsResponse)(nil), // 41: proto.SetCacheOptionsResponse - (*SetConnectionCacheOptionsRequest)(nil), // 42: proto.SetConnectionCacheOptionsRequest - (*SetConnectionCacheOptionsResponse)(nil), // 43: proto.SetConnectionCacheOptionsResponse - (*RateLimiterDefinition)(nil), // 44: proto.RateLimiterDefinition - (*SetRateLimitersRequest)(nil), // 45: proto.SetRateLimitersRequest - (*SetRateLimitersResponse)(nil), // 46: proto.SetRateLimitersResponse - (*GetRateLimitersRequest)(nil), // 47: proto.GetRateLimitersRequest - (*GetRateLimitersResponse)(nil), // 48: proto.GetRateLimitersResponse - nil, // 49: proto.QueryContext.QualsEntry - nil, // 50: proto.ExecuteRequest.ExecuteConnectionDataEntry - nil, // 51: proto.SetConnectionConfigResponse.FailedConnectionsEntry - nil, // 52: proto.UpdateConnectionConfigsResponse.FailedConnectionsEntry - nil, // 53: proto.Row.ColumnsEntry - nil, // 54: proto.Schema.SchemaEntry - nil, // 55: proto.IndexItem.QualsEntry - (*timestamppb.Timestamp)(nil), // 56: google.protobuf.Timestamp + (SortOrder)(0), // 1: proto.SortOrder + (NullValue)(0), // 2: proto.NullValue + (ColumnType)(0), // 3: proto.ColumnType + (Operator_Operation)(0), // 4: proto.Operator.Operation + (*EstablishMessageStreamRequest)(nil), // 5: proto.EstablishMessageStreamRequest + (*PluginMessage)(nil), // 6: proto.PluginMessage + (*Operator)(nil), // 7: proto.Operator + (*Qual)(nil), // 8: proto.Qual + (*QualValueList)(nil), // 9: proto.QualValueList + (*QualValue)(nil), // 10: proto.QualValue + (*Inet)(nil), // 11: proto.Inet + (*Quals)(nil), // 12: proto.Quals + (*QueryContext)(nil), // 13: proto.QueryContext + (*NullableInt)(nil), // 14: proto.NullableInt + (*TraceContext)(nil), // 15: proto.TraceContext + (*ExecuteRequest)(nil), // 16: proto.ExecuteRequest + (*SortColumn)(nil), // 17: proto.SortColumn + (*ExecuteConnectionData)(nil), // 18: proto.ExecuteConnectionData + (*ExecuteResponse)(nil), // 19: proto.ExecuteResponse + (*QueryMetadata)(nil), // 20: proto.QueryMetadata + (*GetSchemaRequest)(nil), // 21: proto.GetSchemaRequest + (*GetSchemaResponse)(nil), // 22: proto.GetSchemaResponse + (*GetSupportedOperationsRequest)(nil), // 23: proto.GetSupportedOperationsRequest + (*GetSupportedOperationsResponse)(nil), // 24: proto.GetSupportedOperationsResponse + (*SetConnectionConfigRequest)(nil), // 25: proto.SetConnectionConfigRequest + (*ConnectionConfigPayload)(nil), // 26: proto.ConnectionConfigPayload + (*SetAllConnectionConfigsRequest)(nil), // 27: proto.SetAllConnectionConfigsRequest + (*UpdateConnectionConfigsRequest)(nil), // 28: proto.UpdateConnectionConfigsRequest + (*ConnectionConfig)(nil), // 29: proto.ConnectionConfig + (*SetConnectionConfigResponse)(nil), // 30: proto.SetConnectionConfigResponse + (*UpdateConnectionConfigsResponse)(nil), // 31: proto.UpdateConnectionConfigsResponse + (*Row)(nil), // 32: proto.Row + (*TableSchema)(nil), // 33: proto.TableSchema + (*KeyColumnsSet)(nil), // 34: proto.KeyColumnsSet + (*KeyColumn)(nil), // 35: proto.KeyColumn + (*Schema)(nil), // 36: proto.Schema + (*Column)(nil), // 37: proto.Column + (*ColumnDefinition)(nil), // 38: proto.ColumnDefinition + (*QueryResult)(nil), // 39: proto.QueryResult + (*IndexBucket)(nil), // 40: proto.IndexBucket + (*IndexItem)(nil), // 41: proto.IndexItem + (*SetCacheOptionsRequest)(nil), // 42: proto.SetCacheOptionsRequest + (*SetCacheOptionsResponse)(nil), // 43: proto.SetCacheOptionsResponse + (*SetConnectionCacheOptionsRequest)(nil), // 44: proto.SetConnectionCacheOptionsRequest + (*SetConnectionCacheOptionsResponse)(nil), // 45: proto.SetConnectionCacheOptionsResponse + (*RateLimiterDefinition)(nil), // 46: proto.RateLimiterDefinition + (*SetRateLimitersRequest)(nil), // 47: proto.SetRateLimitersRequest + (*SetRateLimitersResponse)(nil), // 48: proto.SetRateLimitersResponse + (*GetRateLimitersRequest)(nil), // 49: proto.GetRateLimitersRequest + (*GetRateLimitersResponse)(nil), // 50: proto.GetRateLimitersResponse + nil, // 51: proto.QueryContext.QualsEntry + nil, // 52: proto.ExecuteRequest.ExecuteConnectionDataEntry + nil, // 53: proto.SetConnectionConfigResponse.FailedConnectionsEntry + nil, // 54: proto.UpdateConnectionConfigsResponse.FailedConnectionsEntry + nil, // 55: proto.Row.ColumnsEntry + nil, // 56: proto.Schema.SchemaEntry + nil, // 57: proto.IndexItem.QualsEntry + (*timestamppb.Timestamp)(nil), // 58: google.protobuf.Timestamp } var file_plugin_proto_depIdxs = []int32{ 0, // 0: proto.PluginMessage.messageType:type_name -> proto.PluginMessageType - 3, // 1: proto.Operator.operation:type_name -> proto.Operator.Operation - 6, // 2: proto.Qual.tuple_value:type_name -> proto.Operator - 9, // 3: proto.Qual.value:type_name -> proto.QualValue - 9, // 4: proto.QualValueList.values:type_name -> proto.QualValue - 10, // 5: proto.QualValue.inet_value:type_name -> proto.Inet - 56, // 6: proto.QualValue.timestamp_value:type_name -> google.protobuf.Timestamp - 8, // 7: proto.QualValue.list_value:type_name -> proto.QualValueList - 7, // 8: proto.Quals.quals:type_name -> proto.Qual - 49, // 9: proto.QueryContext.quals:type_name -> proto.QueryContext.QualsEntry - 13, // 10: proto.QueryContext.limit:type_name -> proto.NullableInt - 12, // 11: proto.ExecuteRequest.query_context:type_name -> proto.QueryContext - 14, // 12: proto.ExecuteRequest.trace_context:type_name -> proto.TraceContext - 50, // 13: proto.ExecuteRequest.executeConnectionData:type_name -> proto.ExecuteRequest.ExecuteConnectionDataEntry - 13, // 14: proto.ExecuteConnectionData.limit:type_name -> proto.NullableInt - 30, // 15: proto.ExecuteResponse.row:type_name -> proto.Row - 18, // 16: proto.ExecuteResponse.metadata:type_name -> proto.QueryMetadata - 34, // 17: proto.GetSchemaResponse.schema:type_name -> proto.Schema - 44, // 18: proto.GetSchemaResponse.rate_limiters:type_name -> proto.RateLimiterDefinition - 27, // 19: proto.SetAllConnectionConfigsRequest.configs:type_name -> proto.ConnectionConfig - 27, // 20: proto.UpdateConnectionConfigsRequest.added:type_name -> proto.ConnectionConfig - 27, // 21: proto.UpdateConnectionConfigsRequest.deleted:type_name -> proto.ConnectionConfig - 27, // 22: proto.UpdateConnectionConfigsRequest.changed:type_name -> proto.ConnectionConfig - 51, // 23: proto.SetConnectionConfigResponse.failed_connections:type_name -> proto.SetConnectionConfigResponse.FailedConnectionsEntry - 52, // 24: proto.UpdateConnectionConfigsResponse.failed_connections:type_name -> proto.UpdateConnectionConfigsResponse.FailedConnectionsEntry - 53, // 25: proto.Row.columns:type_name -> proto.Row.ColumnsEntry - 36, // 26: proto.TableSchema.columns:type_name -> proto.ColumnDefinition - 32, // 27: proto.TableSchema.getCallKeyColumns:type_name -> proto.KeyColumnsSet - 32, // 28: proto.TableSchema.listCallKeyColumns:type_name -> proto.KeyColumnsSet - 32, // 29: proto.TableSchema.listCallOptionalKeyColumns:type_name -> proto.KeyColumnsSet - 33, // 30: proto.TableSchema.getCallKeyColumnList:type_name -> proto.KeyColumn - 33, // 31: proto.TableSchema.listCallKeyColumnList:type_name -> proto.KeyColumn - 54, // 32: proto.Schema.schema:type_name -> proto.Schema.SchemaEntry - 1, // 33: proto.Column.null_value:type_name -> proto.NullValue - 56, // 34: proto.Column.timestamp_value:type_name -> google.protobuf.Timestamp - 2, // 35: proto.ColumnDefinition.type:type_name -> proto.ColumnType - 35, // 36: proto.ColumnDefinition.default:type_name -> proto.Column - 30, // 37: proto.QueryResult.rows:type_name -> proto.Row - 39, // 38: proto.IndexBucket.items:type_name -> proto.IndexItem - 55, // 39: proto.IndexItem.quals:type_name -> proto.IndexItem.QualsEntry - 56, // 40: proto.IndexItem.insertion_time:type_name -> google.protobuf.Timestamp - 44, // 41: proto.SetRateLimitersRequest.definitions:type_name -> proto.RateLimiterDefinition - 44, // 42: proto.GetRateLimitersResponse.definitions:type_name -> proto.RateLimiterDefinition - 11, // 43: proto.QueryContext.QualsEntry.value:type_name -> proto.Quals - 16, // 44: proto.ExecuteRequest.ExecuteConnectionDataEntry.value:type_name -> proto.ExecuteConnectionData - 35, // 45: proto.Row.ColumnsEntry.value:type_name -> proto.Column - 31, // 46: proto.Schema.SchemaEntry.value:type_name -> proto.TableSchema - 11, // 47: proto.IndexItem.QualsEntry.value:type_name -> proto.Quals - 4, // 48: proto.WrapperPlugin.EstablishMessageStream:input_type -> proto.EstablishMessageStreamRequest - 19, // 49: proto.WrapperPlugin.GetSchema:input_type -> proto.GetSchemaRequest - 15, // 50: proto.WrapperPlugin.Execute:input_type -> proto.ExecuteRequest - 23, // 51: proto.WrapperPlugin.SetConnectionConfig:input_type -> proto.SetConnectionConfigRequest - 25, // 52: proto.WrapperPlugin.SetAllConnectionConfigs:input_type -> proto.SetAllConnectionConfigsRequest - 26, // 53: proto.WrapperPlugin.UpdateConnectionConfigs:input_type -> proto.UpdateConnectionConfigsRequest - 21, // 54: proto.WrapperPlugin.GetSupportedOperations:input_type -> proto.GetSupportedOperationsRequest - 40, // 55: proto.WrapperPlugin.SetCacheOptions:input_type -> proto.SetCacheOptionsRequest - 45, // 56: proto.WrapperPlugin.SetRateLimiters:input_type -> proto.SetRateLimitersRequest - 47, // 57: proto.WrapperPlugin.GetRateLimiters:input_type -> proto.GetRateLimitersRequest - 42, // 58: proto.WrapperPlugin.SetConnectionCacheOptions:input_type -> proto.SetConnectionCacheOptionsRequest - 5, // 59: proto.WrapperPlugin.EstablishMessageStream:output_type -> proto.PluginMessage - 20, // 60: proto.WrapperPlugin.GetSchema:output_type -> proto.GetSchemaResponse - 17, // 61: proto.WrapperPlugin.Execute:output_type -> proto.ExecuteResponse - 28, // 62: proto.WrapperPlugin.SetConnectionConfig:output_type -> proto.SetConnectionConfigResponse - 28, // 63: proto.WrapperPlugin.SetAllConnectionConfigs:output_type -> proto.SetConnectionConfigResponse - 29, // 64: proto.WrapperPlugin.UpdateConnectionConfigs:output_type -> proto.UpdateConnectionConfigsResponse - 22, // 65: proto.WrapperPlugin.GetSupportedOperations:output_type -> proto.GetSupportedOperationsResponse - 41, // 66: proto.WrapperPlugin.SetCacheOptions:output_type -> proto.SetCacheOptionsResponse - 46, // 67: proto.WrapperPlugin.SetRateLimiters:output_type -> proto.SetRateLimitersResponse - 48, // 68: proto.WrapperPlugin.GetRateLimiters:output_type -> proto.GetRateLimitersResponse - 43, // 69: proto.WrapperPlugin.SetConnectionCacheOptions:output_type -> proto.SetConnectionCacheOptionsResponse - 59, // [59:70] is the sub-list for method output_type - 48, // [48:59] is the sub-list for method input_type - 48, // [48:48] is the sub-list for extension type_name - 48, // [48:48] is the sub-list for extension extendee - 0, // [0:48] is the sub-list for field type_name + 4, // 1: proto.Operator.operation:type_name -> proto.Operator.Operation + 7, // 2: proto.Qual.tuple_value:type_name -> proto.Operator + 10, // 3: proto.Qual.value:type_name -> proto.QualValue + 10, // 4: proto.QualValueList.values:type_name -> proto.QualValue + 11, // 5: proto.QualValue.inet_value:type_name -> proto.Inet + 58, // 6: proto.QualValue.timestamp_value:type_name -> google.protobuf.Timestamp + 9, // 7: proto.QualValue.list_value:type_name -> proto.QualValueList + 8, // 8: proto.Quals.quals:type_name -> proto.Qual + 51, // 9: proto.QueryContext.quals:type_name -> proto.QueryContext.QualsEntry + 14, // 10: proto.QueryContext.limit:type_name -> proto.NullableInt + 17, // 11: proto.QueryContext.sort_order:type_name -> proto.SortColumn + 13, // 12: proto.ExecuteRequest.query_context:type_name -> proto.QueryContext + 15, // 13: proto.ExecuteRequest.trace_context:type_name -> proto.TraceContext + 52, // 14: proto.ExecuteRequest.executeConnectionData:type_name -> proto.ExecuteRequest.ExecuteConnectionDataEntry + 1, // 15: proto.SortColumn.order:type_name -> proto.SortOrder + 14, // 16: proto.ExecuteConnectionData.limit:type_name -> proto.NullableInt + 32, // 17: proto.ExecuteResponse.row:type_name -> proto.Row + 20, // 18: proto.ExecuteResponse.metadata:type_name -> proto.QueryMetadata + 36, // 19: proto.GetSchemaResponse.schema:type_name -> proto.Schema + 46, // 20: proto.GetSchemaResponse.rate_limiters:type_name -> proto.RateLimiterDefinition + 29, // 21: proto.SetAllConnectionConfigsRequest.configs:type_name -> proto.ConnectionConfig + 29, // 22: proto.UpdateConnectionConfigsRequest.added:type_name -> proto.ConnectionConfig + 29, // 23: proto.UpdateConnectionConfigsRequest.deleted:type_name -> proto.ConnectionConfig + 29, // 24: proto.UpdateConnectionConfigsRequest.changed:type_name -> proto.ConnectionConfig + 53, // 25: proto.SetConnectionConfigResponse.failed_connections:type_name -> proto.SetConnectionConfigResponse.FailedConnectionsEntry + 54, // 26: proto.UpdateConnectionConfigsResponse.failed_connections:type_name -> proto.UpdateConnectionConfigsResponse.FailedConnectionsEntry + 55, // 27: proto.Row.columns:type_name -> proto.Row.ColumnsEntry + 38, // 28: proto.TableSchema.columns:type_name -> proto.ColumnDefinition + 34, // 29: proto.TableSchema.getCallKeyColumns:type_name -> proto.KeyColumnsSet + 34, // 30: proto.TableSchema.listCallKeyColumns:type_name -> proto.KeyColumnsSet + 34, // 31: proto.TableSchema.listCallOptionalKeyColumns:type_name -> proto.KeyColumnsSet + 35, // 32: proto.TableSchema.getCallKeyColumnList:type_name -> proto.KeyColumn + 35, // 33: proto.TableSchema.listCallKeyColumnList:type_name -> proto.KeyColumn + 56, // 34: proto.Schema.schema:type_name -> proto.Schema.SchemaEntry + 2, // 35: proto.Column.null_value:type_name -> proto.NullValue + 58, // 36: proto.Column.timestamp_value:type_name -> google.protobuf.Timestamp + 3, // 37: proto.ColumnDefinition.type:type_name -> proto.ColumnType + 37, // 38: proto.ColumnDefinition.default:type_name -> proto.Column + 1, // 39: proto.ColumnDefinition.sort_order:type_name -> proto.SortOrder + 32, // 40: proto.QueryResult.rows:type_name -> proto.Row + 41, // 41: proto.IndexBucket.items:type_name -> proto.IndexItem + 57, // 42: proto.IndexItem.quals:type_name -> proto.IndexItem.QualsEntry + 58, // 43: proto.IndexItem.insertion_time:type_name -> google.protobuf.Timestamp + 17, // 44: proto.IndexItem.sort_order:type_name -> proto.SortColumn + 46, // 45: proto.SetRateLimitersRequest.definitions:type_name -> proto.RateLimiterDefinition + 46, // 46: proto.GetRateLimitersResponse.definitions:type_name -> proto.RateLimiterDefinition + 12, // 47: proto.QueryContext.QualsEntry.value:type_name -> proto.Quals + 18, // 48: proto.ExecuteRequest.ExecuteConnectionDataEntry.value:type_name -> proto.ExecuteConnectionData + 37, // 49: proto.Row.ColumnsEntry.value:type_name -> proto.Column + 33, // 50: proto.Schema.SchemaEntry.value:type_name -> proto.TableSchema + 12, // 51: proto.IndexItem.QualsEntry.value:type_name -> proto.Quals + 5, // 52: proto.WrapperPlugin.EstablishMessageStream:input_type -> proto.EstablishMessageStreamRequest + 21, // 53: proto.WrapperPlugin.GetSchema:input_type -> proto.GetSchemaRequest + 16, // 54: proto.WrapperPlugin.Execute:input_type -> proto.ExecuteRequest + 25, // 55: proto.WrapperPlugin.SetConnectionConfig:input_type -> proto.SetConnectionConfigRequest + 27, // 56: proto.WrapperPlugin.SetAllConnectionConfigs:input_type -> proto.SetAllConnectionConfigsRequest + 28, // 57: proto.WrapperPlugin.UpdateConnectionConfigs:input_type -> proto.UpdateConnectionConfigsRequest + 23, // 58: proto.WrapperPlugin.GetSupportedOperations:input_type -> proto.GetSupportedOperationsRequest + 42, // 59: proto.WrapperPlugin.SetCacheOptions:input_type -> proto.SetCacheOptionsRequest + 47, // 60: proto.WrapperPlugin.SetRateLimiters:input_type -> proto.SetRateLimitersRequest + 49, // 61: proto.WrapperPlugin.GetRateLimiters:input_type -> proto.GetRateLimitersRequest + 44, // 62: proto.WrapperPlugin.SetConnectionCacheOptions:input_type -> proto.SetConnectionCacheOptionsRequest + 6, // 63: proto.WrapperPlugin.EstablishMessageStream:output_type -> proto.PluginMessage + 22, // 64: proto.WrapperPlugin.GetSchema:output_type -> proto.GetSchemaResponse + 19, // 65: proto.WrapperPlugin.Execute:output_type -> proto.ExecuteResponse + 30, // 66: proto.WrapperPlugin.SetConnectionConfig:output_type -> proto.SetConnectionConfigResponse + 30, // 67: proto.WrapperPlugin.SetAllConnectionConfigs:output_type -> proto.SetConnectionConfigResponse + 31, // 68: proto.WrapperPlugin.UpdateConnectionConfigs:output_type -> proto.UpdateConnectionConfigsResponse + 24, // 69: proto.WrapperPlugin.GetSupportedOperations:output_type -> proto.GetSupportedOperationsResponse + 43, // 70: proto.WrapperPlugin.SetCacheOptions:output_type -> proto.SetCacheOptionsResponse + 48, // 71: proto.WrapperPlugin.SetRateLimiters:output_type -> proto.SetRateLimitersResponse + 50, // 72: proto.WrapperPlugin.GetRateLimiters:output_type -> proto.GetRateLimitersResponse + 45, // 73: proto.WrapperPlugin.SetConnectionCacheOptions:output_type -> proto.SetConnectionCacheOptionsResponse + 63, // [63:74] is the sub-list for method output_type + 52, // [52:63] is the sub-list for method input_type + 52, // [52:52] is the sub-list for extension type_name + 52, // [52:52] is the sub-list for extension extendee + 0, // [0:52] is the sub-list for field type_name } func init() { file_plugin_proto_init() } @@ -3988,7 +4143,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecuteConnectionData); i { + switch v := v.(*SortColumn); i { case 0: return &v.state case 1: @@ -4000,7 +4155,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecuteResponse); i { + switch v := v.(*ExecuteConnectionData); i { case 0: return &v.state case 1: @@ -4012,7 +4167,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryMetadata); i { + switch v := v.(*ExecuteResponse); i { case 0: return &v.state case 1: @@ -4024,7 +4179,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSchemaRequest); i { + switch v := v.(*QueryMetadata); i { case 0: return &v.state case 1: @@ -4036,7 +4191,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSchemaResponse); i { + switch v := v.(*GetSchemaRequest); i { case 0: return &v.state case 1: @@ -4048,7 +4203,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSupportedOperationsRequest); i { + switch v := v.(*GetSchemaResponse); i { case 0: return &v.state case 1: @@ -4060,7 +4215,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSupportedOperationsResponse); i { + switch v := v.(*GetSupportedOperationsRequest); i { case 0: return &v.state case 1: @@ -4072,7 +4227,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetConnectionConfigRequest); i { + switch v := v.(*GetSupportedOperationsResponse); i { case 0: return &v.state case 1: @@ -4084,7 +4239,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionConfigPayload); i { + switch v := v.(*SetConnectionConfigRequest); i { case 0: return &v.state case 1: @@ -4096,7 +4251,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetAllConnectionConfigsRequest); i { + switch v := v.(*ConnectionConfigPayload); i { case 0: return &v.state case 1: @@ -4108,7 +4263,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateConnectionConfigsRequest); i { + switch v := v.(*SetAllConnectionConfigsRequest); i { case 0: return &v.state case 1: @@ -4120,7 +4275,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionConfig); i { + switch v := v.(*UpdateConnectionConfigsRequest); i { case 0: return &v.state case 1: @@ -4132,7 +4287,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetConnectionConfigResponse); i { + switch v := v.(*ConnectionConfig); i { case 0: return &v.state case 1: @@ -4144,7 +4299,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateConnectionConfigsResponse); i { + switch v := v.(*SetConnectionConfigResponse); i { case 0: return &v.state case 1: @@ -4156,7 +4311,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Row); i { + switch v := v.(*UpdateConnectionConfigsResponse); i { case 0: return &v.state case 1: @@ -4168,7 +4323,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TableSchema); i { + switch v := v.(*Row); i { case 0: return &v.state case 1: @@ -4180,7 +4335,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KeyColumnsSet); i { + switch v := v.(*TableSchema); i { case 0: return &v.state case 1: @@ -4192,7 +4347,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KeyColumn); i { + switch v := v.(*KeyColumnsSet); i { case 0: return &v.state case 1: @@ -4204,7 +4359,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Schema); i { + switch v := v.(*KeyColumn); i { case 0: return &v.state case 1: @@ -4216,7 +4371,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Column); i { + switch v := v.(*Schema); i { case 0: return &v.state case 1: @@ -4228,7 +4383,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ColumnDefinition); i { + switch v := v.(*Column); i { case 0: return &v.state case 1: @@ -4240,7 +4395,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryResult); i { + switch v := v.(*ColumnDefinition); i { case 0: return &v.state case 1: @@ -4252,7 +4407,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IndexBucket); i { + switch v := v.(*QueryResult); i { case 0: return &v.state case 1: @@ -4264,7 +4419,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IndexItem); i { + switch v := v.(*IndexBucket); i { case 0: return &v.state case 1: @@ -4276,7 +4431,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetCacheOptionsRequest); i { + switch v := v.(*IndexItem); i { case 0: return &v.state case 1: @@ -4288,7 +4443,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetCacheOptionsResponse); i { + switch v := v.(*SetCacheOptionsRequest); i { case 0: return &v.state case 1: @@ -4300,7 +4455,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetConnectionCacheOptionsRequest); i { + switch v := v.(*SetCacheOptionsResponse); i { case 0: return &v.state case 1: @@ -4312,7 +4467,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetConnectionCacheOptionsResponse); i { + switch v := v.(*SetConnectionCacheOptionsRequest); i { case 0: return &v.state case 1: @@ -4324,7 +4479,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RateLimiterDefinition); i { + switch v := v.(*SetConnectionCacheOptionsResponse); i { case 0: return &v.state case 1: @@ -4336,7 +4491,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetRateLimitersRequest); i { + switch v := v.(*RateLimiterDefinition); i { case 0: return &v.state case 1: @@ -4348,7 +4503,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetRateLimitersResponse); i { + switch v := v.(*SetRateLimitersRequest); i { case 0: return &v.state case 1: @@ -4360,7 +4515,7 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetRateLimitersRequest); i { + switch v := v.(*SetRateLimitersResponse); i { case 0: return &v.state case 1: @@ -4372,6 +4527,18 @@ func file_plugin_proto_init() { } } file_plugin_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRateLimitersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_plugin_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRateLimitersResponse); i { case 0: return &v.state @@ -4399,7 +4566,7 @@ func file_plugin_proto_init() { (*QualValue_ListValue)(nil), (*QualValue_LtreeValue)(nil), } - file_plugin_proto_msgTypes[31].OneofWrappers = []interface{}{ + file_plugin_proto_msgTypes[32].OneofWrappers = []interface{}{ (*Column_NullValue)(nil), (*Column_DoubleValue)(nil), (*Column_IntValue)(nil), @@ -4416,8 +4583,8 @@ func file_plugin_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_plugin_proto_rawDesc, - NumEnums: 4, - NumMessages: 52, + NumEnums: 5, + NumMessages: 53, NumExtensions: 0, NumServices: 1, }, diff --git a/grpc/proto/plugin.proto b/grpc/proto/plugin.proto index f6841263..9f519665 100644 --- a/grpc/proto/plugin.proto +++ b/grpc/proto/plugin.proto @@ -82,6 +82,8 @@ message QueryContext { repeated string columns = 1; map quals = 2; NullableInt limit = 3 [deprecated = true]; + repeated SortColumn sort_order = 4; + } message NullableInt { @@ -103,6 +105,11 @@ message ExecuteRequest { map executeConnectionData = 8; } +message SortColumn{ + string column = 1; + SortOrder order = 2; +} + message ExecuteConnectionData { NullableInt limit = 2; bool cache_enabled = 3; @@ -199,6 +206,12 @@ message TableSchema repeated KeyColumn listCallKeyColumnList = 7; } +enum SortOrder { + None = 0; + Asc = 1; + Desc = 2; + All = 3; +} // a set of Key Columns, required for get/list calls // deprecated - kept for compatibility message KeyColumnsSet @@ -264,6 +277,7 @@ message ColumnDefinition { string description = 3; string hydrate = 4; Column default = 5; + SortOrder sort_order = 6; } enum ColumnType { @@ -297,6 +311,7 @@ message IndexItem{ int64 limit = 5; int64 page_count = 6; google.protobuf.Timestamp insertion_time =7; + repeated SortColumn sort_order = 8; } message SetCacheOptionsRequest { diff --git a/grpc/proto/query_context.go b/grpc/proto/query_context.go index 9895879e..48112d9d 100644 --- a/grpc/proto/query_context.go +++ b/grpc/proto/query_context.go @@ -1,10 +1,11 @@ package proto // NewQueryContext creates a proto.QueryContext from provided columns, qualMap, and if non-nul, the limit -func NewQueryContext(columns []string, qualMap map[string]*Quals, limit int64) *QueryContext { +func NewQueryContext(columns []string, qualMap map[string]*Quals, limit int64, sortOrder []*SortColumn) *QueryContext { var queryContext = &QueryContext{ - Columns: columns, - Quals: qualMap, + Columns: columns, + Quals: qualMap, + SortOrder: sortOrder, } if limit != -1 { queryContext.Limit = &NullableInt{Value: limit} diff --git a/grpc/proto/sort_column.go b/grpc/proto/sort_column.go new file mode 100644 index 00000000..3a6f7edd --- /dev/null +++ b/grpc/proto/sort_column.go @@ -0,0 +1,5 @@ +package proto + +func (x *SortColumn) Equals(other *SortColumn) bool { + return x.Column == other.Column && x.Order == other.Order +} diff --git a/plugin/column.go b/plugin/column.go index e020114f..7ca070c7 100644 --- a/plugin/column.go +++ b/plugin/column.go @@ -12,6 +12,48 @@ import ( "net" ) +// SortColumn is used to specify the sort order that a column supports +type SortColumn struct { + Column string + Order SortOrder +} + +type SortOrder int + +const ( + SortNone SortOrder = iota + SortAsc + SortDesc + SortAll +) + +// method to convert to proto SortOrder +func (s SortOrder) toProto() proto.SortOrder { + switch s { + case SortAsc: + return proto.SortOrder_Asc + case SortDesc: + return proto.SortOrder_Desc + case SortAll: + return proto.SortOrder_All + default: + return proto.SortOrder_None + } +} + +func (s SortOrder) String() string { + switch s { + case SortAsc: + return "asc" + case SortDesc: + return "desc" + case SortAll: + return "asc or desc" + default: + return "none" + } +} + /* Column defines a column of a table. @@ -82,6 +124,7 @@ type Column struct { Transform *transform.ColumnTransforms namedHydrate namedHydrateFunc + Sort SortOrder } func (c *Column) initialise() { diff --git a/plugin/plugin.go b/plugin/plugin.go index 2d6355c6..d31bf0e3 100644 --- a/plugin/plugin.go +++ b/plugin/plugin.go @@ -397,6 +397,7 @@ func (p *Plugin) executeForConnection(streamContext context.Context, req *proto. if cacheEnabled { // get a fresh context which includes telemetry data and logger ctx, cancel = context.WithCancel(context.Background()) + defer cancel() } ctx = p.buildExecuteContext(ctx, req, logger) @@ -454,6 +455,7 @@ func (p *Plugin) executeForConnection(streamContext context.Context, req *proto. ConnectionName: connectionName, TtlSeconds: queryContext.CacheTTL, CallId: connectionCallId, + SortOrder: queryContext.SortOrder, StreamContext: streamContext, } // can we satisfy this request from the cache? diff --git a/plugin/query_context.go b/plugin/query_context.go index ca62919a..d859fdee 100644 --- a/plugin/query_context.go +++ b/plugin/query_context.go @@ -2,6 +2,7 @@ package plugin import ( "github.com/turbot/steampipe-plugin-sdk/v5/grpc/proto" + "log" ) /* @@ -21,6 +22,7 @@ type QueryContext struct { Limit *int64 CacheEnabled bool CacheTTL int64 + SortOrder []*proto.SortColumn } // NewQueryContext maps from a [proto.QueryContext] to a [plugin.QueryContext]. @@ -29,6 +31,7 @@ func NewQueryContext(p *proto.QueryContext, limit *proto.NullableInt, cacheEnabl UnsafeQuals: p.Quals, CacheEnabled: cacheEnabled, CacheTTL: cacheTTL, + SortOrder: p.SortOrder, } if limit != nil { q.Limit = &limit.Value @@ -43,6 +46,10 @@ func NewQueryContext(p *proto.QueryContext, limit *proto.NullableInt, cacheEnabl q.Columns = append(q.Columns, c) } } + + if len(q.SortOrder) > 0 { + log.Printf("[INFO] Sort order pushed down: (%d), %v:", len(q.SortOrder), q.SortOrder) + } return q } diff --git a/plugin/query_data.go b/plugin/query_data.go index 67d09bd7..a24e8fe7 100644 --- a/plugin/query_data.go +++ b/plugin/query_data.go @@ -660,7 +660,9 @@ func (d *QueryData) streamLeafListItem(ctx context.Context, items ...interface{} // set the parent item on the row data rd.parentItem = d.parentItem // NOTE: add the item as the hydrate data for the list call - rd.set(d.Table.List.namedHydrate.Name, item) + // we do not expect this to fail as we just created the rowdata + // (it only fails for duplicate hydrate func values) + _ = rd.set(d.Table.List.namedHydrate.Name, item) d.rowDataChan <- rd } @@ -693,6 +695,8 @@ func (d *QueryData) buildRowsAsync(ctx context.Context, rowChan chan *proto.Row, // start goroutine to read items from item chan and generate row data go func() { + // wait group used to ensure row ordering + var prevRowOrderingWg *sync.WaitGroup for { // wait for either an rowData or an error select { @@ -715,7 +719,6 @@ func (d *QueryData) buildRowsAsync(ctx context.Context, rowChan chan *proto.Row, //log.Printf("[INFO] buildRowsAsync acquire semaphore (%s)", d.connectionCallId) if err := rowSemaphore.Acquire(ctx, 1); err != nil { log.Printf("[INFO] SEMAPHORE ERROR %s", err) - // TODO KAI does this quit?? d.errorChan <- err return } @@ -724,7 +727,12 @@ func (d *QueryData) buildRowsAsync(ctx context.Context, rowChan chan *proto.Row, } } rowWg.Add(1) - d.buildRowAsync(ctx, rowData, rowChan, &rowWg, rowSemaphore) + + // increment ordering wg + rowData.orderingWg.Add(1) + d.buildRowAsync(ctx, rowData, rowChan, &rowWg, rowSemaphore, prevRowOrderingWg) + // update the wait group + prevRowOrderingWg = &rowData.orderingWg } } }() @@ -839,7 +847,7 @@ func (d *QueryData) streamError(err error) { // TODO KAI this seems to get called even after cancellation // execute necessary hydrate calls to populate row data -func (d *QueryData) buildRowAsync(ctx context.Context, rowData *rowData, rowChan chan *proto.Row, wg *sync.WaitGroup, sem *semaphore.Weighted) { +func (d *QueryData) buildRowAsync(ctx context.Context, rowData *rowData, rowChan chan *proto.Row, wg *sync.WaitGroup, sem *semaphore.Weighted, prevRowWg *sync.WaitGroup) { go func() { defer func() { if r := recover(); r != nil { @@ -867,7 +875,14 @@ func (d *QueryData) buildRowAsync(ctx context.Context, rowData *rowData, rowChan // NOTE: add the Steampipecontext data to the row d.addContextData(row, rowData) } + // if ordering is being applied, wait until prev row is ready to ensure ordering + if len(d.QueryContext.SortOrder) > 0 && prevRowWg != nil { + prevRowWg.Wait() + } + rowChan <- row + // close our own wait group + rowData.orderingWg.Done() } }() } diff --git a/plugin/row_data.go b/plugin/row_data.go index f6fb88f4..1868cc6a 100644 --- a/plugin/row_data.go +++ b/plugin/row_data.go @@ -35,6 +35,9 @@ type rowData struct { delayMapMut sync.RWMutex hydrateConcurrencyDelay map[string]*hydrateConcurrencyDelay + + // wait group to ensure correct row ordering + orderingWg sync.WaitGroup } // newRowData creates an empty rowData object diff --git a/plugin/table_schema.go b/plugin/table_schema.go index 3d634e20..fd759c90 100644 --- a/plugin/table_schema.go +++ b/plugin/table_schema.go @@ -61,6 +61,7 @@ func (t *Table) GetSchema() (*proto.TableSchema, error) { Name: column.Name, Type: column.Type, Description: column.Description, + SortOrder: column.Sort.toProto(), } if column.Hydrate != nil { columnDef.Hydrate = column.namedHydrate.Name diff --git a/query_cache/cache_request.go b/query_cache/cache_request.go index a47aad28..5595dd37 100644 --- a/query_cache/cache_request.go +++ b/query_cache/cache_request.go @@ -2,8 +2,11 @@ package query_cache import ( "context" - sdkproto "github.com/turbot/steampipe-plugin-sdk/v5/grpc/proto" + "fmt" + "strings" "time" + + sdkproto "github.com/turbot/steampipe-plugin-sdk/v5/grpc/proto" ) type CacheRequest struct { @@ -14,6 +17,7 @@ type CacheRequest struct { Limit int64 ConnectionName string TtlSeconds int64 + SortOrder []*sdkproto.SortColumn resultKeyRoot string pageCount int64 @@ -24,3 +28,11 @@ type CacheRequest struct { func (req *CacheRequest) ttl() time.Duration { return time.Duration(req.TtlSeconds) * time.Second } + +func (req *CacheRequest) sortOrderString() string { + var strs []string + for _, sortColumn := range req.SortOrder { + strs = append(strs, fmt.Sprintf("%s(%s)", sortColumn.Column, sortColumn.Order)) + } + return strings.Join(strs, "_") +} diff --git a/query_cache/index_bucket.go b/query_cache/index_bucket.go index 7def6938..4540b23e 100644 --- a/query_cache/index_bucket.go +++ b/query_cache/index_bucket.go @@ -26,7 +26,7 @@ func (b *IndexBucket) Get(req *CacheRequest, keyColumns map[string]*proto.KeyCol log.Printf("[TRACE] IndexBucket.Get %d items", len(b.Items)) for _, item := range b.Items { log.Printf("[TRACE] IndexBucket.Get key %s limit %d (%s)", item.Key, item.Limit, req.CallId) - satisfiedRequest := item.satisfiesRequest(req.Columns, req.Limit, req.QualMap, keyColumns) + satisfiedRequest := item.satisfiesRequest(req.Columns, req.Limit, req.QualMap, req.SortOrder, keyColumns) satisfiesTtl := item.satisfiesTtl(req.TtlSeconds) log.Printf("[TRACE] satisfiedRequest: %v, satisfiesTtl: %v ttlSec: %d (%s)", satisfiedRequest, satisfiesTtl, req.TtlSeconds, req.CallId) @@ -57,6 +57,7 @@ func (b *IndexBucket) AsProto() *proto.IndexBucket { Columns: item.Columns, Limit: item.Limit, PageCount: item.PageCount, + SortOrder: item.SortOrder, InsertionTime: timestamppb.New(item.InsertionTime), } } diff --git a/query_cache/index_item.go b/query_cache/index_item.go index dcfc3ec9..a0a67e8d 100644 --- a/query_cache/index_item.go +++ b/query_cache/index_item.go @@ -16,6 +16,7 @@ type IndexItem struct { Columns []string Key string Limit int64 + SortOrder []*proto.SortColumn Quals map[string]*proto.Quals InsertionTime time.Time PageCount int64 @@ -27,24 +28,26 @@ func NewIndexItem(req *CacheRequest) *IndexItem { Key: req.resultKeyRoot, Limit: req.Limit, Quals: req.QualMap, + SortOrder: req.SortOrder, InsertionTime: time.Now(), PageCount: req.pageCount, } } -func (i IndexItem) satisfiesRequest(columns []string, limit int64, qualMap map[string]*proto.Quals, keyColumns map[string]*proto.KeyColumn) bool { +func (i IndexItem) satisfiesRequest(columns []string, limit int64, qualMap map[string]*proto.Quals, sortOrder []*proto.SortColumn, keyColumns map[string]*proto.KeyColumn) bool { satisfiedColumns := i.satisfiesColumns(columns) satisfiesLimit := i.satisfiesLimit(limit) satisfiesQuals := i.satisfiesQuals(qualMap, keyColumns) + satisfiesSortOrder := i.satisfiesSortOrder(sortOrder) - log.Printf("[TRACE] IndexItem satisfiesRequest: satisfiedColumns %v satisfiesLimit %v satisfiesQuals %v", satisfiedColumns, satisfiesLimit, satisfiesQuals) - return satisfiedColumns && satisfiesLimit && satisfiesQuals + log.Printf("[TRACE] IndexItem satisfiesRequest: satisfiedColumns %v satisfiesLimit %v satisfiesQuals %v satisfiesSortOrder %v", satisfiedColumns, satisfiesLimit, satisfiesQuals, satisfiesSortOrder) + return satisfiedColumns && satisfiesLimit && satisfiesQuals && satisfiesSortOrder } func (i IndexItem) satisfiedByRequest(req *CacheRequest, keyColumns map[string]*proto.KeyColumn) bool { // make an index item for the request requestIndexItem := NewIndexItem(req) - return requestIndexItem.satisfiesRequest(i.Columns, i.Limit, i.Quals, keyColumns) + return requestIndexItem.satisfiesRequest(i.Columns, i.Limit, i.Quals, i.SortOrder, keyColumns) } // satisfiesColumns returns whether this index item satisfies the given columns @@ -151,5 +154,18 @@ func (i IndexItem) satisfiesTtl(ttlSeconds int64) bool { log.Printf("[TRACE] satisfiesTtl: cache ttl %d has NOT expired (%fs)", ttlSeconds, timeSince.Seconds()) return true +} +// does this item satisfy the sort order +// if an order was specified, this item must implement the exact same order +func (i IndexItem) satisfiesSortOrder(sortOrder []*proto.SortColumn) bool { + if len(sortOrder) != len(i.SortOrder) { + return false + } + for idx, o := range sortOrder { + if !o.Equals(i.SortOrder[idx]) { + return false + } + } + return true } diff --git a/query_cache/pending_index_item.go b/query_cache/pending_index_item.go index 5c3bbca1..a83bf066 100644 --- a/query_cache/pending_index_item.go +++ b/query_cache/pending_index_item.go @@ -82,7 +82,7 @@ func newPendingIndexItem(pendingSetRequest *setRequest) *pendingIndexItem { // SatisfiesRequest returns whether our index item satisfies the given cache request func (i *pendingIndexItem) SatisfiesRequest(req *CacheRequest, keyColumns map[string]*proto.KeyColumn) bool { - return i.item.satisfiesRequest(req.Columns, req.Limit, req.QualMap, keyColumns) + return i.item.satisfiesRequest(req.Columns, req.Limit, req.QualMap, req.SortOrder, keyColumns) } // SatisfiedByRequest returns whether our index item would be satisfied by the given cache request diff --git a/query_cache/query_cache.go b/query_cache/query_cache.go index 491c0fc1..fb3763a7 100644 --- a/query_cache/query_cache.go +++ b/query_cache/query_cache.go @@ -484,12 +484,13 @@ func (c *QueryCache) buildResultKey(req *CacheRequest) string { if len(req.QualMap) > 0 { qualString = fmt.Sprintf("_%s", c.formatQualMapForKey(req.QualMap)) } - str := c.sanitiseKey(fmt.Sprintf("%s_%s%s_%s_%d", + str := c.sanitiseKey(fmt.Sprintf("%s_%s%s_%s_%d_%s", req.ConnectionName, req.Table, qualString, strings.Join(req.Columns, ","), - req.Limit)) + req.Limit, + req.sortOrderString())) return str }