diff --git a/api/common/data_source.pb.go b/api/common/data_source.pb.go index 06ba1712..17d81717 100644 --- a/api/common/data_source.pb.go +++ b/api/common/data_source.pb.go @@ -34,6 +34,7 @@ const ( EDataSourceKind_MS_SQL_SERVER EDataSourceKind = 6 EDataSourceKind_GREENPLUM EDataSourceKind = 7 EDataSourceKind_ORACLE EDataSourceKind = 8 + EDataSourceKind_LOGGING EDataSourceKind = 9 ) // Enum value maps for EDataSourceKind. @@ -48,6 +49,7 @@ var ( 6: "MS_SQL_SERVER", 7: "GREENPLUM", 8: "ORACLE", + 9: "LOGGING", } EDataSourceKind_value = map[string]int32{ "DATA_SOURCE_KIND_UNSPECIFIED": 0, @@ -59,6 +61,7 @@ var ( "MS_SQL_SERVER": 6, "GREENPLUM": 7, "ORACLE": 8, + "LOGGING": 9, } ) @@ -855,7 +858,7 @@ var file_ydb_library_yql_providers_generic_connector_api_common_data_source_prot 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x9d, 0x01, 0x0a, + 0x73, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0xaa, 0x01, 0x0a, 0x0f, 0x45, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, @@ -865,15 +868,16 @@ var file_ydb_library_yql_providers_generic_connector_api_common_data_source_prot 0x42, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x53, 0x5f, 0x53, 0x51, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x50, 0x4c, 0x55, 0x4d, 0x10, 0x07, - 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x52, 0x41, 0x43, 0x4c, 0x45, 0x10, 0x08, 0x2a, 0x3b, 0x0a, 0x09, - 0x45, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, - 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, - 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x02, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x79, 0x64, 0x62, 0x2d, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x66, 0x71, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x2d, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x52, 0x41, 0x43, 0x4c, 0x45, 0x10, 0x08, 0x12, 0x0b, 0x0a, 0x07, + 0x4c, 0x4f, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x2a, 0x3b, 0x0a, 0x09, 0x45, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, + 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, + 0x48, 0x54, 0x54, 0x50, 0x10, 0x02, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x79, 0x64, 0x62, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2f, 0x66, 0x71, 0x2d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2d, 0x67, + 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/api/service/protos/connector.pb.go b/api/service/protos/connector.pb.go index 4e81578a..62e6550c 100644 --- a/api/service/protos/connector.pb.go +++ b/api/service/protos/connector.pb.go @@ -236,6 +236,8 @@ const ( TExpression_TArithmeticalExpression_MUL TExpression_TArithmeticalExpression_EOperation = 1 // left_value * right_value TExpression_TArithmeticalExpression_ADD TExpression_TArithmeticalExpression_EOperation = 2 // left_value + right_value TExpression_TArithmeticalExpression_SUB TExpression_TArithmeticalExpression_EOperation = 3 // left_value - right_value + TExpression_TArithmeticalExpression_DIV TExpression_TArithmeticalExpression_EOperation = 7 // left_value / right_value + TExpression_TArithmeticalExpression_MOD TExpression_TArithmeticalExpression_EOperation = 8 // left_value % right_value TExpression_TArithmeticalExpression_BIT_AND TExpression_TArithmeticalExpression_EOperation = 4 // left_value & right_value TExpression_TArithmeticalExpression_BIT_OR TExpression_TArithmeticalExpression_EOperation = 5 // left_value | right_value TExpression_TArithmeticalExpression_BIT_XOR TExpression_TArithmeticalExpression_EOperation = 6 // left_value ^ right_value @@ -248,6 +250,8 @@ var ( 1: "MUL", 2: "ADD", 3: "SUB", + 7: "DIV", + 8: "MOD", 4: "BIT_AND", 5: "BIT_OR", 6: "BIT_XOR", @@ -257,6 +261,8 @@ var ( "MUL": 1, "ADD": 2, "SUB": 3, + "DIV": 7, + "MOD": 8, "BIT_AND": 4, "BIT_OR": 5, "BIT_XOR": 6, @@ -301,6 +307,8 @@ const ( TPredicate_TComparison_NE TPredicate_TComparison_EOperation = 4 // "$column != value" TPredicate_TComparison_GE TPredicate_TComparison_EOperation = 5 // "$column >= value" TPredicate_TComparison_G TPredicate_TComparison_EOperation = 6 // "$column > value" + TPredicate_TComparison_IND TPredicate_TComparison_EOperation = 7 // "$column IS NOT DISTINCT value" + TPredicate_TComparison_ID TPredicate_TComparison_EOperation = 8 // "$column IS DISTINCT value" ) // Enum value maps for TPredicate_TComparison_EOperation. @@ -313,6 +321,8 @@ var ( 4: "NE", 5: "GE", 6: "G", + 7: "IND", + 8: "ID", } TPredicate_TComparison_EOperation_value = map[string]int32{ "COMPARISON_OPERATION_UNSPECIFIED": 0, @@ -322,6 +332,8 @@ var ( "NE": 4, "GE": 5, "G": 6, + "IND": 7, + "ID": 8, } ) @@ -349,7 +361,7 @@ func (x TPredicate_TComparison_EOperation) Number() protoreflect.EnumNumber { // Deprecated: Use TPredicate_TComparison_EOperation.Descriptor instead. func (TPredicate_TComparison_EOperation) EnumDescriptor() ([]byte, []int) { - return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 8, 0} + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 10, 0} } // TListTablesRequest requests the list of tables in a particular database of the data source @@ -1342,7 +1354,7 @@ type TContinuation_Description struct { func (*TContinuation_Description) isTContinuation_Payload() {} -// Expression with value +// Expression with value (value can be expression of any type) // Can be a column, a constant or a result of, for example, // some arithmetical operation type TExpression struct { @@ -1356,6 +1368,8 @@ type TExpression struct { // *TExpression_Column // *TExpression_ArithmeticalExpression // *TExpression_Null + // *TExpression_Coalesce + // *TExpression_If Payload isTExpression_Payload `protobuf_oneof:"payload"` } @@ -1426,6 +1440,20 @@ func (x *TExpression) GetNull() *TExpression_TNull { return nil } +func (x *TExpression) GetCoalesce() *TExpression_TCoalesce { + if x, ok := x.GetPayload().(*TExpression_Coalesce); ok { + return x.Coalesce + } + return nil +} + +func (x *TExpression) GetIf() *TExpression_TIf { + if x, ok := x.GetPayload().(*TExpression_If); ok { + return x.If + } + return nil +} + type isTExpression_Payload interface { isTExpression_Payload() } @@ -1448,6 +1476,14 @@ type TExpression_Null struct { Null *TExpression_TNull `protobuf:"bytes,4,opt,name=null,proto3,oneof"` } +type TExpression_Coalesce struct { + Coalesce *TExpression_TCoalesce `protobuf:"bytes,5,opt,name=coalesce,proto3,oneof"` +} + +type TExpression_If struct { + If *TExpression_TIf `protobuf:"bytes,6,opt,name=if,proto3,oneof"` +} + func (*TExpression_TypedValue) isTExpression_Payload() {} func (*TExpression_Column) isTExpression_Payload() {} @@ -1456,7 +1492,11 @@ func (*TExpression_ArithmeticalExpression) isTExpression_Payload() {} func (*TExpression_Null) isTExpression_Payload() {} -// Predicate +func (*TExpression_Coalesce) isTExpression_Payload() {} + +func (*TExpression_If) isTExpression_Payload() {} + +// Predicate (use this types only for bool expressions) type TPredicate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1473,6 +1513,9 @@ type TPredicate struct { // *TPredicate_IsNotNull // *TPredicate_Comparison // *TPredicate_BoolExpression + // *TPredicate_Coalesce + // *TPredicate_If + // *TPredicate_Regexp Payload isTPredicate_Payload `protobuf_oneof:"payload"` } @@ -1578,6 +1621,27 @@ func (x *TPredicate) GetBoolExpression() *TPredicate_TBoolExpression { return nil } +func (x *TPredicate) GetCoalesce() *TPredicate_TCoalesce { + if x, ok := x.GetPayload().(*TPredicate_Coalesce); ok { + return x.Coalesce + } + return nil +} + +func (x *TPredicate) GetIf() *TPredicate_TIf { + if x, ok := x.GetPayload().(*TPredicate_If); ok { + return x.If + } + return nil +} + +func (x *TPredicate) GetRegexp() *TPredicate_TRegexp { + if x, ok := x.GetPayload().(*TPredicate_Regexp); ok { + return x.Regexp + } + return nil +} + type isTPredicate_Payload interface { isTPredicate_Payload() } @@ -1618,6 +1682,18 @@ type TPredicate_BoolExpression struct { BoolExpression *TPredicate_TBoolExpression `protobuf:"bytes,9,opt,name=bool_expression,json=boolExpression,proto3,oneof"` } +type TPredicate_Coalesce struct { + Coalesce *TPredicate_TCoalesce `protobuf:"bytes,10,opt,name=coalesce,proto3,oneof"` +} + +type TPredicate_If struct { + If *TPredicate_TIf `protobuf:"bytes,11,opt,name=if,proto3,oneof"` +} + +type TPredicate_Regexp struct { + Regexp *TPredicate_TRegexp `protobuf:"bytes,12,opt,name=regexp,proto3,oneof"` +} + func (*TPredicate_Negation) isTPredicate_Payload() {} func (*TPredicate_Conjunction) isTPredicate_Payload() {} @@ -1636,6 +1712,12 @@ func (*TPredicate_Comparison) isTPredicate_Payload() {} func (*TPredicate_BoolExpression) isTPredicate_Payload() {} +func (*TPredicate_Coalesce) isTPredicate_Payload() {} + +func (*TPredicate_If) isTPredicate_Payload() {} + +func (*TPredicate_Regexp) isTPredicate_Payload() {} + // Special type to describe the result of any operation type TError struct { state protoimpl.MessageState @@ -2308,6 +2390,120 @@ func (x *TExpression_TArithmeticalExpression) GetRightValue() *TExpression { return nil } +// "COALESCE($expression_1, $expression_2, ..., $expression_n)" +type TExpression_TCoalesce struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Operands []*TExpression `protobuf:"bytes,1,rep,name=operands,proto3" json:"operands,omitempty"` +} + +func (x *TExpression_TCoalesce) Reset() { + *x = TExpression_TCoalesce{} + if protoimpl.UnsafeEnabled { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TExpression_TCoalesce) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TExpression_TCoalesce) ProtoMessage() {} + +func (x *TExpression_TCoalesce) ProtoReflect() protoreflect.Message { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TExpression_TCoalesce.ProtoReflect.Descriptor instead. +func (*TExpression_TCoalesce) Descriptor() ([]byte, []int) { + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{13, 1} +} + +func (x *TExpression_TCoalesce) GetOperands() []*TExpression { + if x != nil { + return x.Operands + } + return nil +} + +// "IF($predicate, $then_expression, $else_expression)" +// Example predicate: +// WHERE IF($A IS NOT NULL, $A, $B) + $B = 0 +type TExpression_TIf struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Predicate *TPredicate `protobuf:"bytes,1,opt,name=predicate,proto3" json:"predicate,omitempty"` + ThenExpression *TExpression `protobuf:"bytes,2,opt,name=then_expression,json=thenExpression,proto3" json:"then_expression,omitempty"` + ElseExpression *TExpression `protobuf:"bytes,3,opt,name=else_expression,json=elseExpression,proto3" json:"else_expression,omitempty"` +} + +func (x *TExpression_TIf) Reset() { + *x = TExpression_TIf{} + if protoimpl.UnsafeEnabled { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TExpression_TIf) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TExpression_TIf) ProtoMessage() {} + +func (x *TExpression_TIf) ProtoReflect() protoreflect.Message { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TExpression_TIf.ProtoReflect.Descriptor instead. +func (*TExpression_TIf) Descriptor() ([]byte, []int) { + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{13, 2} +} + +func (x *TExpression_TIf) GetPredicate() *TPredicate { + if x != nil { + return x.Predicate + } + return nil +} + +func (x *TExpression_TIf) GetThenExpression() *TExpression { + if x != nil { + return x.ThenExpression + } + return nil +} + +func (x *TExpression_TIf) GetElseExpression() *TExpression { + if x != nil { + return x.ElseExpression + } + return nil +} + type TExpression_TNull struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2317,7 +2513,7 @@ type TExpression_TNull struct { func (x *TExpression_TNull) Reset() { *x = TExpression_TNull{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[26] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2330,7 +2526,7 @@ func (x *TExpression_TNull) String() string { func (*TExpression_TNull) ProtoMessage() {} func (x *TExpression_TNull) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[26] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2343,7 +2539,7 @@ func (x *TExpression_TNull) ProtoReflect() protoreflect.Message { // Deprecated: Use TExpression_TNull.ProtoReflect.Descriptor instead. func (*TExpression_TNull) Descriptor() ([]byte, []int) { - return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{13, 1} + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{13, 3} } // NOT @@ -2358,7 +2554,7 @@ type TPredicate_TNegation struct { func (x *TPredicate_TNegation) Reset() { *x = TPredicate_TNegation{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[27] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2371,7 +2567,7 @@ func (x *TPredicate_TNegation) String() string { func (*TPredicate_TNegation) ProtoMessage() {} func (x *TPredicate_TNegation) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[27] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2406,7 +2602,7 @@ type TPredicate_TConjunction struct { func (x *TPredicate_TConjunction) Reset() { *x = TPredicate_TConjunction{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[28] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2419,7 +2615,7 @@ func (x *TPredicate_TConjunction) String() string { func (*TPredicate_TConjunction) ProtoMessage() {} func (x *TPredicate_TConjunction) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[28] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2454,7 +2650,7 @@ type TPredicate_TDisjunction struct { func (x *TPredicate_TDisjunction) Reset() { *x = TPredicate_TDisjunction{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[29] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2467,7 +2663,7 @@ func (x *TPredicate_TDisjunction) String() string { func (*TPredicate_TDisjunction) ProtoMessage() {} func (x *TPredicate_TDisjunction) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[29] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2490,6 +2686,120 @@ func (x *TPredicate_TDisjunction) GetOperands() []*TPredicate { return nil } +// "COALESCE($predicate_1, $predicate_2, ..., $predicate_n)" +type TPredicate_TCoalesce struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Operands []*TPredicate `protobuf:"bytes,1,rep,name=operands,proto3" json:"operands,omitempty"` +} + +func (x *TPredicate_TCoalesce) Reset() { + *x = TPredicate_TCoalesce{} + if protoimpl.UnsafeEnabled { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TPredicate_TCoalesce) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TPredicate_TCoalesce) ProtoMessage() {} + +func (x *TPredicate_TCoalesce) ProtoReflect() protoreflect.Message { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TPredicate_TCoalesce.ProtoReflect.Descriptor instead. +func (*TPredicate_TCoalesce) Descriptor() ([]byte, []int) { + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 3} +} + +func (x *TPredicate_TCoalesce) GetOperands() []*TPredicate { + if x != nil { + return x.Operands + } + return nil +} + +// "IF($predicate, $then_predicate, $else_predicate)" +// Example predicate: +// WHERE IF($A IS NOT NULL, $A + $B = 0, $B = 0) +type TPredicate_TIf struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Predicate *TPredicate `protobuf:"bytes,1,opt,name=predicate,proto3" json:"predicate,omitempty"` + ThenPredicate *TPredicate `protobuf:"bytes,2,opt,name=then_predicate,json=thenPredicate,proto3" json:"then_predicate,omitempty"` + ElsePredicate *TPredicate `protobuf:"bytes,3,opt,name=else_predicate,json=elsePredicate,proto3" json:"else_predicate,omitempty"` +} + +func (x *TPredicate_TIf) Reset() { + *x = TPredicate_TIf{} + if protoimpl.UnsafeEnabled { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TPredicate_TIf) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TPredicate_TIf) ProtoMessage() {} + +func (x *TPredicate_TIf) ProtoReflect() protoreflect.Message { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[33] + 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 TPredicate_TIf.ProtoReflect.Descriptor instead. +func (*TPredicate_TIf) Descriptor() ([]byte, []int) { + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 4} +} + +func (x *TPredicate_TIf) GetPredicate() *TPredicate { + if x != nil { + return x.Predicate + } + return nil +} + +func (x *TPredicate_TIf) GetThenPredicate() *TPredicate { + if x != nil { + return x.ThenPredicate + } + return nil +} + +func (x *TPredicate_TIf) GetElsePredicate() *TPredicate { + if x != nil { + return x.ElsePredicate + } + return nil +} + // "$column BETWEEN $least AND $greatest" type TPredicate_TBetween struct { state protoimpl.MessageState @@ -2504,7 +2814,7 @@ type TPredicate_TBetween struct { func (x *TPredicate_TBetween) Reset() { *x = TPredicate_TBetween{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[30] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2517,7 +2827,7 @@ func (x *TPredicate_TBetween) String() string { func (*TPredicate_TBetween) ProtoMessage() {} func (x *TPredicate_TBetween) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[30] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2530,7 +2840,7 @@ func (x *TPredicate_TBetween) ProtoReflect() protoreflect.Message { // Deprecated: Use TPredicate_TBetween.ProtoReflect.Descriptor instead. func (*TPredicate_TBetween) Descriptor() ([]byte, []int) { - return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 3} + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 5} } func (x *TPredicate_TBetween) GetValue() *TExpression { @@ -2567,7 +2877,7 @@ type TPredicate_TIn struct { func (x *TPredicate_TIn) Reset() { *x = TPredicate_TIn{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[31] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2580,7 +2890,7 @@ func (x *TPredicate_TIn) String() string { func (*TPredicate_TIn) ProtoMessage() {} func (x *TPredicate_TIn) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[31] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2593,7 +2903,7 @@ func (x *TPredicate_TIn) ProtoReflect() protoreflect.Message { // Deprecated: Use TPredicate_TIn.ProtoReflect.Descriptor instead. func (*TPredicate_TIn) Descriptor() ([]byte, []int) { - return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 4} + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 6} } func (x *TPredicate_TIn) GetValue() *TExpression { @@ -2622,7 +2932,7 @@ type TPredicate_TIsNull struct { func (x *TPredicate_TIsNull) Reset() { *x = TPredicate_TIsNull{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[32] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2635,7 +2945,7 @@ func (x *TPredicate_TIsNull) String() string { func (*TPredicate_TIsNull) ProtoMessage() {} func (x *TPredicate_TIsNull) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[32] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2648,7 +2958,7 @@ func (x *TPredicate_TIsNull) ProtoReflect() protoreflect.Message { // Deprecated: Use TPredicate_TIsNull.ProtoReflect.Descriptor instead. func (*TPredicate_TIsNull) Descriptor() ([]byte, []int) { - return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 5} + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 7} } func (x *TPredicate_TIsNull) GetValue() *TExpression { @@ -2671,7 +2981,7 @@ type TPredicate_TIsNotNull struct { func (x *TPredicate_TIsNotNull) Reset() { *x = TPredicate_TIsNotNull{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[33] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2684,7 +2994,7 @@ func (x *TPredicate_TIsNotNull) String() string { func (*TPredicate_TIsNotNull) ProtoMessage() {} func (x *TPredicate_TIsNotNull) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[33] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2697,7 +3007,7 @@ func (x *TPredicate_TIsNotNull) ProtoReflect() protoreflect.Message { // Deprecated: Use TPredicate_TIsNotNull.ProtoReflect.Descriptor instead. func (*TPredicate_TIsNotNull) Descriptor() ([]byte, []int) { - return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 6} + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 8} } func (x *TPredicate_TIsNotNull) GetValue() *TExpression { @@ -2720,7 +3030,7 @@ type TPredicate_TBoolExpression struct { func (x *TPredicate_TBoolExpression) Reset() { *x = TPredicate_TBoolExpression{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[34] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2733,7 +3043,7 @@ func (x *TPredicate_TBoolExpression) String() string { func (*TPredicate_TBoolExpression) ProtoMessage() {} func (x *TPredicate_TBoolExpression) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[34] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2746,7 +3056,7 @@ func (x *TPredicate_TBoolExpression) ProtoReflect() protoreflect.Message { // Deprecated: Use TPredicate_TBoolExpression.ProtoReflect.Descriptor instead. func (*TPredicate_TBoolExpression) Descriptor() ([]byte, []int) { - return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 7} + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 9} } func (x *TPredicate_TBoolExpression) GetValue() *TExpression { @@ -2770,7 +3080,7 @@ type TPredicate_TComparison struct { func (x *TPredicate_TComparison) Reset() { *x = TPredicate_TComparison{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[35] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2783,7 +3093,7 @@ func (x *TPredicate_TComparison) String() string { func (*TPredicate_TComparison) ProtoMessage() {} func (x *TPredicate_TComparison) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[35] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2796,7 +3106,7 @@ func (x *TPredicate_TComparison) ProtoReflect() protoreflect.Message { // Deprecated: Use TPredicate_TComparison.ProtoReflect.Descriptor instead. func (*TPredicate_TComparison) Descriptor() ([]byte, []int) { - return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 8} + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 10} } func (x *TPredicate_TComparison) GetOperation() TPredicate_TComparison_EOperation { @@ -2820,6 +3130,62 @@ func (x *TPredicate_TComparison) GetRightValue() *TExpression { return nil } +// "$column REGEXP $pattern" +type TPredicate_TRegexp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value *TExpression `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Pattern *TExpression `protobuf:"bytes,2,opt,name=pattern,proto3" json:"pattern,omitempty"` +} + +func (x *TPredicate_TRegexp) Reset() { + *x = TPredicate_TRegexp{} + if protoimpl.UnsafeEnabled { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TPredicate_TRegexp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TPredicate_TRegexp) ProtoMessage() {} + +func (x *TPredicate_TRegexp) ProtoReflect() protoreflect.Message { + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[40] + 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 TPredicate_TRegexp.ProtoReflect.Descriptor instead. +func (*TPredicate_TRegexp) Descriptor() ([]byte, []int) { + return file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDescGZIP(), []int{14, 11} +} + +func (x *TPredicate_TRegexp) GetValue() *TExpression { + if x != nil { + return x.Value + } + return nil +} + +func (x *TPredicate_TRegexp) GetPattern() *TExpression { + if x != nil { + return x.Pattern + } + return nil +} + type TAst_TList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2831,7 +3197,7 @@ type TAst_TList struct { func (x *TAst_TList) Reset() { *x = TAst_TList{} if protoimpl.UnsafeEnabled { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[36] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2844,7 +3210,7 @@ func (x *TAst_TList) String() string { func (*TAst_TList) ProtoMessage() {} func (x *TAst_TList) ProtoReflect() protoreflect.Message { - mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[36] + mi := &file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3103,7 +3469,7 @@ var file_ydb_library_yql_providers_generic_connector_api_service_protos_connecto 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, - 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x9f, 0x05, 0x0a, 0x0b, 0x54, 0x45, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xe2, 0x08, 0x0a, 0x0b, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x59, 0x64, 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, @@ -3120,128 +3486,22 @@ var file_ydb_library_yql_providers_generic_connector_api_service_protos_connecto 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, - 0x4e, 0x75, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x1a, 0xf8, 0x02, 0x0a, - 0x17, 0x54, 0x41, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x4e, 0x59, - 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, - 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, - 0x41, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0a, - 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6c, 0x65, 0x66, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x42, - 0x0a, 0x0b, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x73, 0x0a, 0x0a, 0x45, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x24, 0x0a, 0x20, 0x45, 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, - 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x55, 0x4c, 0x10, 0x01, 0x12, - 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x55, 0x42, 0x10, - 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x49, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x10, 0x04, 0x12, 0x0a, - 0x0a, 0x06, 0x42, 0x49, 0x54, 0x5f, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x49, - 0x54, 0x5f, 0x58, 0x4f, 0x52, 0x10, 0x06, 0x1a, 0x07, 0x0a, 0x05, 0x54, 0x4e, 0x75, 0x6c, 0x6c, - 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x85, 0x0e, 0x0a, 0x0a, - 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x6e, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x4e, - 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, - 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, - 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6a, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x4e, 0x59, 0x71, 0x6c, - 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, - 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x43, 0x6f, 0x6e, - 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6a, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x6a, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x4e, - 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, - 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, - 0x44, 0x69, 0x73, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x64, - 0x69, 0x73, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x07, 0x62, 0x65, - 0x74, 0x77, 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x4e, 0x59, - 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, - 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x42, - 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, - 0x6e, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, - 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, - 0x54, 0x49, 0x6e, 0x48, 0x00, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x43, 0x0a, 0x07, 0x69, 0x73, 0x5f, - 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x4e, 0x59, 0x71, - 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, - 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x49, 0x73, - 0x4e, 0x75, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x06, 0x69, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x4d, - 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x49, 0x73, 0x4e, 0x6f, 0x74, 0x4e, 0x75, 0x6c, 0x6c, - 0x48, 0x00, 0x52, 0x09, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x4e, 0x0a, - 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x61, 0x74, 0x65, 0x2e, 0x54, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, - 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, - 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x47, 0x0a, 0x09, 0x54, 0x4e, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, - 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, - 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x72, - 0x61, 0x6e, 0x64, 0x1a, 0x4c, 0x0a, 0x0c, 0x54, 0x43, 0x6f, 0x6e, 0x6a, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, - 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, - 0x73, 0x1a, 0x4c, 0x0a, 0x0c, 0x54, 0x44, 0x69, 0x73, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x3c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x1a, - 0xbb, 0x01, 0x0a, 0x08, 0x54, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, - 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, - 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x12, 0x3d, - 0x0a, 0x08, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x73, 0x0a, - 0x03, 0x54, 0x49, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x0a, - 0x03, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, - 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, - 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x73, - 0x65, 0x74, 0x1a, 0x42, 0x0a, 0x07, 0x54, 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x37, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, - 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, - 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x45, 0x0a, 0x0a, 0x54, 0x49, 0x73, 0x4e, 0x6f, 0x74, - 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, + 0x4e, 0x75, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x12, 0x49, 0x0a, 0x08, + 0x63, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x54, 0x43, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x48, 0x00, 0x52, 0x08, 0x63, + 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, - 0x0f, 0x54, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x49, 0x66, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, + 0x1a, 0x8b, 0x03, 0x0a, 0x17, 0x54, 0x41, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, + 0x61, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x09, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x44, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xcc, 0x02, 0x0a, 0x0b, 0x54, 0x43, - 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x09, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x4e, - 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, - 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, - 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x2e, 0x45, 0x4f, 0x70, 0x65, 0x72, + 0x6f, 0x6e, 0x2e, 0x54, 0x41, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, @@ -3251,13 +3511,187 @@ var file_ydb_library_yql_providers_generic_connector_api_service_protos_connecto 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x72, 0x69, 0x67, 0x68, - 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x60, 0x0a, 0x0a, 0x45, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, - 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x4c, 0x10, - 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x45, 0x51, 0x10, - 0x03, 0x12, 0x06, 0x0a, 0x02, 0x4e, 0x45, 0x10, 0x04, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x45, 0x10, - 0x05, 0x12, 0x05, 0x0a, 0x01, 0x47, 0x10, 0x06, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x0a, 0x45, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x20, 0x45, 0x58, 0x50, 0x52, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4d, + 0x55, 0x4c, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x02, 0x12, 0x07, 0x0a, + 0x03, 0x53, 0x55, 0x42, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x49, 0x56, 0x10, 0x07, 0x12, + 0x07, 0x0a, 0x03, 0x4d, 0x4f, 0x44, 0x10, 0x08, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x49, 0x54, 0x5f, + 0x41, 0x4e, 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x49, 0x54, 0x5f, 0x4f, 0x52, 0x10, + 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x49, 0x54, 0x5f, 0x58, 0x4f, 0x52, 0x10, 0x06, 0x1a, 0x4a, + 0x0a, 0x09, 0x54, 0x43, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, + 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x1a, 0xdd, 0x01, 0x0a, 0x03, 0x54, + 0x49, 0x66, 0x12, 0x3e, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x74, 0x68, 0x65, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, + 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, + 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, + 0x74, 0x68, 0x65, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, + 0x0a, 0x0f, 0x65, 0x6c, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x65, 0x6c, 0x73, 0x65, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x07, 0x0a, 0x05, 0x54, 0x4e, + 0x75, 0x6c, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x82, + 0x13, 0x0a, 0x0a, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, + 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x2e, 0x54, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x6e, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6a, 0x75, + 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x4e, + 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, + 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, + 0x43, 0x6f, 0x6e, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x0b, 0x64, 0x69, + 0x73, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x2e, 0x54, 0x44, 0x69, 0x73, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0b, 0x64, 0x69, 0x73, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, + 0x07, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x2e, 0x54, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x62, 0x65, 0x74, + 0x77, 0x65, 0x65, 0x6e, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x2e, 0x54, 0x49, 0x6e, 0x48, 0x00, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x43, 0x0a, 0x07, + 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, + 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, + 0x54, 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x06, 0x69, 0x73, 0x4e, 0x75, 0x6c, + 0x6c, 0x12, 0x4d, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x49, 0x73, 0x4e, 0x6f, 0x74, 0x4e, + 0x75, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x09, 0x69, 0x73, 0x4e, 0x6f, 0x74, 0x4e, 0x75, 0x6c, 0x6c, + 0x12, 0x4e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, + 0x12, 0x5b, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x4e, 0x59, 0x71, 0x6c, + 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, + 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x42, 0x6f, 0x6f, + 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x62, + 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, + 0x08, 0x63, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x2e, 0x54, 0x43, 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x48, 0x00, 0x52, 0x08, 0x63, + 0x6f, 0x61, 0x6c, 0x65, 0x73, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x02, 0x69, 0x66, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x49, 0x66, 0x48, 0x00, 0x52, 0x02, 0x69, 0x66, 0x12, + 0x42, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x2e, 0x54, 0x52, 0x65, 0x67, 0x65, 0x78, 0x70, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x67, + 0x65, 0x78, 0x70, 0x1a, 0x47, 0x0a, 0x09, 0x54, 0x4e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x1a, 0x4c, 0x0a, 0x0c, + 0x54, 0x43, 0x6f, 0x6e, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x1a, 0x4c, 0x0a, 0x0c, 0x54, 0x44, + 0x69, 0x73, 0x6a, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x08, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, + 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, + 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x08, + 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, 0x73, 0x1a, 0x49, 0x0a, 0x09, 0x54, 0x43, 0x6f, 0x61, + 0x6c, 0x65, 0x73, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, + 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x6e, 0x64, 0x73, 0x1a, 0xd7, 0x01, 0x0a, 0x03, 0x54, 0x49, 0x66, 0x12, 0x3e, 0x0a, 0x09, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, + 0x52, 0x09, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x74, + 0x68, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0d, 0x74, 0x68, 0x65, 0x6e, 0x50, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x61, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x0e, 0x65, 0x6c, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x4e, + 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, + 0x41, 0x70, 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0d, + 0x65, 0x6c, 0x73, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x1a, 0xbb, 0x01, + 0x0a, 0x08, 0x54, 0x42, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, + 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, + 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x08, + 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x08, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x73, 0x0a, 0x03, 0x54, + 0x49, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x33, 0x0a, 0x03, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, + 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, + 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x73, 0x65, 0x74, + 0x1a, 0x42, 0x0a, 0x07, 0x54, 0x49, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x37, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, + 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, + 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x45, 0x0a, 0x0a, 0x54, 0x49, 0x73, 0x4e, 0x6f, 0x74, 0x4e, 0x75, + 0x6c, 0x6c, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, 0x0f, 0x54, + 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, + 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xdd, 0x02, 0x0a, 0x0b, 0x54, 0x43, 0x6f, 0x6d, + 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x4e, 0x59, 0x71, + 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, + 0x69, 0x2e, 0x54, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, 0x54, 0x43, 0x6f, + 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x2e, 0x45, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, + 0x0a, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6c, 0x65, 0x66, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x42, 0x0a, 0x0b, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x72, 0x69, 0x67, 0x68, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x71, 0x0a, 0x0a, 0x45, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x4d, 0x50, 0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, + 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x05, 0x0a, 0x01, 0x4c, 0x10, 0x01, 0x12, + 0x06, 0x0a, 0x02, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x06, 0x0a, 0x02, 0x45, 0x51, 0x10, 0x03, 0x12, + 0x06, 0x0a, 0x02, 0x4e, 0x45, 0x10, 0x04, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x45, 0x10, 0x05, 0x12, + 0x05, 0x0a, 0x01, 0x47, 0x10, 0x06, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x44, 0x10, 0x07, 0x12, + 0x06, 0x0a, 0x02, 0x49, 0x44, 0x10, 0x08, 0x1a, 0x7f, 0x0a, 0x07, 0x54, 0x52, 0x65, 0x67, 0x65, + 0x78, 0x70, 0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x4e, 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x4e, 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x70, + 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x4e, + 0x59, 0x71, 0x6c, 0x2e, 0x4e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x4e, + 0x41, 0x70, 0x69, 0x2e, 0x54, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x54, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x59, 0x64, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x49, 0x64, 0x73, 0x2e, 0x53, @@ -3302,7 +3736,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } var file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes = make([]protoimpl.MessageInfo, 42) var file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_goTypes = []interface{}{ (EDateTimeFormat)(0), // 0: NYql.NConnector.NApi.EDateTimeFormat (TReadSplitsRequest_EMode)(0), // 1: NYql.NConnector.NApi.TReadSplitsRequest.EMode @@ -3336,44 +3770,49 @@ var file_ydb_library_yql_providers_generic_connector_api_service_protos_connecto (*TReadSplitsResponse_TStats)(nil), // 29: NYql.NConnector.NApi.TReadSplitsResponse.TStats (*TReadSplitsResponse_TColumnSet_TColumn)(nil), // 30: NYql.NConnector.NApi.TReadSplitsResponse.TColumnSet.TColumn (*TExpression_TArithmeticalExpression)(nil), // 31: NYql.NConnector.NApi.TExpression.TArithmeticalExpression - (*TExpression_TNull)(nil), // 32: NYql.NConnector.NApi.TExpression.TNull - (*TPredicate_TNegation)(nil), // 33: NYql.NConnector.NApi.TPredicate.TNegation - (*TPredicate_TConjunction)(nil), // 34: NYql.NConnector.NApi.TPredicate.TConjunction - (*TPredicate_TDisjunction)(nil), // 35: NYql.NConnector.NApi.TPredicate.TDisjunction - (*TPredicate_TBetween)(nil), // 36: NYql.NConnector.NApi.TPredicate.TBetween - (*TPredicate_TIn)(nil), // 37: NYql.NConnector.NApi.TPredicate.TIn - (*TPredicate_TIsNull)(nil), // 38: NYql.NConnector.NApi.TPredicate.TIsNull - (*TPredicate_TIsNotNull)(nil), // 39: NYql.NConnector.NApi.TPredicate.TIsNotNull - (*TPredicate_TBoolExpression)(nil), // 40: NYql.NConnector.NApi.TPredicate.TBoolExpression - (*TPredicate_TComparison)(nil), // 41: NYql.NConnector.NApi.TPredicate.TComparison - (*TAst_TList)(nil), // 42: NYql.NConnector.NApi.TAst.TList - (*common.TDataSourceInstance)(nil), // 43: NYql.NConnector.NApi.TDataSourceInstance - (*Ydb.Column)(nil), // 44: Ydb.Column - (*Ydb.TypedValue)(nil), // 45: Ydb.TypedValue - (Ydb.StatusIds_StatusCode)(0), // 46: Ydb.StatusIds.StatusCode - (*Ydb_Issue.IssueMessage)(nil), // 47: Ydb.Issue.IssueMessage - (*Ydb.Value)(nil), // 48: Ydb.Value + (*TExpression_TCoalesce)(nil), // 32: NYql.NConnector.NApi.TExpression.TCoalesce + (*TExpression_TIf)(nil), // 33: NYql.NConnector.NApi.TExpression.TIf + (*TExpression_TNull)(nil), // 34: NYql.NConnector.NApi.TExpression.TNull + (*TPredicate_TNegation)(nil), // 35: NYql.NConnector.NApi.TPredicate.TNegation + (*TPredicate_TConjunction)(nil), // 36: NYql.NConnector.NApi.TPredicate.TConjunction + (*TPredicate_TDisjunction)(nil), // 37: NYql.NConnector.NApi.TPredicate.TDisjunction + (*TPredicate_TCoalesce)(nil), // 38: NYql.NConnector.NApi.TPredicate.TCoalesce + (*TPredicate_TIf)(nil), // 39: NYql.NConnector.NApi.TPredicate.TIf + (*TPredicate_TBetween)(nil), // 40: NYql.NConnector.NApi.TPredicate.TBetween + (*TPredicate_TIn)(nil), // 41: NYql.NConnector.NApi.TPredicate.TIn + (*TPredicate_TIsNull)(nil), // 42: NYql.NConnector.NApi.TPredicate.TIsNull + (*TPredicate_TIsNotNull)(nil), // 43: NYql.NConnector.NApi.TPredicate.TIsNotNull + (*TPredicate_TBoolExpression)(nil), // 44: NYql.NConnector.NApi.TPredicate.TBoolExpression + (*TPredicate_TComparison)(nil), // 45: NYql.NConnector.NApi.TPredicate.TComparison + (*TPredicate_TRegexp)(nil), // 46: NYql.NConnector.NApi.TPredicate.TRegexp + (*TAst_TList)(nil), // 47: NYql.NConnector.NApi.TAst.TList + (*common.TDataSourceInstance)(nil), // 48: NYql.NConnector.NApi.TDataSourceInstance + (*Ydb.Column)(nil), // 49: Ydb.Column + (*Ydb.TypedValue)(nil), // 50: Ydb.TypedValue + (Ydb.StatusIds_StatusCode)(0), // 51: Ydb.StatusIds.StatusCode + (*Ydb_Issue.IssueMessage)(nil), // 52: Ydb.Issue.IssueMessage + (*Ydb.Value)(nil), // 53: Ydb.Value } var file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_depIdxs = []int32{ - 43, // 0: NYql.NConnector.NApi.TListTablesRequest.data_source_instance:type_name -> NYql.NConnector.NApi.TDataSourceInstance + 48, // 0: NYql.NConnector.NApi.TListTablesRequest.data_source_instance:type_name -> NYql.NConnector.NApi.TDataSourceInstance 21, // 1: NYql.NConnector.NApi.TListTablesResponse.error:type_name -> NYql.NConnector.NApi.TError - 43, // 2: NYql.NConnector.NApi.TDescribeTableRequest.data_source_instance:type_name -> NYql.NConnector.NApi.TDataSourceInstance + 48, // 2: NYql.NConnector.NApi.TDescribeTableRequest.data_source_instance:type_name -> NYql.NConnector.NApi.TDataSourceInstance 9, // 3: NYql.NConnector.NApi.TDescribeTableRequest.type_mapping_settings:type_name -> NYql.NConnector.NApi.TTypeMappingSettings 0, // 4: NYql.NConnector.NApi.TTypeMappingSettings.date_time_format:type_name -> NYql.NConnector.NApi.EDateTimeFormat 11, // 5: NYql.NConnector.NApi.TDescribeTableResponse.schema:type_name -> NYql.NConnector.NApi.TSchema 21, // 6: NYql.NConnector.NApi.TDescribeTableResponse.error:type_name -> NYql.NConnector.NApi.TError - 44, // 7: NYql.NConnector.NApi.TSchema.columns:type_name -> Ydb.Column + 49, // 7: NYql.NConnector.NApi.TSchema.columns:type_name -> Ydb.Column 14, // 8: NYql.NConnector.NApi.TListSplitsRequest.selects:type_name -> NYql.NConnector.NApi.TSelect 15, // 9: NYql.NConnector.NApi.TListSplitsResponse.splits:type_name -> NYql.NConnector.NApi.TSplit 21, // 10: NYql.NConnector.NApi.TListSplitsResponse.error:type_name -> NYql.NConnector.NApi.TError - 43, // 11: NYql.NConnector.NApi.TSelect.data_source_instance:type_name -> NYql.NConnector.NApi.TDataSourceInstance + 48, // 11: NYql.NConnector.NApi.TSelect.data_source_instance:type_name -> NYql.NConnector.NApi.TDataSourceInstance 23, // 12: NYql.NConnector.NApi.TSelect.what:type_name -> NYql.NConnector.NApi.TSelect.TWhat 24, // 13: NYql.NConnector.NApi.TSelect.from:type_name -> NYql.NConnector.NApi.TSelect.TFrom 25, // 14: NYql.NConnector.NApi.TSelect.where:type_name -> NYql.NConnector.NApi.TSelect.TWhere 26, // 15: NYql.NConnector.NApi.TSelect.limit:type_name -> NYql.NConnector.NApi.TSelect.TLimit 11, // 16: NYql.NConnector.NApi.TSelect.predefined_schema:type_name -> NYql.NConnector.NApi.TSchema 14, // 17: NYql.NConnector.NApi.TSplit.select:type_name -> NYql.NConnector.NApi.TSelect - 43, // 18: NYql.NConnector.NApi.TReadSplitsRequest.data_source_instance:type_name -> NYql.NConnector.NApi.TDataSourceInstance + 48, // 18: NYql.NConnector.NApi.TReadSplitsRequest.data_source_instance:type_name -> NYql.NConnector.NApi.TDataSourceInstance 15, // 19: NYql.NConnector.NApi.TReadSplitsRequest.splits:type_name -> NYql.NConnector.NApi.TSplit 1, // 20: NYql.NConnector.NApi.TReadSplitsRequest.mode:type_name -> NYql.NConnector.NApi.TReadSplitsRequest.EMode 2, // 21: NYql.NConnector.NApi.TReadSplitsRequest.format:type_name -> NYql.NConnector.NApi.TReadSplitsRequest.EFormat @@ -3383,51 +3822,66 @@ var file_ydb_library_yql_providers_generic_connector_api_service_protos_connecto 18, // 25: NYql.NConnector.NApi.TReadSplitsResponse.continuation:type_name -> NYql.NConnector.NApi.TContinuation 29, // 26: NYql.NConnector.NApi.TReadSplitsResponse.stats:type_name -> NYql.NConnector.NApi.TReadSplitsResponse.TStats 21, // 27: NYql.NConnector.NApi.TReadSplitsResponse.error:type_name -> NYql.NConnector.NApi.TError - 45, // 28: NYql.NConnector.NApi.TExpression.typed_value:type_name -> Ydb.TypedValue + 50, // 28: NYql.NConnector.NApi.TExpression.typed_value:type_name -> Ydb.TypedValue 31, // 29: NYql.NConnector.NApi.TExpression.arithmetical_expression:type_name -> NYql.NConnector.NApi.TExpression.TArithmeticalExpression - 32, // 30: NYql.NConnector.NApi.TExpression.null:type_name -> NYql.NConnector.NApi.TExpression.TNull - 33, // 31: NYql.NConnector.NApi.TPredicate.negation:type_name -> NYql.NConnector.NApi.TPredicate.TNegation - 34, // 32: NYql.NConnector.NApi.TPredicate.conjunction:type_name -> NYql.NConnector.NApi.TPredicate.TConjunction - 35, // 33: NYql.NConnector.NApi.TPredicate.disjunction:type_name -> NYql.NConnector.NApi.TPredicate.TDisjunction - 36, // 34: NYql.NConnector.NApi.TPredicate.between:type_name -> NYql.NConnector.NApi.TPredicate.TBetween - 37, // 35: NYql.NConnector.NApi.TPredicate.in:type_name -> NYql.NConnector.NApi.TPredicate.TIn - 38, // 36: NYql.NConnector.NApi.TPredicate.is_null:type_name -> NYql.NConnector.NApi.TPredicate.TIsNull - 39, // 37: NYql.NConnector.NApi.TPredicate.is_not_null:type_name -> NYql.NConnector.NApi.TPredicate.TIsNotNull - 41, // 38: NYql.NConnector.NApi.TPredicate.comparison:type_name -> NYql.NConnector.NApi.TPredicate.TComparison - 40, // 39: NYql.NConnector.NApi.TPredicate.bool_expression:type_name -> NYql.NConnector.NApi.TPredicate.TBoolExpression - 46, // 40: NYql.NConnector.NApi.TError.status:type_name -> Ydb.StatusIds.StatusCode - 47, // 41: NYql.NConnector.NApi.TError.issues:type_name -> Ydb.Issue.IssueMessage - 42, // 42: NYql.NConnector.NApi.TAst.list:type_name -> NYql.NConnector.NApi.TAst.TList - 27, // 43: NYql.NConnector.NApi.TSelect.TWhat.items:type_name -> NYql.NConnector.NApi.TSelect.TWhat.TItem - 20, // 44: NYql.NConnector.NApi.TSelect.TWhere.filter_typed:type_name -> NYql.NConnector.NApi.TPredicate - 22, // 45: NYql.NConnector.NApi.TSelect.TWhere.filter_raw:type_name -> NYql.NConnector.NApi.TAst - 44, // 46: NYql.NConnector.NApi.TSelect.TWhat.TItem.column:type_name -> Ydb.Column - 44, // 47: NYql.NConnector.NApi.TReadSplitsResponse.TColumnSet.meta:type_name -> Ydb.Column - 30, // 48: NYql.NConnector.NApi.TReadSplitsResponse.TColumnSet.data:type_name -> NYql.NConnector.NApi.TReadSplitsResponse.TColumnSet.TColumn - 48, // 49: NYql.NConnector.NApi.TReadSplitsResponse.TColumnSet.TColumn.data:type_name -> Ydb.Value - 4, // 50: NYql.NConnector.NApi.TExpression.TArithmeticalExpression.operation:type_name -> NYql.NConnector.NApi.TExpression.TArithmeticalExpression.EOperation - 19, // 51: NYql.NConnector.NApi.TExpression.TArithmeticalExpression.left_value:type_name -> NYql.NConnector.NApi.TExpression - 19, // 52: NYql.NConnector.NApi.TExpression.TArithmeticalExpression.right_value:type_name -> NYql.NConnector.NApi.TExpression - 20, // 53: NYql.NConnector.NApi.TPredicate.TNegation.operand:type_name -> NYql.NConnector.NApi.TPredicate - 20, // 54: NYql.NConnector.NApi.TPredicate.TConjunction.operands:type_name -> NYql.NConnector.NApi.TPredicate - 20, // 55: NYql.NConnector.NApi.TPredicate.TDisjunction.operands:type_name -> NYql.NConnector.NApi.TPredicate - 19, // 56: NYql.NConnector.NApi.TPredicate.TBetween.value:type_name -> NYql.NConnector.NApi.TExpression - 19, // 57: NYql.NConnector.NApi.TPredicate.TBetween.least:type_name -> NYql.NConnector.NApi.TExpression - 19, // 58: NYql.NConnector.NApi.TPredicate.TBetween.greatest:type_name -> NYql.NConnector.NApi.TExpression - 19, // 59: NYql.NConnector.NApi.TPredicate.TIn.value:type_name -> NYql.NConnector.NApi.TExpression - 19, // 60: NYql.NConnector.NApi.TPredicate.TIn.set:type_name -> NYql.NConnector.NApi.TExpression - 19, // 61: NYql.NConnector.NApi.TPredicate.TIsNull.value:type_name -> NYql.NConnector.NApi.TExpression - 19, // 62: NYql.NConnector.NApi.TPredicate.TIsNotNull.value:type_name -> NYql.NConnector.NApi.TExpression - 19, // 63: NYql.NConnector.NApi.TPredicate.TBoolExpression.value:type_name -> NYql.NConnector.NApi.TExpression - 5, // 64: NYql.NConnector.NApi.TPredicate.TComparison.operation:type_name -> NYql.NConnector.NApi.TPredicate.TComparison.EOperation - 19, // 65: NYql.NConnector.NApi.TPredicate.TComparison.left_value:type_name -> NYql.NConnector.NApi.TExpression - 19, // 66: NYql.NConnector.NApi.TPredicate.TComparison.right_value:type_name -> NYql.NConnector.NApi.TExpression - 22, // 67: NYql.NConnector.NApi.TAst.TList.children:type_name -> NYql.NConnector.NApi.TAst - 68, // [68:68] is the sub-list for method output_type - 68, // [68:68] is the sub-list for method input_type - 68, // [68:68] is the sub-list for extension type_name - 68, // [68:68] is the sub-list for extension extendee - 0, // [0:68] is the sub-list for field type_name + 34, // 30: NYql.NConnector.NApi.TExpression.null:type_name -> NYql.NConnector.NApi.TExpression.TNull + 32, // 31: NYql.NConnector.NApi.TExpression.coalesce:type_name -> NYql.NConnector.NApi.TExpression.TCoalesce + 33, // 32: NYql.NConnector.NApi.TExpression.if:type_name -> NYql.NConnector.NApi.TExpression.TIf + 35, // 33: NYql.NConnector.NApi.TPredicate.negation:type_name -> NYql.NConnector.NApi.TPredicate.TNegation + 36, // 34: NYql.NConnector.NApi.TPredicate.conjunction:type_name -> NYql.NConnector.NApi.TPredicate.TConjunction + 37, // 35: NYql.NConnector.NApi.TPredicate.disjunction:type_name -> NYql.NConnector.NApi.TPredicate.TDisjunction + 40, // 36: NYql.NConnector.NApi.TPredicate.between:type_name -> NYql.NConnector.NApi.TPredicate.TBetween + 41, // 37: NYql.NConnector.NApi.TPredicate.in:type_name -> NYql.NConnector.NApi.TPredicate.TIn + 42, // 38: NYql.NConnector.NApi.TPredicate.is_null:type_name -> NYql.NConnector.NApi.TPredicate.TIsNull + 43, // 39: NYql.NConnector.NApi.TPredicate.is_not_null:type_name -> NYql.NConnector.NApi.TPredicate.TIsNotNull + 45, // 40: NYql.NConnector.NApi.TPredicate.comparison:type_name -> NYql.NConnector.NApi.TPredicate.TComparison + 44, // 41: NYql.NConnector.NApi.TPredicate.bool_expression:type_name -> NYql.NConnector.NApi.TPredicate.TBoolExpression + 38, // 42: NYql.NConnector.NApi.TPredicate.coalesce:type_name -> NYql.NConnector.NApi.TPredicate.TCoalesce + 39, // 43: NYql.NConnector.NApi.TPredicate.if:type_name -> NYql.NConnector.NApi.TPredicate.TIf + 46, // 44: NYql.NConnector.NApi.TPredicate.regexp:type_name -> NYql.NConnector.NApi.TPredicate.TRegexp + 51, // 45: NYql.NConnector.NApi.TError.status:type_name -> Ydb.StatusIds.StatusCode + 52, // 46: NYql.NConnector.NApi.TError.issues:type_name -> Ydb.Issue.IssueMessage + 47, // 47: NYql.NConnector.NApi.TAst.list:type_name -> NYql.NConnector.NApi.TAst.TList + 27, // 48: NYql.NConnector.NApi.TSelect.TWhat.items:type_name -> NYql.NConnector.NApi.TSelect.TWhat.TItem + 20, // 49: NYql.NConnector.NApi.TSelect.TWhere.filter_typed:type_name -> NYql.NConnector.NApi.TPredicate + 22, // 50: NYql.NConnector.NApi.TSelect.TWhere.filter_raw:type_name -> NYql.NConnector.NApi.TAst + 49, // 51: NYql.NConnector.NApi.TSelect.TWhat.TItem.column:type_name -> Ydb.Column + 49, // 52: NYql.NConnector.NApi.TReadSplitsResponse.TColumnSet.meta:type_name -> Ydb.Column + 30, // 53: NYql.NConnector.NApi.TReadSplitsResponse.TColumnSet.data:type_name -> NYql.NConnector.NApi.TReadSplitsResponse.TColumnSet.TColumn + 53, // 54: NYql.NConnector.NApi.TReadSplitsResponse.TColumnSet.TColumn.data:type_name -> Ydb.Value + 4, // 55: NYql.NConnector.NApi.TExpression.TArithmeticalExpression.operation:type_name -> NYql.NConnector.NApi.TExpression.TArithmeticalExpression.EOperation + 19, // 56: NYql.NConnector.NApi.TExpression.TArithmeticalExpression.left_value:type_name -> NYql.NConnector.NApi.TExpression + 19, // 57: NYql.NConnector.NApi.TExpression.TArithmeticalExpression.right_value:type_name -> NYql.NConnector.NApi.TExpression + 19, // 58: NYql.NConnector.NApi.TExpression.TCoalesce.operands:type_name -> NYql.NConnector.NApi.TExpression + 20, // 59: NYql.NConnector.NApi.TExpression.TIf.predicate:type_name -> NYql.NConnector.NApi.TPredicate + 19, // 60: NYql.NConnector.NApi.TExpression.TIf.then_expression:type_name -> NYql.NConnector.NApi.TExpression + 19, // 61: NYql.NConnector.NApi.TExpression.TIf.else_expression:type_name -> NYql.NConnector.NApi.TExpression + 20, // 62: NYql.NConnector.NApi.TPredicate.TNegation.operand:type_name -> NYql.NConnector.NApi.TPredicate + 20, // 63: NYql.NConnector.NApi.TPredicate.TConjunction.operands:type_name -> NYql.NConnector.NApi.TPredicate + 20, // 64: NYql.NConnector.NApi.TPredicate.TDisjunction.operands:type_name -> NYql.NConnector.NApi.TPredicate + 20, // 65: NYql.NConnector.NApi.TPredicate.TCoalesce.operands:type_name -> NYql.NConnector.NApi.TPredicate + 20, // 66: NYql.NConnector.NApi.TPredicate.TIf.predicate:type_name -> NYql.NConnector.NApi.TPredicate + 20, // 67: NYql.NConnector.NApi.TPredicate.TIf.then_predicate:type_name -> NYql.NConnector.NApi.TPredicate + 20, // 68: NYql.NConnector.NApi.TPredicate.TIf.else_predicate:type_name -> NYql.NConnector.NApi.TPredicate + 19, // 69: NYql.NConnector.NApi.TPredicate.TBetween.value:type_name -> NYql.NConnector.NApi.TExpression + 19, // 70: NYql.NConnector.NApi.TPredicate.TBetween.least:type_name -> NYql.NConnector.NApi.TExpression + 19, // 71: NYql.NConnector.NApi.TPredicate.TBetween.greatest:type_name -> NYql.NConnector.NApi.TExpression + 19, // 72: NYql.NConnector.NApi.TPredicate.TIn.value:type_name -> NYql.NConnector.NApi.TExpression + 19, // 73: NYql.NConnector.NApi.TPredicate.TIn.set:type_name -> NYql.NConnector.NApi.TExpression + 19, // 74: NYql.NConnector.NApi.TPredicate.TIsNull.value:type_name -> NYql.NConnector.NApi.TExpression + 19, // 75: NYql.NConnector.NApi.TPredicate.TIsNotNull.value:type_name -> NYql.NConnector.NApi.TExpression + 19, // 76: NYql.NConnector.NApi.TPredicate.TBoolExpression.value:type_name -> NYql.NConnector.NApi.TExpression + 5, // 77: NYql.NConnector.NApi.TPredicate.TComparison.operation:type_name -> NYql.NConnector.NApi.TPredicate.TComparison.EOperation + 19, // 78: NYql.NConnector.NApi.TPredicate.TComparison.left_value:type_name -> NYql.NConnector.NApi.TExpression + 19, // 79: NYql.NConnector.NApi.TPredicate.TComparison.right_value:type_name -> NYql.NConnector.NApi.TExpression + 19, // 80: NYql.NConnector.NApi.TPredicate.TRegexp.value:type_name -> NYql.NConnector.NApi.TExpression + 19, // 81: NYql.NConnector.NApi.TPredicate.TRegexp.pattern:type_name -> NYql.NConnector.NApi.TExpression + 22, // 82: NYql.NConnector.NApi.TAst.TList.children:type_name -> NYql.NConnector.NApi.TAst + 83, // [83:83] is the sub-list for method output_type + 83, // [83:83] is the sub-list for method input_type + 83, // [83:83] is the sub-list for extension type_name + 83, // [83:83] is the sub-list for extension extendee + 0, // [0:83] is the sub-list for field type_name } func init() { @@ -3751,7 +4205,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TExpression_TNull); i { + switch v := v.(*TExpression_TCoalesce); i { case 0: return &v.state case 1: @@ -3763,7 +4217,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TPredicate_TNegation); i { + switch v := v.(*TExpression_TIf); i { case 0: return &v.state case 1: @@ -3775,7 +4229,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TPredicate_TConjunction); i { + switch v := v.(*TExpression_TNull); i { case 0: return &v.state case 1: @@ -3787,7 +4241,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TPredicate_TDisjunction); i { + switch v := v.(*TPredicate_TNegation); i { case 0: return &v.state case 1: @@ -3799,7 +4253,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TPredicate_TBetween); i { + switch v := v.(*TPredicate_TConjunction); i { case 0: return &v.state case 1: @@ -3811,7 +4265,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TPredicate_TIn); i { + switch v := v.(*TPredicate_TDisjunction); i { case 0: return &v.state case 1: @@ -3823,7 +4277,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TPredicate_TIsNull); i { + switch v := v.(*TPredicate_TCoalesce); i { case 0: return &v.state case 1: @@ -3835,7 +4289,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TPredicate_TIsNotNull); i { + switch v := v.(*TPredicate_TIf); i { case 0: return &v.state case 1: @@ -3847,7 +4301,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TPredicate_TBoolExpression); i { + switch v := v.(*TPredicate_TBetween); i { case 0: return &v.state case 1: @@ -3859,7 +4313,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TPredicate_TComparison); i { + switch v := v.(*TPredicate_TIn); i { case 0: return &v.state case 1: @@ -3871,6 +4325,66 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect } } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TPredicate_TIsNull); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TPredicate_TIsNotNull); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TPredicate_TBoolExpression); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TPredicate_TComparison); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TPredicate_TRegexp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TAst_TList); i { case 0: return &v.state @@ -3901,6 +4415,8 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect (*TExpression_Column)(nil), (*TExpression_ArithmeticalExpression)(nil), (*TExpression_Null)(nil), + (*TExpression_Coalesce)(nil), + (*TExpression_If)(nil), } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[14].OneofWrappers = []interface{}{ (*TPredicate_Negation)(nil), @@ -3912,6 +4428,9 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect (*TPredicate_IsNotNull)(nil), (*TPredicate_Comparison)(nil), (*TPredicate_BoolExpression)(nil), + (*TPredicate_Coalesce)(nil), + (*TPredicate_If)(nil), + (*TPredicate_Regexp)(nil), } file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_msgTypes[16].OneofWrappers = []interface{}{ (*TAst_Atom)(nil), @@ -3926,7 +4445,7 @@ func file_ydb_library_yql_providers_generic_connector_api_service_protos_connect GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_ydb_library_yql_providers_generic_connector_api_service_protos_connector_proto_rawDesc, NumEnums: 6, - NumMessages: 37, + NumMessages: 42, NumExtensions: 0, NumServices: 0, }, diff --git a/app/server/grpc_metrics.go b/app/server/grpc_metrics.go index 31448b39..686cd3cf 100644 --- a/app/server/grpc_metrics.go +++ b/app/server/grpc_metrics.go @@ -3,8 +3,10 @@ package server import ( "context" "fmt" + "runtime" "time" + "go.uber.org/zap" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -73,7 +75,7 @@ func maybeRegisterStatusCode(statusCount metrics.CounterVec, opName string, stre }).Inc() } -func UnaryServerMetrics(registry metrics.Registry) grpc.UnaryServerInterceptor { +func UnaryServerMetrics(logger *zap.Logger, registry metrics.Registry) grpc.UnaryServerInterceptor { requestCount := registry.CounterVec("requests_total", []string{"protocol", "endpoint"}) requestDuration := registry.DurationHistogramVec( "request_duration_seconds", @@ -109,7 +111,13 @@ func UnaryServerMetrics(registry metrics.Registry) grpc.UnaryServerInterceptor { "protocol": "grpc", "endpoint": opName, }).Inc() - panic(p) + + stacktrace := make([]byte, 1024) + runtime.Stack(stacktrace, false) + logger.Error("panic occurred", zap.Any("error", p), zap.String("stacktrace", fmt.Sprint(string(stacktrace)))) + + // return transport error to the client + err = status.Errorf(codes.Internal, fmt.Sprintf("Server paniced: %v", p)) } } @@ -146,7 +154,7 @@ func UnaryServerMetrics(registry metrics.Registry) grpc.UnaryServerInterceptor { } } -func StreamServerMetrics(registry metrics.Registry) grpc.StreamServerInterceptor { +func StreamServerMetrics(logger *zap.Logger, registry metrics.Registry) grpc.StreamServerInterceptor { streamCount := registry.CounterVec("streams_total", []string{"protocol", "endpoint"}) streamDuration := registry.DurationHistogramVec( "stream_duration_seconds", @@ -187,7 +195,14 @@ func StreamServerMetrics(registry metrics.Registry) grpc.StreamServerInterceptor "protocol": "grpc", "endpoint": opName, }).Inc() - panic(p) + + stacktrace := make([]byte, 1024) + runtime.Stack(stacktrace, false) + logger.Error("panic occurred", zap.Any("error", p), zap.String("stacktrace", fmt.Sprint(string(stacktrace)))) + + // return transport error to the client + err := status.Errorf(codes.Internal, fmt.Sprintf("Server paniced: %v", p)) + _ = ss.SendMsg(err) } } diff --git a/app/server/service_connector.go b/app/server/service_connector.go index 1457dec0..ff6c1fab 100644 --- a/app/server/service_connector.go +++ b/app/server/service_connector.go @@ -46,9 +46,11 @@ func (s *serviceConnector) DescribeTable( if err := ValidateDescribeTableRequest(logger, request); err != nil { logger.Error("request handling failed", zap.Error(err)) - return &api_service_protos.TDescribeTableResponse{ + response := &api_service_protos.TDescribeTableResponse{ Error: common.NewAPIErrorFromStdError(err, request.DataSourceInstance.Kind), - }, nil + } + + return response, nil } out, err := s.dataSourceCollection.DescribeTable(ctx, logger, request) @@ -231,9 +233,9 @@ func makeGRPCOptions(logger *zap.Logger, cfg *config.TServerConfig, registry *so tlsConfig *config.TServerTLSConfig ) - unaryInterceptors := []grpc.UnaryServerInterceptor{UnaryServerMetrics(registry), UnaryServerMetadata(logger)} + unaryInterceptors := []grpc.UnaryServerInterceptor{UnaryServerMetrics(logger, registry), UnaryServerMetadata(logger)} - streamInterceptors := []grpc.StreamServerInterceptor{StreamServerMetrics(registry), StreamServerMetadata(logger)} + streamInterceptors := []grpc.StreamServerInterceptor{StreamServerMetrics(logger, registry), StreamServerMetadata(logger)} opts = append(opts, grpc.ChainUnaryInterceptor(unaryInterceptors...), grpc.ChainStreamInterceptor(streamInterceptors...)) diff --git a/common/errors.go b/common/errors.go index a5b0f727..a7dfa895 100644 --- a/common/errors.go +++ b/common/errors.go @@ -328,8 +328,10 @@ func NewAPIErrorFromStdError(err error, kind api_common.EDataSourceKind) *api_se apiError = newAPIErrorFromOracleError(err) case api_common.EDataSourceKind_MS_SQL_SERVER: apiError = newAPIErrorFromMsSQLServer(err) + case api_common.EDataSourceKind_LOGGING: + apiError = newAPIErrorFromYdbError(err) default: - panic("DataSource kind not specified for API error") + panic(fmt.Sprintf("Unexpected data source kind: %v", api_common.EDataSourceKind_name[int32(kind)])) } if apiError != nil {