diff --git a/Makefile b/Makefile index 45bfe9be86..0807d15e66 100644 --- a/Makefile +++ b/Makefile @@ -113,7 +113,6 @@ unittest: test-cpp test-go test-go: build-cpp-with-unittest @echo "Running go unittests..." - @echo "disable go unittest for now, enable it later" @(env bash $(PWD)/scripts/run_go_codecov.sh) # @(env bash $(PWD)/scripts/run_go_unittest.sh) diff --git a/configs/advanced/proxy.yaml b/configs/advanced/proxy.yaml index 23a5456c80..3c7400692f 100644 --- a/configs/advanced/proxy.yaml +++ b/configs/advanced/proxy.yaml @@ -29,3 +29,4 @@ proxy: maxNameLength: 255 maxFieldNum: 64 maxDimension: 32768 + maxShardNum: 256 diff --git a/configs/advanced/root_coord.yaml b/configs/advanced/root_coord.yaml index 889a813eca..da851abcdf 100644 --- a/configs/advanced/root_coord.yaml +++ b/configs/advanced/root_coord.yaml @@ -10,7 +10,7 @@ # or implied. See the License for the specific language governing permissions and limitations under the License. rootcoord: - dmlChannelNum: 64 + dmlChannelNum: 256 maxPartitionNum: 4096 minSegmentSizeToEnableIndex: 1024 timeout: 3600 # time out, 5 seconds diff --git a/internal/core/src/pb/etcd_meta.pb.cc b/internal/core/src/pb/etcd_meta.pb.cc index 35ede240a6..a259ba0c3a 100644 --- a/internal/core/src/pb/etcd_meta.pb.cc +++ b/internal/core/src/pb/etcd_meta.pb.cc @@ -207,6 +207,7 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_etcd_5fmeta_2eproto::offsets[] PROTOBUF_FIELD_OFFSET(::milvus::proto::etcd::CollectionInfo, virtual_channel_names_), PROTOBUF_FIELD_OFFSET(::milvus::proto::etcd::CollectionInfo, physical_channel_names_), PROTOBUF_FIELD_OFFSET(::milvus::proto::etcd::CollectionInfo, partition_created_timestamps_), + PROTOBUF_FIELD_OFFSET(::milvus::proto::etcd::CollectionInfo, shards_num_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::milvus::proto::etcd::SegmentIndexInfo, _internal_metadata_), ~0u, // no _extensions_ @@ -237,8 +238,8 @@ static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOB { 17, -1, sizeof(::milvus::proto::etcd::IndexInfo)}, { 25, -1, sizeof(::milvus::proto::etcd::FieldIndexInfo)}, { 32, -1, sizeof(::milvus::proto::etcd::CollectionInfo)}, - { 46, -1, sizeof(::milvus::proto::etcd::SegmentIndexInfo)}, - { 58, -1, sizeof(::milvus::proto::etcd::CollectionMeta)}, + { 47, -1, sizeof(::milvus::proto::etcd::SegmentIndexInfo)}, + { 59, -1, sizeof(::milvus::proto::etcd::CollectionMeta)}, }; static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = { @@ -262,7 +263,7 @@ const char descriptor_table_protodef_etcd_5fmeta_2eproto[] PROTOBUF_SECTION_VARI "\022\n\nindex_name\030\001 \001(\t\022\017\n\007indexID\030\002 \001(\003\0227\n\014" "index_params\030\003 \003(\0132!.milvus.proto.common" ".KeyValuePair\"2\n\016FieldIndexInfo\022\017\n\007filed" - "ID\030\001 \001(\003\022\017\n\007indexID\030\002 \001(\003\"\265\002\n\016Collection" + "ID\030\001 \001(\003\022\017\n\007indexID\030\002 \001(\003\"\311\002\n\016Collection" "Info\022\n\n\002ID\030\001 \001(\003\0225\n\006schema\030\002 \001(\0132%.milvu" "s.proto.schema.CollectionSchema\022\023\n\013creat" "e_time\030\003 \001(\004\022\024\n\014partitionIDs\030\004 \003(\003\022\026\n\016pa" @@ -270,17 +271,17 @@ const char descriptor_table_protodef_etcd_5fmeta_2eproto[] PROTOBUF_SECTION_VARI "\0132!.milvus.proto.etcd.FieldIndexInfo\022\035\n\025" "virtual_channel_names\030\007 \003(\t\022\036\n\026physical_" "channel_names\030\010 \003(\t\022$\n\034partition_created" - "_timestamps\030\t \003(\004\"\231\001\n\020SegmentIndexInfo\022\024" - "\n\014collectionID\030\001 \001(\003\022\023\n\013partitionID\030\002 \001(" - "\003\022\021\n\tsegmentID\030\003 \001(\003\022\017\n\007fieldID\030\004 \001(\003\022\017\n" - "\007indexID\030\005 \001(\003\022\017\n\007buildID\030\006 \001(\003\022\024\n\014enabl" - "e_index\030\007 \001(\010\"\252\001\n\016CollectionMeta\022\n\n\002ID\030\001" - " \001(\003\0225\n\006schema\030\002 \001(\0132%.milvus.proto.sche" - "ma.CollectionSchema\022\023\n\013create_time\030\003 \001(\004" - "\022\022\n\nsegmentIDs\030\004 \003(\003\022\026\n\016partition_tags\030\005" - " \003(\t\022\024\n\014partitionIDs\030\006 \003(\003B3Z1github.com" - "/milvus-io/milvus/internal/proto/etcdpbb" - "\006proto3" + "_timestamps\030\t \003(\004\022\022\n\nshards_num\030\n \001(\005\"\231\001" + "\n\020SegmentIndexInfo\022\024\n\014collectionID\030\001 \001(\003" + "\022\023\n\013partitionID\030\002 \001(\003\022\021\n\tsegmentID\030\003 \001(\003" + "\022\017\n\007fieldID\030\004 \001(\003\022\017\n\007indexID\030\005 \001(\003\022\017\n\007bu" + "ildID\030\006 \001(\003\022\024\n\014enable_index\030\007 \001(\010\"\252\001\n\016Co" + "llectionMeta\022\n\n\002ID\030\001 \001(\003\0225\n\006schema\030\002 \001(\013" + "2%.milvus.proto.schema.CollectionSchema\022" + "\023\n\013create_time\030\003 \001(\004\022\022\n\nsegmentIDs\030\004 \003(\003" + "\022\026\n\016partition_tags\030\005 \003(\t\022\024\n\014partitionIDs" + "\030\006 \003(\003B3Z1github.com/milvus-io/milvus/in" + "ternal/proto/etcdpbb\006proto3" ; static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_etcd_5fmeta_2eproto_deps[2] = { &::descriptor_table_common_2eproto, @@ -298,7 +299,7 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_etc static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_etcd_5fmeta_2eproto_once; static bool descriptor_table_etcd_5fmeta_2eproto_initialized = false; const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_etcd_5fmeta_2eproto = { - &descriptor_table_etcd_5fmeta_2eproto_initialized, descriptor_table_protodef_etcd_5fmeta_2eproto, "etcd_meta.proto", 1127, + &descriptor_table_etcd_5fmeta_2eproto_initialized, descriptor_table_protodef_etcd_5fmeta_2eproto, "etcd_meta.proto", 1147, &descriptor_table_etcd_5fmeta_2eproto_once, descriptor_table_etcd_5fmeta_2eproto_sccs, descriptor_table_etcd_5fmeta_2eproto_deps, 7, 2, schemas, file_default_instances, TableStruct_etcd_5fmeta_2eproto::offsets, file_level_metadata_etcd_5fmeta_2eproto, 7, file_level_enum_descriptors_etcd_5fmeta_2eproto, file_level_service_descriptors_etcd_5fmeta_2eproto, @@ -1816,16 +1817,16 @@ CollectionInfo::CollectionInfo(const CollectionInfo& from) schema_ = nullptr; } ::memcpy(&id_, &from.id_, - static_cast(reinterpret_cast(&create_time_) - - reinterpret_cast(&id_)) + sizeof(create_time_)); + static_cast(reinterpret_cast(&shards_num_) - + reinterpret_cast(&id_)) + sizeof(shards_num_)); // @@protoc_insertion_point(copy_constructor:milvus.proto.etcd.CollectionInfo) } void CollectionInfo::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_CollectionInfo_etcd_5fmeta_2eproto.base); ::memset(&schema_, 0, static_cast( - reinterpret_cast(&create_time_) - - reinterpret_cast(&schema_)) + sizeof(create_time_)); + reinterpret_cast(&shards_num_) - + reinterpret_cast(&schema_)) + sizeof(shards_num_)); } CollectionInfo::~CollectionInfo() { @@ -1863,8 +1864,8 @@ void CollectionInfo::Clear() { } schema_ = nullptr; ::memset(&id_, 0, static_cast( - reinterpret_cast(&create_time_) - - reinterpret_cast(&id_)) + sizeof(create_time_)); + reinterpret_cast(&shards_num_) - + reinterpret_cast(&id_)) + sizeof(shards_num_)); _internal_metadata_.Clear(); } @@ -1965,6 +1966,13 @@ const char* CollectionInfo::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE CHK_(ptr); } else goto handle_unusual; continue; + // int32 shards_num = 10; + case 10: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) { + shards_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -2123,6 +2131,19 @@ bool CollectionInfo::MergePartialFromCodedStream( break; } + // int32 shards_num = 10; + case 10: { + if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (80 & 0xFF)) { + + DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive< + ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>( + input, &shards_num_))); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -2227,6 +2248,11 @@ void CollectionInfo::SerializeWithCachedSizes( this->partition_created_timestamps(i), output); } + // int32 shards_num = 10; + if (this->shards_num() != 0) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(10, this->shards_num(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -2321,6 +2347,11 @@ void CollectionInfo::SerializeWithCachedSizes( WriteUInt64NoTagToArray(this->partition_created_timestamps_, target); } + // int32 shards_num = 10; + if (this->shards_num() != 0) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(10, this->shards_num(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -2428,6 +2459,13 @@ size_t CollectionInfo::ByteSizeLong() const { this->create_time()); } + // int32 shards_num = 10; + if (this->shards_num() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( + this->shards_num()); + } + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -2470,6 +2508,9 @@ void CollectionInfo::MergeFrom(const CollectionInfo& from) { if (from.create_time() != 0) { set_create_time(from.create_time()); } + if (from.shards_num() != 0) { + set_shards_num(from.shards_num()); + } } void CollectionInfo::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { @@ -2502,6 +2543,7 @@ void CollectionInfo::InternalSwap(CollectionInfo* other) { swap(schema_, other->schema_); swap(id_, other->id_); swap(create_time_, other->create_time_); + swap(shards_num_, other->shards_num_); } ::PROTOBUF_NAMESPACE_ID::Metadata CollectionInfo::GetMetadata() const { diff --git a/internal/core/src/pb/etcd_meta.pb.h b/internal/core/src/pb/etcd_meta.pb.h index 2f54b162d3..b549d0b6ab 100644 --- a/internal/core/src/pb/etcd_meta.pb.h +++ b/internal/core/src/pb/etcd_meta.pb.h @@ -845,6 +845,7 @@ class CollectionInfo : kSchemaFieldNumber = 2, kIDFieldNumber = 1, kCreateTimeFieldNumber = 3, + kShardsNumFieldNumber = 10, }; // repeated int64 partitionIDs = 4; int partitionids_size() const; @@ -948,6 +949,11 @@ class CollectionInfo : ::PROTOBUF_NAMESPACE_ID::uint64 create_time() const; void set_create_time(::PROTOBUF_NAMESPACE_ID::uint64 value); + // int32 shards_num = 10; + void clear_shards_num(); + ::PROTOBUF_NAMESPACE_ID::int32 shards_num() const; + void set_shards_num(::PROTOBUF_NAMESPACE_ID::int32 value); + // @@protoc_insertion_point(class_scope:milvus.proto.etcd.CollectionInfo) private: class _Internal; @@ -964,6 +970,7 @@ class CollectionInfo : ::milvus::proto::schema::CollectionSchema* schema_; ::PROTOBUF_NAMESPACE_ID::int64 id_; ::PROTOBUF_NAMESPACE_ID::uint64 create_time_; + ::PROTOBUF_NAMESPACE_ID::int32 shards_num_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_etcd_5fmeta_2eproto; }; @@ -2108,6 +2115,20 @@ CollectionInfo::mutable_partition_created_timestamps() { return &partition_created_timestamps_; } +// int32 shards_num = 10; +inline void CollectionInfo::clear_shards_num() { + shards_num_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 CollectionInfo::shards_num() const { + // @@protoc_insertion_point(field_get:milvus.proto.etcd.CollectionInfo.shards_num) + return shards_num_; +} +inline void CollectionInfo::set_shards_num(::PROTOBUF_NAMESPACE_ID::int32 value) { + + shards_num_ = value; + // @@protoc_insertion_point(field_set:milvus.proto.etcd.CollectionInfo.shards_num) +} + // ------------------------------------------------------------------- // SegmentIndexInfo diff --git a/internal/core/src/pb/milvus.pb.cc b/internal/core/src/pb/milvus.pb.cc index c301786245..fdbedb0858 100644 --- a/internal/core/src/pb/milvus.pb.cc +++ b/internal/core/src/pb/milvus.pb.cc @@ -1339,6 +1339,7 @@ const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_milvus_2eproto::offsets[] PROT PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::DescribeCollectionResponse, physical_channel_names_), PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::DescribeCollectionResponse, created_timestamp_), PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::DescribeCollectionResponse, created_utc_timestamp_), + PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::DescribeCollectionResponse, shards_num_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::milvus::proto::milvus::LoadCollectionRequest, _internal_metadata_), ~0u, // no _extensions_ @@ -1849,63 +1850,63 @@ static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOB { 34, -1, sizeof(::milvus::proto::milvus::StringResponse)}, { 41, -1, sizeof(::milvus::proto::milvus::DescribeCollectionRequest)}, { 51, -1, sizeof(::milvus::proto::milvus::DescribeCollectionResponse)}, - { 63, -1, sizeof(::milvus::proto::milvus::LoadCollectionRequest)}, - { 71, -1, sizeof(::milvus::proto::milvus::ReleaseCollectionRequest)}, - { 79, -1, sizeof(::milvus::proto::milvus::GetCollectionStatisticsRequest)}, - { 87, -1, sizeof(::milvus::proto::milvus::GetCollectionStatisticsResponse)}, - { 94, -1, sizeof(::milvus::proto::milvus::ShowCollectionsRequest)}, - { 104, -1, sizeof(::milvus::proto::milvus::ShowCollectionsResponse)}, - { 115, -1, sizeof(::milvus::proto::milvus::CreatePartitionRequest)}, - { 124, -1, sizeof(::milvus::proto::milvus::DropPartitionRequest)}, - { 133, -1, sizeof(::milvus::proto::milvus::HasPartitionRequest)}, - { 142, -1, sizeof(::milvus::proto::milvus::LoadPartitionsRequest)}, - { 151, -1, sizeof(::milvus::proto::milvus::ReleasePartitionsRequest)}, - { 160, -1, sizeof(::milvus::proto::milvus::GetPartitionStatisticsRequest)}, - { 169, -1, sizeof(::milvus::proto::milvus::GetPartitionStatisticsResponse)}, - { 176, -1, sizeof(::milvus::proto::milvus::ShowPartitionsRequest)}, - { 187, -1, sizeof(::milvus::proto::milvus::ShowPartitionsResponse)}, - { 198, -1, sizeof(::milvus::proto::milvus::DescribeSegmentRequest)}, - { 206, -1, sizeof(::milvus::proto::milvus::DescribeSegmentResponse)}, - { 215, -1, sizeof(::milvus::proto::milvus::ShowSegmentsRequest)}, - { 223, -1, sizeof(::milvus::proto::milvus::ShowSegmentsResponse)}, - { 230, -1, sizeof(::milvus::proto::milvus::CreateIndexRequest)}, - { 240, -1, sizeof(::milvus::proto::milvus::DescribeIndexRequest)}, - { 250, -1, sizeof(::milvus::proto::milvus::IndexDescription)}, - { 259, -1, sizeof(::milvus::proto::milvus::DescribeIndexResponse)}, - { 266, -1, sizeof(::milvus::proto::milvus::GetIndexBuildProgressRequest)}, - { 276, -1, sizeof(::milvus::proto::milvus::GetIndexBuildProgressResponse)}, - { 284, -1, sizeof(::milvus::proto::milvus::GetIndexStateRequest)}, - { 294, -1, sizeof(::milvus::proto::milvus::GetIndexStateResponse)}, - { 302, -1, sizeof(::milvus::proto::milvus::DropIndexRequest)}, - { 312, -1, sizeof(::milvus::proto::milvus::InsertRequest)}, - { 324, -1, sizeof(::milvus::proto::milvus::MutationResult)}, - { 338, -1, sizeof(::milvus::proto::milvus::DeleteRequest)}, - { 348, -1, sizeof(::milvus::proto::milvus::PlaceholderValue)}, - { 356, -1, sizeof(::milvus::proto::milvus::PlaceholderGroup)}, - { 362, -1, sizeof(::milvus::proto::milvus::SearchRequest)}, - { 378, -1, sizeof(::milvus::proto::milvus::Hits)}, - { 386, -1, sizeof(::milvus::proto::milvus::SearchResults)}, - { 393, -1, sizeof(::milvus::proto::milvus::FlushRequest)}, - { 401, 408, sizeof(::milvus::proto::milvus::FlushResponse_CollSegIDsEntry_DoNotUse)}, - { 410, -1, sizeof(::milvus::proto::milvus::FlushResponse)}, - { 418, -1, sizeof(::milvus::proto::milvus::QueryRequest)}, - { 431, -1, sizeof(::milvus::proto::milvus::QueryResults)}, - { 438, -1, sizeof(::milvus::proto::milvus::VectorIDs)}, - { 447, -1, sizeof(::milvus::proto::milvus::VectorsArray)}, - { 455, -1, sizeof(::milvus::proto::milvus::CalcDistanceRequest)}, - { 464, -1, sizeof(::milvus::proto::milvus::CalcDistanceResults)}, - { 473, -1, sizeof(::milvus::proto::milvus::PersistentSegmentInfo)}, - { 483, -1, sizeof(::milvus::proto::milvus::GetPersistentSegmentInfoRequest)}, - { 491, -1, sizeof(::milvus::proto::milvus::GetPersistentSegmentInfoResponse)}, - { 498, -1, sizeof(::milvus::proto::milvus::QuerySegmentInfo)}, - { 510, -1, sizeof(::milvus::proto::milvus::GetQuerySegmentInfoRequest)}, - { 518, -1, sizeof(::milvus::proto::milvus::GetQuerySegmentInfoResponse)}, - { 525, -1, sizeof(::milvus::proto::milvus::DummyRequest)}, - { 531, -1, sizeof(::milvus::proto::milvus::DummyResponse)}, - { 537, -1, sizeof(::milvus::proto::milvus::RegisterLinkRequest)}, - { 542, -1, sizeof(::milvus::proto::milvus::RegisterLinkResponse)}, - { 549, -1, sizeof(::milvus::proto::milvus::GetMetricsRequest)}, - { 556, -1, sizeof(::milvus::proto::milvus::GetMetricsResponse)}, + { 64, -1, sizeof(::milvus::proto::milvus::LoadCollectionRequest)}, + { 72, -1, sizeof(::milvus::proto::milvus::ReleaseCollectionRequest)}, + { 80, -1, sizeof(::milvus::proto::milvus::GetCollectionStatisticsRequest)}, + { 88, -1, sizeof(::milvus::proto::milvus::GetCollectionStatisticsResponse)}, + { 95, -1, sizeof(::milvus::proto::milvus::ShowCollectionsRequest)}, + { 105, -1, sizeof(::milvus::proto::milvus::ShowCollectionsResponse)}, + { 116, -1, sizeof(::milvus::proto::milvus::CreatePartitionRequest)}, + { 125, -1, sizeof(::milvus::proto::milvus::DropPartitionRequest)}, + { 134, -1, sizeof(::milvus::proto::milvus::HasPartitionRequest)}, + { 143, -1, sizeof(::milvus::proto::milvus::LoadPartitionsRequest)}, + { 152, -1, sizeof(::milvus::proto::milvus::ReleasePartitionsRequest)}, + { 161, -1, sizeof(::milvus::proto::milvus::GetPartitionStatisticsRequest)}, + { 170, -1, sizeof(::milvus::proto::milvus::GetPartitionStatisticsResponse)}, + { 177, -1, sizeof(::milvus::proto::milvus::ShowPartitionsRequest)}, + { 188, -1, sizeof(::milvus::proto::milvus::ShowPartitionsResponse)}, + { 199, -1, sizeof(::milvus::proto::milvus::DescribeSegmentRequest)}, + { 207, -1, sizeof(::milvus::proto::milvus::DescribeSegmentResponse)}, + { 216, -1, sizeof(::milvus::proto::milvus::ShowSegmentsRequest)}, + { 224, -1, sizeof(::milvus::proto::milvus::ShowSegmentsResponse)}, + { 231, -1, sizeof(::milvus::proto::milvus::CreateIndexRequest)}, + { 241, -1, sizeof(::milvus::proto::milvus::DescribeIndexRequest)}, + { 251, -1, sizeof(::milvus::proto::milvus::IndexDescription)}, + { 260, -1, sizeof(::milvus::proto::milvus::DescribeIndexResponse)}, + { 267, -1, sizeof(::milvus::proto::milvus::GetIndexBuildProgressRequest)}, + { 277, -1, sizeof(::milvus::proto::milvus::GetIndexBuildProgressResponse)}, + { 285, -1, sizeof(::milvus::proto::milvus::GetIndexStateRequest)}, + { 295, -1, sizeof(::milvus::proto::milvus::GetIndexStateResponse)}, + { 303, -1, sizeof(::milvus::proto::milvus::DropIndexRequest)}, + { 313, -1, sizeof(::milvus::proto::milvus::InsertRequest)}, + { 325, -1, sizeof(::milvus::proto::milvus::MutationResult)}, + { 339, -1, sizeof(::milvus::proto::milvus::DeleteRequest)}, + { 349, -1, sizeof(::milvus::proto::milvus::PlaceholderValue)}, + { 357, -1, sizeof(::milvus::proto::milvus::PlaceholderGroup)}, + { 363, -1, sizeof(::milvus::proto::milvus::SearchRequest)}, + { 379, -1, sizeof(::milvus::proto::milvus::Hits)}, + { 387, -1, sizeof(::milvus::proto::milvus::SearchResults)}, + { 394, -1, sizeof(::milvus::proto::milvus::FlushRequest)}, + { 402, 409, sizeof(::milvus::proto::milvus::FlushResponse_CollSegIDsEntry_DoNotUse)}, + { 411, -1, sizeof(::milvus::proto::milvus::FlushResponse)}, + { 419, -1, sizeof(::milvus::proto::milvus::QueryRequest)}, + { 432, -1, sizeof(::milvus::proto::milvus::QueryResults)}, + { 439, -1, sizeof(::milvus::proto::milvus::VectorIDs)}, + { 448, -1, sizeof(::milvus::proto::milvus::VectorsArray)}, + { 456, -1, sizeof(::milvus::proto::milvus::CalcDistanceRequest)}, + { 465, -1, sizeof(::milvus::proto::milvus::CalcDistanceResults)}, + { 474, -1, sizeof(::milvus::proto::milvus::PersistentSegmentInfo)}, + { 484, -1, sizeof(::milvus::proto::milvus::GetPersistentSegmentInfoRequest)}, + { 492, -1, sizeof(::milvus::proto::milvus::GetPersistentSegmentInfoResponse)}, + { 499, -1, sizeof(::milvus::proto::milvus::QuerySegmentInfo)}, + { 511, -1, sizeof(::milvus::proto::milvus::GetQuerySegmentInfoRequest)}, + { 519, -1, sizeof(::milvus::proto::milvus::GetQuerySegmentInfoResponse)}, + { 526, -1, sizeof(::milvus::proto::milvus::DummyRequest)}, + { 532, -1, sizeof(::milvus::proto::milvus::DummyResponse)}, + { 538, -1, sizeof(::milvus::proto::milvus::RegisterLinkRequest)}, + { 543, -1, sizeof(::milvus::proto::milvus::RegisterLinkResponse)}, + { 550, -1, sizeof(::milvus::proto::milvus::GetMetricsRequest)}, + { 557, -1, sizeof(::milvus::proto::milvus::GetMetricsResponse)}, }; static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = { @@ -1995,296 +1996,297 @@ const char descriptor_table_protodef_milvus_2eproto[] PROTOBUF_SECTION_VARIABLE( "*\n\004base\030\001 \001(\0132\034.milvus.proto.common.MsgB" "ase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_name\030" "\003 \001(\t\022\024\n\014collectionID\030\004 \001(\003\022\022\n\ntime_stam" - "p\030\005 \001(\004\"\217\002\n\032DescribeCollectionResponse\022+" + "p\030\005 \001(\004\"\243\002\n\032DescribeCollectionResponse\022+" "\n\006status\030\001 \001(\0132\033.milvus.proto.common.Sta" "tus\0225\n\006schema\030\002 \001(\0132%.milvus.proto.schem" "a.CollectionSchema\022\024\n\014collectionID\030\003 \001(\003" "\022\035\n\025virtual_channel_names\030\004 \003(\t\022\036\n\026physi" "cal_channel_names\030\005 \003(\t\022\031\n\021created_times" "tamp\030\006 \001(\004\022\035\n\025created_utc_timestamp\030\007 \001(" - "\004\"m\n\025LoadCollectionRequest\022*\n\004base\030\001 \001(\013" - "2\034.milvus.proto.common.MsgBase\022\017\n\007db_nam" - "e\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\"p\n\030Rele" - "aseCollectionRequest\022*\n\004base\030\001 \001(\0132\034.mil" - "vus.proto.common.MsgBase\022\017\n\007db_name\030\002 \001(" - "\t\022\027\n\017collection_name\030\003 \001(\t\"v\n\036GetCollect" - "ionStatisticsRequest\022*\n\004base\030\001 \001(\0132\034.mil" - "vus.proto.common.MsgBase\022\017\n\007db_name\030\002 \001(" - "\t\022\027\n\017collection_name\030\003 \001(\t\"\200\001\n\037GetCollec" - "tionStatisticsResponse\022+\n\006status\030\001 \001(\0132\033" - ".milvus.proto.common.Status\0220\n\005stats\030\002 \003" - "(\0132!.milvus.proto.common.KeyValuePair\"\260\001" - "\n\026ShowCollectionsRequest\022*\n\004base\030\001 \001(\0132\034" - ".milvus.proto.common.MsgBase\022\017\n\007db_name\030" - "\002 \001(\t\022\022\n\ntime_stamp\030\003 \001(\004\022+\n\004type\030\004 \001(\0162" - "\035.milvus.proto.milvus.ShowType\022\030\n\020collec" - "tion_names\030\005 \003(\t\"\322\001\n\027ShowCollectionsResp" - "onse\022+\n\006status\030\001 \001(\0132\033.milvus.proto.comm" - "on.Status\022\030\n\020collection_names\030\002 \003(\t\022\026\n\016c" - "ollection_ids\030\003 \003(\003\022\032\n\022created_timestamp" - "s\030\004 \003(\004\022\036\n\026created_utc_timestamps\030\005 \003(\004\022" - "\034\n\024inMemory_percentages\030\006 \003(\003\"\206\001\n\026Create" - "PartitionRequest\022*\n\004base\030\001 \001(\0132\034.milvus." - "proto.common.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n" - "\017collection_name\030\003 \001(\t\022\026\n\016partition_name" - "\030\004 \001(\t\"\204\001\n\024DropPartitionRequest\022*\n\004base\030" - "\001 \001(\0132\034.milvus.proto.common.MsgBase\022\017\n\007d" - "b_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\026\n" - "\016partition_name\030\004 \001(\t\"\203\001\n\023HasPartitionRe" - "quest\022*\n\004base\030\001 \001(\0132\034.milvus.proto.commo" - "n.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection" - "_name\030\003 \001(\t\022\026\n\016partition_name\030\004 \001(\t\"\206\001\n\025" - "LoadPartitionsRequest\022*\n\004base\030\001 \001(\0132\034.mi" - "lvus.proto.common.MsgBase\022\017\n\007db_name\030\002 \001" - "(\t\022\027\n\017collection_name\030\003 \001(\t\022\027\n\017partition" - "_names\030\004 \003(\t\"\211\001\n\030ReleasePartitionsReques" + "\004\022\022\n\nshards_num\030\010 \001(\005\"m\n\025LoadCollectionR" + "equest\022*\n\004base\030\001 \001(\0132\034.milvus.proto.comm" + "on.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collectio" + "n_name\030\003 \001(\t\"p\n\030ReleaseCollectionRequest" + "\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common.Msg" + "Base\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_name" + "\030\003 \001(\t\"v\n\036GetCollectionStatisticsRequest" + "\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common.Msg" + "Base\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_name" + "\030\003 \001(\t\"\200\001\n\037GetCollectionStatisticsRespon" + "se\022+\n\006status\030\001 \001(\0132\033.milvus.proto.common" + ".Status\0220\n\005stats\030\002 \003(\0132!.milvus.proto.co" + "mmon.KeyValuePair\"\260\001\n\026ShowCollectionsReq" + "uest\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common" + ".MsgBase\022\017\n\007db_name\030\002 \001(\t\022\022\n\ntime_stamp\030" + "\003 \001(\004\022+\n\004type\030\004 \001(\0162\035.milvus.proto.milvu" + "s.ShowType\022\030\n\020collection_names\030\005 \003(\t\"\322\001\n" + "\027ShowCollectionsResponse\022+\n\006status\030\001 \001(\013" + "2\033.milvus.proto.common.Status\022\030\n\020collect" + "ion_names\030\002 \003(\t\022\026\n\016collection_ids\030\003 \003(\003\022" + "\032\n\022created_timestamps\030\004 \003(\004\022\036\n\026created_u" + "tc_timestamps\030\005 \003(\004\022\034\n\024inMemory_percenta" + "ges\030\006 \003(\003\"\206\001\n\026CreatePartitionRequest\022*\n\004" + "base\030\001 \001(\0132\034.milvus.proto.common.MsgBase" + "\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001" + "(\t\022\026\n\016partition_name\030\004 \001(\t\"\204\001\n\024DropParti" + "tionRequest\022*\n\004base\030\001 \001(\0132\034.milvus.proto" + ".common.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017coll" + "ection_name\030\003 \001(\t\022\026\n\016partition_name\030\004 \001(" + "\t\"\203\001\n\023HasPartitionRequest\022*\n\004base\030\001 \001(\0132" + "\034.milvus.proto.common.MsgBase\022\017\n\007db_name" + "\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\026\n\016parti" + "tion_name\030\004 \001(\t\"\206\001\n\025LoadPartitionsReques" "t\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common.Ms" "gBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_nam" - "e\030\003 \001(\t\022\027\n\017partition_names\030\004 \003(\t\"\215\001\n\035Get" - "PartitionStatisticsRequest\022*\n\004base\030\001 \001(\013" - "2\034.milvus.proto.common.MsgBase\022\017\n\007db_nam" - "e\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\026\n\016part" - "ition_name\030\004 \001(\t\"\177\n\036GetPartitionStatisti" - "csResponse\022+\n\006status\030\001 \001(\0132\033.milvus.prot" - "o.common.Status\0220\n\005stats\030\002 \003(\0132!.milvus." - "proto.common.KeyValuePair\"\311\001\n\025ShowPartit" - "ionsRequest\022*\n\004base\030\001 \001(\0132\034.milvus.proto" - ".common.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017coll" - "ection_name\030\003 \001(\t\022\024\n\014collectionID\030\004 \001(\003\022" - "\027\n\017partition_names\030\005 \003(\t\022+\n\004type\030\006 \001(\0162\035" - ".milvus.proto.milvus.ShowType\"\316\001\n\026ShowPa" - "rtitionsResponse\022+\n\006status\030\001 \001(\0132\033.milvu" - "s.proto.common.Status\022\027\n\017partition_names" - "\030\002 \003(\t\022\024\n\014partitionIDs\030\003 \003(\003\022\032\n\022created_" - "timestamps\030\004 \003(\004\022\036\n\026created_utc_timestam" - "ps\030\005 \003(\004\022\034\n\024inMemory_percentages\030\006 \003(\003\"m" - "\n\026DescribeSegmentRequest\022*\n\004base\030\001 \001(\0132\034" - ".milvus.proto.common.MsgBase\022\024\n\014collecti" - "onID\030\002 \001(\003\022\021\n\tsegmentID\030\003 \001(\003\"~\n\027Describ" - "eSegmentResponse\022+\n\006status\030\001 \001(\0132\033.milvu" - "s.proto.common.Status\022\017\n\007indexID\030\002 \001(\003\022\017" - "\n\007buildID\030\003 \001(\003\022\024\n\014enable_index\030\004 \001(\010\"l\n" - "\023ShowSegmentsRequest\022*\n\004base\030\001 \001(\0132\034.mil" - "vus.proto.common.MsgBase\022\024\n\014collectionID" - "\030\002 \001(\003\022\023\n\013partitionID\030\003 \001(\003\"W\n\024ShowSegme" - "ntsResponse\022+\n\006status\030\001 \001(\0132\033.milvus.pro" - "to.common.Status\022\022\n\nsegmentIDs\030\002 \003(\003\"\267\001\n" - "\022CreateIndexRequest\022*\n\004base\030\001 \001(\0132\034.milv" - "us.proto.common.MsgBase\022\017\n\007db_name\030\002 \001(\t" - "\022\027\n\017collection_name\030\003 \001(\t\022\022\n\nfield_name\030" - "\004 \001(\t\0227\n\014extra_params\030\005 \003(\0132!.milvus.pro" - "to.common.KeyValuePair\"\224\001\n\024DescribeIndex" - "Request\022*\n\004base\030\001 \001(\0132\034.milvus.proto.com" - "mon.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collecti" - "on_name\030\003 \001(\t\022\022\n\nfield_name\030\004 \001(\t\022\022\n\nind" - "ex_name\030\005 \001(\t\"~\n\020IndexDescription\022\022\n\nind" - "ex_name\030\001 \001(\t\022\017\n\007indexID\030\002 \001(\003\0221\n\006params" - "\030\003 \003(\0132!.milvus.proto.common.KeyValuePai" - "r\022\022\n\nfield_name\030\004 \001(\t\"\207\001\n\025DescribeIndexR" - "esponse\022+\n\006status\030\001 \001(\0132\033.milvus.proto.c" - "ommon.Status\022A\n\022index_descriptions\030\002 \003(\013" - "2%.milvus.proto.milvus.IndexDescription\"" - "\234\001\n\034GetIndexBuildProgressRequest\022*\n\004base" - "\030\001 \001(\0132\034.milvus.proto.common.MsgBase\022\017\n\007" - "db_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\022" - "\n\nfield_name\030\004 \001(\t\022\022\n\nindex_name\030\005 \001(\t\"v" - "\n\035GetIndexBuildProgressResponse\022+\n\006statu" - "s\030\001 \001(\0132\033.milvus.proto.common.Status\022\024\n\014" - "indexed_rows\030\002 \001(\003\022\022\n\ntotal_rows\030\003 \001(\003\"\224" - "\001\n\024GetIndexStateRequest\022*\n\004base\030\001 \001(\0132\034." - "milvus.proto.common.MsgBase\022\017\n\007db_name\030\002" - " \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\022\n\nfield_n" - "ame\030\004 \001(\t\022\022\n\nindex_name\030\005 \001(\t\"\211\001\n\025GetInd" - "exStateResponse\022+\n\006status\030\001 \001(\0132\033.milvus" - ".proto.common.Status\022.\n\005state\030\002 \001(\0162\037.mi" - "lvus.proto.common.IndexState\022\023\n\013fail_rea" - "son\030\003 \001(\t\"\220\001\n\020DropIndexRequest\022*\n\004base\030\001" - " \001(\0132\034.milvus.proto.common.MsgBase\022\017\n\007db" - "_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\022\n\n" - "field_name\030\004 \001(\t\022\022\n\nindex_name\030\005 \001(\t\"\327\001\n" - "\rInsertRequest\022*\n\004base\030\001 \001(\0132\034.milvus.pr" - "oto.common.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017c" - "ollection_name\030\003 \001(\t\022\026\n\016partition_name\030\004" - " \001(\t\0223\n\013fields_data\030\005 \003(\0132\036.milvus.proto" - ".schema.FieldData\022\021\n\thash_keys\030\006 \003(\r\022\020\n\010" - "num_rows\030\007 \001(\r\"\360\001\n\016MutationResult\022+\n\006sta" - "tus\030\001 \001(\0132\033.milvus.proto.common.Status\022%" - "\n\003IDs\030\002 \001(\0132\030.milvus.proto.schema.IDs\022\022\n" - "\nsucc_index\030\003 \003(\r\022\021\n\terr_index\030\004 \003(\r\022\024\n\014" - "acknowledged\030\005 \001(\010\022\022\n\ninsert_cnt\030\006 \001(\003\022\022" - "\n\ndelete_cnt\030\007 \001(\003\022\022\n\nupsert_cnt\030\010 \001(\003\022\021" - "\n\ttimestamp\030\t \001(\004\"\213\001\n\rDeleteRequest\022*\n\004b" - "ase\030\001 \001(\0132\034.milvus.proto.common.MsgBase\022" - "\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(" - "\t\022\026\n\016partition_name\030\004 \001(\t\022\014\n\004expr\030\005 \001(\t\"" - "c\n\020PlaceholderValue\022\013\n\003tag\030\001 \001(\t\0222\n\004type" - "\030\002 \001(\0162$.milvus.proto.milvus.Placeholder" - "Type\022\016\n\006values\030\003 \003(\014\"O\n\020PlaceholderGroup" - "\022;\n\014placeholders\030\001 \003(\0132%.milvus.proto.mi" - "lvus.PlaceholderValue\"\336\002\n\rSearchRequest\022" + "e\030\003 \001(\t\022\027\n\017partition_names\030\004 \003(\t\"\211\001\n\030Rel" + "easePartitionsRequest\022*\n\004base\030\001 \001(\0132\034.mi" + "lvus.proto.common.MsgBase\022\017\n\007db_name\030\002 \001" + "(\t\022\027\n\017collection_name\030\003 \001(\t\022\027\n\017partition" + "_names\030\004 \003(\t\"\215\001\n\035GetPartitionStatisticsR" + "equest\022*\n\004base\030\001 \001(\0132\034.milvus.proto.comm" + "on.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collectio" + "n_name\030\003 \001(\t\022\026\n\016partition_name\030\004 \001(\t\"\177\n\036" + "GetPartitionStatisticsResponse\022+\n\006status" + "\030\001 \001(\0132\033.milvus.proto.common.Status\0220\n\005s" + "tats\030\002 \003(\0132!.milvus.proto.common.KeyValu" + "ePair\"\311\001\n\025ShowPartitionsRequest\022*\n\004base\030" + "\001 \001(\0132\034.milvus.proto.common.MsgBase\022\017\n\007d" + "b_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\024\n" + "\014collectionID\030\004 \001(\003\022\027\n\017partition_names\030\005" + " \003(\t\022+\n\004type\030\006 \001(\0162\035.milvus.proto.milvus" + ".ShowType\"\316\001\n\026ShowPartitionsResponse\022+\n\006" + "status\030\001 \001(\0132\033.milvus.proto.common.Statu" + "s\022\027\n\017partition_names\030\002 \003(\t\022\024\n\014partitionI" + "Ds\030\003 \003(\003\022\032\n\022created_timestamps\030\004 \003(\004\022\036\n\026" + "created_utc_timestamps\030\005 \003(\004\022\034\n\024inMemory" + "_percentages\030\006 \003(\003\"m\n\026DescribeSegmentReq" + "uest\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common" + ".MsgBase\022\024\n\014collectionID\030\002 \001(\003\022\021\n\tsegmen" + "tID\030\003 \001(\003\"~\n\027DescribeSegmentResponse\022+\n\006" + "status\030\001 \001(\0132\033.milvus.proto.common.Statu" + "s\022\017\n\007indexID\030\002 \001(\003\022\017\n\007buildID\030\003 \001(\003\022\024\n\014e" + "nable_index\030\004 \001(\010\"l\n\023ShowSegmentsRequest" + "\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common.Msg" + "Base\022\024\n\014collectionID\030\002 \001(\003\022\023\n\013partitionI" + "D\030\003 \001(\003\"W\n\024ShowSegmentsResponse\022+\n\006statu" + "s\030\001 \001(\0132\033.milvus.proto.common.Status\022\022\n\n" + "segmentIDs\030\002 \003(\003\"\267\001\n\022CreateIndexRequest\022" "*\n\004base\030\001 \001(\0132\034.milvus.proto.common.MsgB" "ase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_name\030" - "\003 \001(\t\022\027\n\017partition_names\030\004 \003(\t\022\013\n\003dsl\030\005 " - "\001(\t\022\031\n\021placeholder_group\030\006 \001(\014\022.\n\010dsl_ty" - "pe\030\007 \001(\0162\034.milvus.proto.common.DslType\022\025" - "\n\routput_fields\030\010 \003(\t\0228\n\rsearch_params\030\t" - " \003(\0132!.milvus.proto.common.KeyValuePair\022" - "\030\n\020travel_timestamp\030\n \001(\004\022\033\n\023guarantee_t" - "imestamp\030\013 \001(\004\"5\n\004Hits\022\013\n\003IDs\030\001 \003(\003\022\020\n\010r" - "ow_data\030\002 \003(\014\022\016\n\006scores\030\003 \003(\002\"t\n\rSearchR" - "esults\022+\n\006status\030\001 \001(\0132\033.milvus.proto.co" - "mmon.Status\0226\n\007results\030\002 \001(\0132%.milvus.pr" - "oto.schema.SearchResultData\"e\n\014FlushRequ" + "\003 \001(\t\022\022\n\nfield_name\030\004 \001(\t\0227\n\014extra_param" + "s\030\005 \003(\0132!.milvus.proto.common.KeyValuePa" + "ir\"\224\001\n\024DescribeIndexRequest\022*\n\004base\030\001 \001(" + "\0132\034.milvus.proto.common.MsgBase\022\017\n\007db_na" + "me\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\022\n\nfie" + "ld_name\030\004 \001(\t\022\022\n\nindex_name\030\005 \001(\t\"~\n\020Ind" + "exDescription\022\022\n\nindex_name\030\001 \001(\t\022\017\n\007ind" + "exID\030\002 \001(\003\0221\n\006params\030\003 \003(\0132!.milvus.prot" + "o.common.KeyValuePair\022\022\n\nfield_name\030\004 \001(" + "\t\"\207\001\n\025DescribeIndexResponse\022+\n\006status\030\001 " + "\001(\0132\033.milvus.proto.common.Status\022A\n\022inde" + "x_descriptions\030\002 \003(\0132%.milvus.proto.milv" + "us.IndexDescription\"\234\001\n\034GetIndexBuildPro" + "gressRequest\022*\n\004base\030\001 \001(\0132\034.milvus.prot" + "o.common.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017col" + "lection_name\030\003 \001(\t\022\022\n\nfield_name\030\004 \001(\t\022\022" + "\n\nindex_name\030\005 \001(\t\"v\n\035GetIndexBuildProgr" + "essResponse\022+\n\006status\030\001 \001(\0132\033.milvus.pro" + "to.common.Status\022\024\n\014indexed_rows\030\002 \001(\003\022\022" + "\n\ntotal_rows\030\003 \001(\003\"\224\001\n\024GetIndexStateRequ" "est\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common." - "MsgBase\022\017\n\007db_name\030\002 \001(\t\022\030\n\020collection_n" - "ames\030\003 \003(\t\"\351\001\n\rFlushResponse\022+\n\006status\030\001" - " \001(\0132\033.milvus.proto.common.Status\022\017\n\007db_" - "name\030\002 \001(\t\022G\n\013coll_segIDs\030\003 \003(\01322.milvus" - ".proto.milvus.FlushResponse.CollSegIDsEn" - "try\032Q\n\017CollSegIDsEntry\022\013\n\003key\030\001 \001(\t\022-\n\005v" - "alue\030\002 \001(\0132\036.milvus.proto.schema.LongArr" - "ay:\0028\001\"\331\001\n\014QueryRequest\022*\n\004base\030\001 \001(\0132\034." + "MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_n" + "ame\030\003 \001(\t\022\022\n\nfield_name\030\004 \001(\t\022\022\n\nindex_n" + "ame\030\005 \001(\t\"\211\001\n\025GetIndexStateResponse\022+\n\006s" + "tatus\030\001 \001(\0132\033.milvus.proto.common.Status" + "\022.\n\005state\030\002 \001(\0162\037.milvus.proto.common.In" + "dexState\022\023\n\013fail_reason\030\003 \001(\t\"\220\001\n\020DropIn" + "dexRequest\022*\n\004base\030\001 \001(\0132\034.milvus.proto." + "common.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017colle" + "ction_name\030\003 \001(\t\022\022\n\nfield_name\030\004 \001(\t\022\022\n\n" + "index_name\030\005 \001(\t\"\327\001\n\rInsertRequest\022*\n\004ba" + "se\030\001 \001(\0132\034.milvus.proto.common.MsgBase\022\017" + "\n\007db_name\030\002 \001(\t\022\027\n\017collection_name\030\003 \001(\t" + "\022\026\n\016partition_name\030\004 \001(\t\0223\n\013fields_data\030" + "\005 \003(\0132\036.milvus.proto.schema.FieldData\022\021\n" + "\thash_keys\030\006 \003(\r\022\020\n\010num_rows\030\007 \001(\r\"\360\001\n\016M" + "utationResult\022+\n\006status\030\001 \001(\0132\033.milvus.p" + "roto.common.Status\022%\n\003IDs\030\002 \001(\0132\030.milvus" + ".proto.schema.IDs\022\022\n\nsucc_index\030\003 \003(\r\022\021\n" + "\terr_index\030\004 \003(\r\022\024\n\014acknowledged\030\005 \001(\010\022\022" + "\n\ninsert_cnt\030\006 \001(\003\022\022\n\ndelete_cnt\030\007 \001(\003\022\022" + "\n\nupsert_cnt\030\010 \001(\003\022\021\n\ttimestamp\030\t \001(\004\"\213\001" + "\n\rDeleteRequest\022*\n\004base\030\001 \001(\0132\034.milvus.p" + "roto.common.MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017" + "collection_name\030\003 \001(\t\022\026\n\016partition_name\030" + "\004 \001(\t\022\014\n\004expr\030\005 \001(\t\"c\n\020PlaceholderValue\022" + "\013\n\003tag\030\001 \001(\t\0222\n\004type\030\002 \001(\0162$.milvus.prot" + "o.milvus.PlaceholderType\022\016\n\006values\030\003 \003(\014" + "\"O\n\020PlaceholderGroup\022;\n\014placeholders\030\001 \003" + "(\0132%.milvus.proto.milvus.PlaceholderValu" + "e\"\336\002\n\rSearchRequest\022*\n\004base\030\001 \001(\0132\034.milv" + "us.proto.common.MsgBase\022\017\n\007db_name\030\002 \001(\t" + "\022\027\n\017collection_name\030\003 \001(\t\022\027\n\017partition_n" + "ames\030\004 \003(\t\022\013\n\003dsl\030\005 \001(\t\022\031\n\021placeholder_g" + "roup\030\006 \001(\014\022.\n\010dsl_type\030\007 \001(\0162\034.milvus.pr" + "oto.common.DslType\022\025\n\routput_fields\030\010 \003(" + "\t\0228\n\rsearch_params\030\t \003(\0132!.milvus.proto." + "common.KeyValuePair\022\030\n\020travel_timestamp\030" + "\n \001(\004\022\033\n\023guarantee_timestamp\030\013 \001(\004\"5\n\004Hi" + "ts\022\013\n\003IDs\030\001 \003(\003\022\020\n\010row_data\030\002 \003(\014\022\016\n\006sco" + "res\030\003 \003(\002\"t\n\rSearchResults\022+\n\006status\030\001 \001" + "(\0132\033.milvus.proto.common.Status\0226\n\007resul" + "ts\030\002 \001(\0132%.milvus.proto.schema.SearchRes" + "ultData\"e\n\014FlushRequest\022*\n\004base\030\001 \001(\0132\034." "milvus.proto.common.MsgBase\022\017\n\007db_name\030\002" - " \001(\t\022\027\n\017collection_name\030\003 \001(\t\022\014\n\004expr\030\004 " - "\001(\t\022\025\n\routput_fields\030\005 \003(\t\022\027\n\017partition_" - "names\030\006 \003(\t\022\030\n\020travel_timestamp\030\007 \001(\004\022\033\n" - "\023guarantee_timestamp\030\010 \001(\004\"p\n\014QueryResul" - "ts\022+\n\006status\030\001 \001(\0132\033.milvus.proto.common" - ".Status\0223\n\013fields_data\030\002 \003(\0132\036.milvus.pr" - "oto.schema.FieldData\"}\n\tVectorIDs\022\027\n\017col" - "lection_name\030\001 \001(\t\022\022\n\nfield_name\030\002 \001(\t\022*" - "\n\010id_array\030\003 \001(\0132\030.milvus.proto.schema.I" - "Ds\022\027\n\017partition_names\030\004 \003(\t\"\203\001\n\014VectorsA" - "rray\0222\n\010id_array\030\001 \001(\0132\036.milvus.proto.mi" - "lvus.VectorIDsH\000\0226\n\ndata_array\030\002 \001(\0132 .m" - "ilvus.proto.schema.VectorFieldH\000B\007\n\005arra" - "y\"\335\001\n\023CalcDistanceRequest\022*\n\004base\030\001 \001(\0132" - "\034.milvus.proto.common.MsgBase\0222\n\007op_left" - "\030\002 \001(\0132!.milvus.proto.milvus.VectorsArra" - "y\0223\n\010op_right\030\003 \001(\0132!.milvus.proto.milvu" - "s.VectorsArray\0221\n\006params\030\004 \003(\0132!.milvus." - "proto.common.KeyValuePair\"\265\001\n\023CalcDistan" - "ceResults\022+\n\006status\030\001 \001(\0132\033.milvus.proto" - ".common.Status\0221\n\010int_dist\030\002 \001(\0132\035.milvu" - "s.proto.schema.IntArrayH\000\0225\n\nfloat_dist\030" - "\003 \001(\0132\037.milvus.proto.schema.FloatArrayH\000" - "B\007\n\005array\"\231\001\n\025PersistentSegmentInfo\022\021\n\ts" - "egmentID\030\001 \001(\003\022\024\n\014collectionID\030\002 \001(\003\022\023\n\013" - "partitionID\030\003 \001(\003\022\020\n\010num_rows\030\004 \001(\003\0220\n\005s" - "tate\030\005 \001(\0162!.milvus.proto.common.Segment" - "State\"u\n\037GetPersistentSegmentInfoRequest" - "\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common.Msg" - "Base\022\016\n\006dbName\030\002 \001(\t\022\026\n\016collectionName\030\003" - " \001(\t\"\212\001\n GetPersistentSegmentInfoRespons" - "e\022+\n\006status\030\001 \001(\0132\033.milvus.proto.common." - "Status\0229\n\005infos\030\002 \003(\0132*.milvus.proto.mil" - "vus.PersistentSegmentInfo\"\231\001\n\020QuerySegme" - "ntInfo\022\021\n\tsegmentID\030\001 \001(\003\022\024\n\014collectionI" - "D\030\002 \001(\003\022\023\n\013partitionID\030\003 \001(\003\022\020\n\010mem_size" - "\030\004 \001(\003\022\020\n\010num_rows\030\005 \001(\003\022\022\n\nindex_name\030\006" - " \001(\t\022\017\n\007indexID\030\007 \001(\003\"p\n\032GetQuerySegment" - "InfoRequest\022*\n\004base\030\001 \001(\0132\034.milvus.proto" - ".common.MsgBase\022\016\n\006dbName\030\002 \001(\t\022\026\n\016colle" - "ctionName\030\003 \001(\t\"\200\001\n\033GetQuerySegmentInfoR" - "esponse\022+\n\006status\030\001 \001(\0132\033.milvus.proto.c" - "ommon.Status\0224\n\005infos\030\002 \003(\0132%.milvus.pro" - "to.milvus.QuerySegmentInfo\"$\n\014DummyReque" - "st\022\024\n\014request_type\030\001 \001(\t\"!\n\rDummyRespons" - "e\022\020\n\010response\030\001 \001(\t\"\025\n\023RegisterLinkReque" - "st\"r\n\024RegisterLinkResponse\022-\n\007address\030\001 " - "\001(\0132\034.milvus.proto.common.Address\022+\n\006sta" - "tus\030\002 \001(\0132\033.milvus.proto.common.Status\"P" - "\n\021GetMetricsRequest\022*\n\004base\030\001 \001(\0132\034.milv" - "us.proto.common.MsgBase\022\017\n\007request\030\002 \001(\t" - "\"k\n\022GetMetricsResponse\022+\n\006status\030\001 \001(\0132\033" - ".milvus.proto.common.Status\022\020\n\010response\030" - "\002 \001(\t\022\026\n\016component_name\030\003 \001(\t*!\n\010ShowTyp" - "e\022\007\n\003All\020\000\022\014\n\010InMemory\020\001*>\n\017PlaceholderT" - "ype\022\010\n\004None\020\000\022\020\n\014BinaryVector\020d\022\017\n\013Float" - "Vector\020e2\326\030\n\rMilvusService\022_\n\020CreateColl" - "ection\022,.milvus.proto.milvus.CreateColle" - "ctionRequest\032\033.milvus.proto.common.Statu" - "s\"\000\022[\n\016DropCollection\022*.milvus.proto.mil" - "vus.DropCollectionRequest\032\033.milvus.proto" - ".common.Status\"\000\022_\n\rHasCollection\022).milv" - "us.proto.milvus.HasCollectionRequest\032!.m" - "ilvus.proto.milvus.BoolResponse\"\000\022[\n\016Loa" - "dCollection\022*.milvus.proto.milvus.LoadCo" - "llectionRequest\032\033.milvus.proto.common.St" - "atus\"\000\022a\n\021ReleaseCollection\022-.milvus.pro" - "to.milvus.ReleaseCollectionRequest\032\033.mil" - "vus.proto.common.Status\"\000\022w\n\022DescribeCol" - "lection\022..milvus.proto.milvus.DescribeCo" - "llectionRequest\032/.milvus.proto.milvus.De" - "scribeCollectionResponse\"\000\022\206\001\n\027GetCollec" - "tionStatistics\0223.milvus.proto.milvus.Get" - "CollectionStatisticsRequest\0324.milvus.pro" - "to.milvus.GetCollectionStatisticsRespons" - "e\"\000\022n\n\017ShowCollections\022+.milvus.proto.mi" - "lvus.ShowCollectionsRequest\032,.milvus.pro" - "to.milvus.ShowCollectionsResponse\"\000\022]\n\017C" - "reatePartition\022+.milvus.proto.milvus.Cre" - "atePartitionRequest\032\033.milvus.proto.commo" - "n.Status\"\000\022Y\n\rDropPartition\022).milvus.pro" - "to.milvus.DropPartitionRequest\032\033.milvus." - "proto.common.Status\"\000\022]\n\014HasPartition\022(." - "milvus.proto.milvus.HasPartitionRequest\032" - "!.milvus.proto.milvus.BoolResponse\"\000\022[\n\016" - "LoadPartitions\022*.milvus.proto.milvus.Loa" - "dPartitionsRequest\032\033.milvus.proto.common" - ".Status\"\000\022a\n\021ReleasePartitions\022-.milvus." - "proto.milvus.ReleasePartitionsRequest\032\033." - "milvus.proto.common.Status\"\000\022\203\001\n\026GetPart" - "itionStatistics\0222.milvus.proto.milvus.Ge" - "tPartitionStatisticsRequest\0323.milvus.pro" - "to.milvus.GetPartitionStatisticsResponse" - "\"\000\022k\n\016ShowPartitions\022*.milvus.proto.milv" - "us.ShowPartitionsRequest\032+.milvus.proto." - "milvus.ShowPartitionsResponse\"\000\022U\n\013Creat" - "eIndex\022\'.milvus.proto.milvus.CreateIndex" - "Request\032\033.milvus.proto.common.Status\"\000\022h" - "\n\rDescribeIndex\022).milvus.proto.milvus.De" - "scribeIndexRequest\032*.milvus.proto.milvus" - ".DescribeIndexResponse\"\000\022h\n\rGetIndexStat" - "e\022).milvus.proto.milvus.GetIndexStateReq" - "uest\032*.milvus.proto.milvus.GetIndexState" - "Response\"\000\022\200\001\n\025GetIndexBuildProgress\0221.m" - "ilvus.proto.milvus.GetIndexBuildProgress" - "Request\0322.milvus.proto.milvus.GetIndexBu" - "ildProgressResponse\"\000\022Q\n\tDropIndex\022%.mil" - "vus.proto.milvus.DropIndexRequest\032\033.milv" - "us.proto.common.Status\"\000\022S\n\006Insert\022\".mil" - "vus.proto.milvus.InsertRequest\032#.milvus." - "proto.milvus.MutationResult\"\000\022S\n\006Delete\022" - "\".milvus.proto.milvus.DeleteRequest\032#.mi" - "lvus.proto.milvus.MutationResult\"\000\022R\n\006Se" - "arch\022\".milvus.proto.milvus.SearchRequest" - "\032\".milvus.proto.milvus.SearchResults\"\000\022P" - "\n\005Flush\022!.milvus.proto.milvus.FlushReque" - "st\032\".milvus.proto.milvus.FlushResponse\"\000" - "\022O\n\005Query\022!.milvus.proto.milvus.QueryReq" - "uest\032!.milvus.proto.milvus.QueryResults\"" - "\000\022d\n\014CalcDistance\022(.milvus.proto.milvus." - "CalcDistanceRequest\032(.milvus.proto.milvu" - "s.CalcDistanceResults\"\000\022\211\001\n\030GetPersisten" - "tSegmentInfo\0224.milvus.proto.milvus.GetPe" - "rsistentSegmentInfoRequest\0325.milvus.prot" - "o.milvus.GetPersistentSegmentInfoRespons" - "e\"\000\022z\n\023GetQuerySegmentInfo\022/.milvus.prot" - "o.milvus.GetQuerySegmentInfoRequest\0320.mi" - "lvus.proto.milvus.GetQuerySegmentInfoRes" - "ponse\"\000\022P\n\005Dummy\022!.milvus.proto.milvus.D" - "ummyRequest\032\".milvus.proto.milvus.DummyR" - "esponse\"\000\022e\n\014RegisterLink\022(.milvus.proto" - ".milvus.RegisterLinkRequest\032).milvus.pro" - "to.milvus.RegisterLinkResponse\"\000\022_\n\nGetM" - "etrics\022&.milvus.proto.milvus.GetMetricsR" - "equest\032\'.milvus.proto.milvus.GetMetricsR" - "esponse\"\0002u\n\014ProxyService\022e\n\014RegisterLin" - "k\022(.milvus.proto.milvus.RegisterLinkRequ" - "est\032).milvus.proto.milvus.RegisterLinkRe" - "sponse\"\000B5Z3github.com/milvus-io/milvus/" - "internal/proto/milvuspbb\006proto3" + " \001(\t\022\030\n\020collection_names\030\003 \003(\t\"\351\001\n\rFlush" + "Response\022+\n\006status\030\001 \001(\0132\033.milvus.proto." + "common.Status\022\017\n\007db_name\030\002 \001(\t\022G\n\013coll_s" + "egIDs\030\003 \003(\01322.milvus.proto.milvus.FlushR" + "esponse.CollSegIDsEntry\032Q\n\017CollSegIDsEnt" + "ry\022\013\n\003key\030\001 \001(\t\022-\n\005value\030\002 \001(\0132\036.milvus." + "proto.schema.LongArray:\0028\001\"\331\001\n\014QueryRequ" + "est\022*\n\004base\030\001 \001(\0132\034.milvus.proto.common." + "MsgBase\022\017\n\007db_name\030\002 \001(\t\022\027\n\017collection_n" + "ame\030\003 \001(\t\022\014\n\004expr\030\004 \001(\t\022\025\n\routput_fields" + "\030\005 \003(\t\022\027\n\017partition_names\030\006 \003(\t\022\030\n\020trave" + "l_timestamp\030\007 \001(\004\022\033\n\023guarantee_timestamp" + "\030\010 \001(\004\"p\n\014QueryResults\022+\n\006status\030\001 \001(\0132\033" + ".milvus.proto.common.Status\0223\n\013fields_da" + "ta\030\002 \003(\0132\036.milvus.proto.schema.FieldData" + "\"}\n\tVectorIDs\022\027\n\017collection_name\030\001 \001(\t\022\022" + "\n\nfield_name\030\002 \001(\t\022*\n\010id_array\030\003 \001(\0132\030.m" + "ilvus.proto.schema.IDs\022\027\n\017partition_name" + "s\030\004 \003(\t\"\203\001\n\014VectorsArray\0222\n\010id_array\030\001 \001" + "(\0132\036.milvus.proto.milvus.VectorIDsH\000\0226\n\n" + "data_array\030\002 \001(\0132 .milvus.proto.schema.V" + "ectorFieldH\000B\007\n\005array\"\335\001\n\023CalcDistanceRe" + "quest\022*\n\004base\030\001 \001(\0132\034.milvus.proto.commo" + "n.MsgBase\0222\n\007op_left\030\002 \001(\0132!.milvus.prot" + "o.milvus.VectorsArray\0223\n\010op_right\030\003 \001(\0132" + "!.milvus.proto.milvus.VectorsArray\0221\n\006pa" + "rams\030\004 \003(\0132!.milvus.proto.common.KeyValu" + "ePair\"\265\001\n\023CalcDistanceResults\022+\n\006status\030" + "\001 \001(\0132\033.milvus.proto.common.Status\0221\n\010in" + "t_dist\030\002 \001(\0132\035.milvus.proto.schema.IntAr" + "rayH\000\0225\n\nfloat_dist\030\003 \001(\0132\037.milvus.proto" + ".schema.FloatArrayH\000B\007\n\005array\"\231\001\n\025Persis" + "tentSegmentInfo\022\021\n\tsegmentID\030\001 \001(\003\022\024\n\014co" + "llectionID\030\002 \001(\003\022\023\n\013partitionID\030\003 \001(\003\022\020\n" + "\010num_rows\030\004 \001(\003\0220\n\005state\030\005 \001(\0162!.milvus." + "proto.common.SegmentState\"u\n\037GetPersiste" + "ntSegmentInfoRequest\022*\n\004base\030\001 \001(\0132\034.mil" + "vus.proto.common.MsgBase\022\016\n\006dbName\030\002 \001(\t" + "\022\026\n\016collectionName\030\003 \001(\t\"\212\001\n GetPersiste" + "ntSegmentInfoResponse\022+\n\006status\030\001 \001(\0132\033." + "milvus.proto.common.Status\0229\n\005infos\030\002 \003(" + "\0132*.milvus.proto.milvus.PersistentSegmen" + "tInfo\"\231\001\n\020QuerySegmentInfo\022\021\n\tsegmentID\030" + "\001 \001(\003\022\024\n\014collectionID\030\002 \001(\003\022\023\n\013partition" + "ID\030\003 \001(\003\022\020\n\010mem_size\030\004 \001(\003\022\020\n\010num_rows\030\005" + " \001(\003\022\022\n\nindex_name\030\006 \001(\t\022\017\n\007indexID\030\007 \001(" + "\003\"p\n\032GetQuerySegmentInfoRequest\022*\n\004base\030" + "\001 \001(\0132\034.milvus.proto.common.MsgBase\022\016\n\006d" + "bName\030\002 \001(\t\022\026\n\016collectionName\030\003 \001(\t\"\200\001\n\033" + "GetQuerySegmentInfoResponse\022+\n\006status\030\001 " + "\001(\0132\033.milvus.proto.common.Status\0224\n\005info" + "s\030\002 \003(\0132%.milvus.proto.milvus.QuerySegme" + "ntInfo\"$\n\014DummyRequest\022\024\n\014request_type\030\001" + " \001(\t\"!\n\rDummyResponse\022\020\n\010response\030\001 \001(\t\"" + "\025\n\023RegisterLinkRequest\"r\n\024RegisterLinkRe" + "sponse\022-\n\007address\030\001 \001(\0132\034.milvus.proto.c" + "ommon.Address\022+\n\006status\030\002 \001(\0132\033.milvus.p" + "roto.common.Status\"P\n\021GetMetricsRequest\022" + "*\n\004base\030\001 \001(\0132\034.milvus.proto.common.MsgB" + "ase\022\017\n\007request\030\002 \001(\t\"k\n\022GetMetricsRespon" + "se\022+\n\006status\030\001 \001(\0132\033.milvus.proto.common" + ".Status\022\020\n\010response\030\002 \001(\t\022\026\n\016component_n" + "ame\030\003 \001(\t*!\n\010ShowType\022\007\n\003All\020\000\022\014\n\010InMemo" + "ry\020\001*>\n\017PlaceholderType\022\010\n\004None\020\000\022\020\n\014Bin" + "aryVector\020d\022\017\n\013FloatVector\020e2\326\030\n\rMilvusS" + "ervice\022_\n\020CreateCollection\022,.milvus.prot" + "o.milvus.CreateCollectionRequest\032\033.milvu" + "s.proto.common.Status\"\000\022[\n\016DropCollectio" + "n\022*.milvus.proto.milvus.DropCollectionRe" + "quest\032\033.milvus.proto.common.Status\"\000\022_\n\r" + "HasCollection\022).milvus.proto.milvus.HasC" + "ollectionRequest\032!.milvus.proto.milvus.B" + "oolResponse\"\000\022[\n\016LoadCollection\022*.milvus" + ".proto.milvus.LoadCollectionRequest\032\033.mi" + "lvus.proto.common.Status\"\000\022a\n\021ReleaseCol" + "lection\022-.milvus.proto.milvus.ReleaseCol" + "lectionRequest\032\033.milvus.proto.common.Sta" + "tus\"\000\022w\n\022DescribeCollection\022..milvus.pro" + "to.milvus.DescribeCollectionRequest\032/.mi" + "lvus.proto.milvus.DescribeCollectionResp" + "onse\"\000\022\206\001\n\027GetCollectionStatistics\0223.mil" + "vus.proto.milvus.GetCollectionStatistics" + "Request\0324.milvus.proto.milvus.GetCollect" + "ionStatisticsResponse\"\000\022n\n\017ShowCollectio" + "ns\022+.milvus.proto.milvus.ShowCollections" + "Request\032,.milvus.proto.milvus.ShowCollec" + "tionsResponse\"\000\022]\n\017CreatePartition\022+.mil" + "vus.proto.milvus.CreatePartitionRequest\032" + "\033.milvus.proto.common.Status\"\000\022Y\n\rDropPa" + "rtition\022).milvus.proto.milvus.DropPartit" + "ionRequest\032\033.milvus.proto.common.Status\"" + "\000\022]\n\014HasPartition\022(.milvus.proto.milvus." + "HasPartitionRequest\032!.milvus.proto.milvu" + "s.BoolResponse\"\000\022[\n\016LoadPartitions\022*.mil" + "vus.proto.milvus.LoadPartitionsRequest\032\033" + ".milvus.proto.common.Status\"\000\022a\n\021Release" + "Partitions\022-.milvus.proto.milvus.Release" + "PartitionsRequest\032\033.milvus.proto.common." + "Status\"\000\022\203\001\n\026GetPartitionStatistics\0222.mi" + "lvus.proto.milvus.GetPartitionStatistics" + "Request\0323.milvus.proto.milvus.GetPartiti" + "onStatisticsResponse\"\000\022k\n\016ShowPartitions" + "\022*.milvus.proto.milvus.ShowPartitionsReq" + "uest\032+.milvus.proto.milvus.ShowPartition" + "sResponse\"\000\022U\n\013CreateIndex\022\'.milvus.prot" + "o.milvus.CreateIndexRequest\032\033.milvus.pro" + "to.common.Status\"\000\022h\n\rDescribeIndex\022).mi" + "lvus.proto.milvus.DescribeIndexRequest\032*" + ".milvus.proto.milvus.DescribeIndexRespon" + "se\"\000\022h\n\rGetIndexState\022).milvus.proto.mil" + "vus.GetIndexStateRequest\032*.milvus.proto." + "milvus.GetIndexStateResponse\"\000\022\200\001\n\025GetIn" + "dexBuildProgress\0221.milvus.proto.milvus.G" + "etIndexBuildProgressRequest\0322.milvus.pro" + "to.milvus.GetIndexBuildProgressResponse\"" + "\000\022Q\n\tDropIndex\022%.milvus.proto.milvus.Dro" + "pIndexRequest\032\033.milvus.proto.common.Stat" + "us\"\000\022S\n\006Insert\022\".milvus.proto.milvus.Ins" + "ertRequest\032#.milvus.proto.milvus.Mutatio" + "nResult\"\000\022S\n\006Delete\022\".milvus.proto.milvu" + "s.DeleteRequest\032#.milvus.proto.milvus.Mu" + "tationResult\"\000\022R\n\006Search\022\".milvus.proto." + "milvus.SearchRequest\032\".milvus.proto.milv" + "us.SearchResults\"\000\022P\n\005Flush\022!.milvus.pro" + "to.milvus.FlushRequest\032\".milvus.proto.mi" + "lvus.FlushResponse\"\000\022O\n\005Query\022!.milvus.p" + "roto.milvus.QueryRequest\032!.milvus.proto." + "milvus.QueryResults\"\000\022d\n\014CalcDistance\022(." + "milvus.proto.milvus.CalcDistanceRequest\032" + "(.milvus.proto.milvus.CalcDistanceResult" + "s\"\000\022\211\001\n\030GetPersistentSegmentInfo\0224.milvu" + "s.proto.milvus.GetPersistentSegmentInfoR" + "equest\0325.milvus.proto.milvus.GetPersiste" + "ntSegmentInfoResponse\"\000\022z\n\023GetQuerySegme" + "ntInfo\022/.milvus.proto.milvus.GetQuerySeg" + "mentInfoRequest\0320.milvus.proto.milvus.Ge" + "tQuerySegmentInfoResponse\"\000\022P\n\005Dummy\022!.m" + "ilvus.proto.milvus.DummyRequest\032\".milvus" + ".proto.milvus.DummyResponse\"\000\022e\n\014Registe" + "rLink\022(.milvus.proto.milvus.RegisterLink" + "Request\032).milvus.proto.milvus.RegisterLi" + "nkResponse\"\000\022_\n\nGetMetrics\022&.milvus.prot" + "o.milvus.GetMetricsRequest\032\'.milvus.prot" + "o.milvus.GetMetricsResponse\"\0002u\n\014ProxySe" + "rvice\022e\n\014RegisterLink\022(.milvus.proto.mil" + "vus.RegisterLinkRequest\032).milvus.proto.m" + "ilvus.RegisterLinkResponse\"\000B5Z3github.c" + "om/milvus-io/milvus/internal/proto/milvu" + "spbb\006proto3" ; static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_milvus_2eproto_deps[2] = { &::descriptor_table_common_2eproto, @@ -2359,7 +2361,7 @@ static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_mil static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_milvus_2eproto_once; static bool descriptor_table_milvus_2eproto_initialized = false; const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_milvus_2eproto = { - &descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 12351, + &descriptor_table_milvus_2eproto_initialized, descriptor_table_protodef_milvus_2eproto, "milvus.proto", 12371, &descriptor_table_milvus_2eproto_once, descriptor_table_milvus_2eproto_sccs, descriptor_table_milvus_2eproto_deps, 64, 2, schemas, file_default_instances, TableStruct_milvus_2eproto::offsets, file_level_metadata_milvus_2eproto, 64, file_level_enum_descriptors_milvus_2eproto, file_level_service_descriptors_milvus_2eproto, @@ -4929,16 +4931,16 @@ DescribeCollectionResponse::DescribeCollectionResponse(const DescribeCollectionR schema_ = nullptr; } ::memcpy(&collectionid_, &from.collectionid_, - static_cast(reinterpret_cast(&created_utc_timestamp_) - - reinterpret_cast(&collectionid_)) + sizeof(created_utc_timestamp_)); + static_cast(reinterpret_cast(&shards_num_) - + reinterpret_cast(&collectionid_)) + sizeof(shards_num_)); // @@protoc_insertion_point(copy_constructor:milvus.proto.milvus.DescribeCollectionResponse) } void DescribeCollectionResponse::SharedCtor() { ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_DescribeCollectionResponse_milvus_2eproto.base); ::memset(&status_, 0, static_cast( - reinterpret_cast(&created_utc_timestamp_) - - reinterpret_cast(&status_)) + sizeof(created_utc_timestamp_)); + reinterpret_cast(&shards_num_) - + reinterpret_cast(&status_)) + sizeof(shards_num_)); } DescribeCollectionResponse::~DescribeCollectionResponse() { @@ -4977,8 +4979,8 @@ void DescribeCollectionResponse::Clear() { } schema_ = nullptr; ::memset(&collectionid_, 0, static_cast( - reinterpret_cast(&created_utc_timestamp_) - - reinterpret_cast(&collectionid_)) + sizeof(created_utc_timestamp_)); + reinterpret_cast(&shards_num_) - + reinterpret_cast(&collectionid_)) + sizeof(shards_num_)); _internal_metadata_.Clear(); } @@ -5049,6 +5051,13 @@ const char* DescribeCollectionResponse::_InternalParse(const char* ptr, ::PROTOB CHK_(ptr); } else goto handle_unusual; continue; + // int32 shards_num = 8; + case 8: + if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) { + shards_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr); + CHK_(ptr); + } else goto handle_unusual; + continue; default: { handle_unusual: if ((tag & 7) == 4 || tag == 0) { @@ -5172,6 +5181,19 @@ bool DescribeCollectionResponse::MergePartialFromCodedStream( break; } + // int32 shards_num = 8; + case 8: { + if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (64 & 0xFF)) { + + DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive< + ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>( + input, &shards_num_))); + } else { + goto handle_unusual; + } + break; + } + default: { handle_unusual: if (tag == 0) { @@ -5246,6 +5268,11 @@ void DescribeCollectionResponse::SerializeWithCachedSizes( ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64(7, this->created_utc_timestamp(), output); } + // int32 shards_num = 8; + if (this->shards_num() != 0) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(8, this->shards_num(), output); + } + if (_internal_metadata_.have_unknown_fields()) { ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFields( _internal_metadata_.unknown_fields(), output); @@ -5308,6 +5335,11 @@ void DescribeCollectionResponse::SerializeWithCachedSizes( target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64ToArray(7, this->created_utc_timestamp(), target); } + // int32 shards_num = 8; + if (this->shards_num() != 0) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(8, this->shards_num(), target); + } + if (_internal_metadata_.have_unknown_fields()) { target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields(), target); @@ -5380,6 +5412,13 @@ size_t DescribeCollectionResponse::ByteSizeLong() const { this->created_utc_timestamp()); } + // int32 shards_num = 8; + if (this->shards_num() != 0) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size( + this->shards_num()); + } + int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size); SetCachedSize(cached_size); return total_size; @@ -5424,6 +5463,9 @@ void DescribeCollectionResponse::MergeFrom(const DescribeCollectionResponse& fro if (from.created_utc_timestamp() != 0) { set_created_utc_timestamp(from.created_utc_timestamp()); } + if (from.shards_num() != 0) { + set_shards_num(from.shards_num()); + } } void DescribeCollectionResponse::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) { @@ -5454,6 +5496,7 @@ void DescribeCollectionResponse::InternalSwap(DescribeCollectionResponse* other) swap(collectionid_, other->collectionid_); swap(created_timestamp_, other->created_timestamp_); swap(created_utc_timestamp_, other->created_utc_timestamp_); + swap(shards_num_, other->shards_num_); } ::PROTOBUF_NAMESPACE_ID::Metadata DescribeCollectionResponse::GetMetadata() const { diff --git a/internal/core/src/pb/milvus.pb.h b/internal/core/src/pb/milvus.pb.h index 3af30e40ea..37c02be6e2 100644 --- a/internal/core/src/pb/milvus.pb.h +++ b/internal/core/src/pb/milvus.pb.h @@ -1470,6 +1470,7 @@ class DescribeCollectionResponse : kCollectionIDFieldNumber = 3, kCreatedTimestampFieldNumber = 6, kCreatedUtcTimestampFieldNumber = 7, + kShardsNumFieldNumber = 8, }; // repeated string virtual_channel_names = 4; int virtual_channel_names_size() const; @@ -1536,6 +1537,11 @@ class DescribeCollectionResponse : ::PROTOBUF_NAMESPACE_ID::uint64 created_utc_timestamp() const; void set_created_utc_timestamp(::PROTOBUF_NAMESPACE_ID::uint64 value); + // int32 shards_num = 8; + void clear_shards_num(); + ::PROTOBUF_NAMESPACE_ID::int32 shards_num() const; + void set_shards_num(::PROTOBUF_NAMESPACE_ID::int32 value); + // @@protoc_insertion_point(class_scope:milvus.proto.milvus.DescribeCollectionResponse) private: class _Internal; @@ -1548,6 +1554,7 @@ class DescribeCollectionResponse : ::PROTOBUF_NAMESPACE_ID::int64 collectionid_; ::PROTOBUF_NAMESPACE_ID::uint64 created_timestamp_; ::PROTOBUF_NAMESPACE_ID::uint64 created_utc_timestamp_; + ::PROTOBUF_NAMESPACE_ID::int32 shards_num_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; friend struct ::TableStruct_milvus_2eproto; }; @@ -12146,6 +12153,20 @@ inline void DescribeCollectionResponse::set_created_utc_timestamp(::PROTOBUF_NAM // @@protoc_insertion_point(field_set:milvus.proto.milvus.DescribeCollectionResponse.created_utc_timestamp) } +// int32 shards_num = 8; +inline void DescribeCollectionResponse::clear_shards_num() { + shards_num_ = 0; +} +inline ::PROTOBUF_NAMESPACE_ID::int32 DescribeCollectionResponse::shards_num() const { + // @@protoc_insertion_point(field_get:milvus.proto.milvus.DescribeCollectionResponse.shards_num) + return shards_num_; +} +inline void DescribeCollectionResponse::set_shards_num(::PROTOBUF_NAMESPACE_ID::int32 value) { + + shards_num_ = value; + // @@protoc_insertion_point(field_set:milvus.proto.milvus.DescribeCollectionResponse.shards_num) +} + // ------------------------------------------------------------------- // LoadCollectionRequest diff --git a/internal/proto/etcd_meta.proto b/internal/proto/etcd_meta.proto index 0bf2a82388..41cef3357c 100644 --- a/internal/proto/etcd_meta.proto +++ b/internal/proto/etcd_meta.proto @@ -39,6 +39,7 @@ message CollectionInfo { repeated string virtual_channel_names = 7; repeated string physical_channel_names = 8; repeated uint64 partition_created_timestamps = 9; + int32 shards_num = 10; } message SegmentIndexInfo { diff --git a/internal/proto/etcdpb/etcd_meta.pb.go b/internal/proto/etcdpb/etcd_meta.pb.go index 3a9a1bb107..f3e0d73106 100644 --- a/internal/proto/etcdpb/etcd_meta.pb.go +++ b/internal/proto/etcdpb/etcd_meta.pb.go @@ -252,6 +252,7 @@ type CollectionInfo struct { VirtualChannelNames []string `protobuf:"bytes,7,rep,name=virtual_channel_names,json=virtualChannelNames,proto3" json:"virtual_channel_names,omitempty"` PhysicalChannelNames []string `protobuf:"bytes,8,rep,name=physical_channel_names,json=physicalChannelNames,proto3" json:"physical_channel_names,omitempty"` PartitionCreatedTimestamps []uint64 `protobuf:"varint,9,rep,packed,name=partition_created_timestamps,json=partitionCreatedTimestamps,proto3" json:"partition_created_timestamps,omitempty"` + ShardsNum int32 `protobuf:"varint,10,opt,name=shards_num,json=shardsNum,proto3" json:"shards_num,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -345,6 +346,13 @@ func (m *CollectionInfo) GetPartitionCreatedTimestamps() []uint64 { return nil } +func (m *CollectionInfo) GetShardsNum() int32 { + if m != nil { + return m.ShardsNum + } + return 0 +} + type SegmentIndexInfo struct { CollectionID int64 `protobuf:"varint,1,opt,name=collectionID,proto3" json:"collectionID,omitempty"` PartitionID int64 `protobuf:"varint,2,opt,name=partitionID,proto3" json:"partitionID,omitempty"` @@ -524,49 +532,50 @@ func init() { func init() { proto.RegisterFile("etcd_meta.proto", fileDescriptor_975d306d62b73e88) } var fileDescriptor_975d306d62b73e88 = []byte{ - // 693 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0xcf, 0x6e, 0xd3, 0x4e, - 0x10, 0x96, 0xeb, 0x34, 0xa9, 0x27, 0x69, 0xda, 0xee, 0xef, 0x8f, 0xac, 0xaa, 0x80, 0x6b, 0xa9, - 0x25, 0x12, 0x22, 0x11, 0x2d, 0xe2, 0x86, 0x04, 0xd4, 0xaa, 0x14, 0x21, 0xaa, 0xe2, 0x46, 0x1c, - 0xb8, 0x58, 0x1b, 0x7b, 0x92, 0xac, 0x64, 0xaf, 0x83, 0x77, 0x5d, 0x35, 0x37, 0xce, 0x3c, 0x02, - 0x4f, 0xc3, 0xdb, 0x70, 0xe0, 0x25, 0x90, 0x77, 0x6d, 0x27, 0x69, 0xc3, 0x91, 0x9b, 0xe7, 0x9b, - 0x99, 0xdd, 0x6f, 0xbe, 0xf9, 0xbc, 0xb0, 0x87, 0x32, 0x8c, 0x82, 0x04, 0x25, 0xed, 0xcf, 0xb3, - 0x54, 0xa6, 0xe4, 0x20, 0x61, 0xf1, 0x6d, 0x2e, 0x74, 0xd4, 0x2f, 0xb2, 0x87, 0x9d, 0x30, 0x4d, - 0x92, 0x94, 0x6b, 0xe8, 0xb0, 0x23, 0xc2, 0x19, 0x26, 0x65, 0xb9, 0xfb, 0xdd, 0x00, 0x18, 0x21, - 0xa7, 0x5c, 0x7e, 0x40, 0x49, 0x49, 0x17, 0xb6, 0x86, 0x9e, 0x6d, 0x38, 0x46, 0xcf, 0xf4, 0xb7, - 0x86, 0x1e, 0x39, 0x85, 0x3d, 0x9e, 0x27, 0xc1, 0x97, 0x1c, 0xb3, 0x45, 0xc0, 0xd3, 0x08, 0x85, - 0xbd, 0xa5, 0x92, 0xbb, 0x3c, 0x4f, 0x3e, 0x16, 0xe8, 0x55, 0x01, 0x92, 0x67, 0x70, 0xc0, 0xb8, - 0xc0, 0x4c, 0x06, 0xe1, 0x8c, 0x72, 0x8e, 0xf1, 0xd0, 0x13, 0xb6, 0xe9, 0x98, 0x3d, 0xcb, 0xdf, - 0xd7, 0x89, 0x8b, 0x1a, 0x27, 0x4f, 0x61, 0x4f, 0x1f, 0x58, 0xd7, 0xda, 0x0d, 0xc7, 0xe8, 0x59, - 0x7e, 0x57, 0xc1, 0x75, 0xa5, 0xfb, 0xd5, 0x00, 0xeb, 0x3a, 0x4b, 0xef, 0x16, 0x1b, 0xb9, 0xbd, - 0x82, 0x16, 0x8d, 0xa2, 0x0c, 0x85, 0xe6, 0xd4, 0x3e, 0x3b, 0xea, 0xaf, 0xcd, 0x5e, 0x4e, 0xfd, - 0x56, 0xd7, 0xf8, 0x55, 0x71, 0xc1, 0x35, 0x43, 0x91, 0xc7, 0x9b, 0xb8, 0xea, 0xc4, 0x92, 0xab, - 0xfb, 0xcd, 0x00, 0x6b, 0xc8, 0x23, 0xbc, 0x1b, 0xf2, 0x49, 0x4a, 0x1e, 0x01, 0xb0, 0x22, 0x08, - 0x38, 0x4d, 0x50, 0x51, 0xb1, 0x7c, 0x4b, 0x21, 0x57, 0x34, 0x41, 0x62, 0x43, 0x4b, 0x05, 0x43, - 0xaf, 0x54, 0xa9, 0x0a, 0x89, 0x07, 0x1d, 0xdd, 0x38, 0xa7, 0x19, 0x4d, 0xf4, 0x75, 0xed, 0xb3, - 0xe3, 0x8d, 0x84, 0xdf, 0xe3, 0xe2, 0x13, 0x8d, 0x73, 0xbc, 0xa6, 0x2c, 0xf3, 0xdb, 0xaa, 0xed, - 0x5a, 0x75, 0xb9, 0x1e, 0x74, 0x2f, 0x19, 0xc6, 0xd1, 0x92, 0x90, 0x0d, 0xad, 0x09, 0x8b, 0x31, - 0xaa, 0x85, 0xa9, 0xc2, 0x3f, 0x73, 0x71, 0x7f, 0x98, 0xd0, 0xbd, 0x48, 0xe3, 0x18, 0x43, 0xc9, - 0x52, 0xae, 0x8e, 0xb9, 0x2f, 0xed, 0x6b, 0x68, 0x6a, 0x97, 0x94, 0xca, 0x9e, 0xac, 0x13, 0x2d, - 0x1d, 0xb4, 0x3c, 0xe4, 0x46, 0x01, 0x7e, 0xd9, 0x44, 0x9e, 0x40, 0x3b, 0xcc, 0x90, 0x4a, 0x0c, - 0x24, 0x4b, 0xd0, 0x36, 0x1d, 0xa3, 0xd7, 0xf0, 0x41, 0x43, 0x23, 0x96, 0x20, 0x71, 0xa1, 0x33, - 0xa7, 0x99, 0x64, 0x8a, 0x80, 0x27, 0xec, 0x86, 0x63, 0xf6, 0x4c, 0x7f, 0x0d, 0x23, 0xa7, 0xd0, - 0xad, 0xe3, 0x42, 0x5d, 0x61, 0x6f, 0xab, 0x1d, 0xdd, 0x43, 0xc9, 0x25, 0xec, 0x4e, 0x0a, 0x51, - 0x02, 0x35, 0x1f, 0x0a, 0xbb, 0xb9, 0x49, 0xdb, 0xe2, 0x47, 0xe8, 0xaf, 0x8b, 0xe7, 0x77, 0x26, - 0x75, 0x8c, 0x82, 0x9c, 0xc1, 0x7f, 0xb7, 0x2c, 0x93, 0x39, 0x8d, 0x2b, 0x5f, 0xa8, 0x2d, 0x0b, - 0xbb, 0xa5, 0xae, 0xfd, 0xa7, 0x4c, 0x96, 0xde, 0xd0, 0x77, 0xbf, 0x84, 0xff, 0xe7, 0xb3, 0x85, - 0x60, 0xe1, 0x83, 0xa6, 0x1d, 0xd5, 0xf4, 0x6f, 0x95, 0x5d, 0xeb, 0x7a, 0x03, 0x47, 0xf5, 0x0c, - 0x81, 0x56, 0x25, 0x52, 0x4a, 0x09, 0x49, 0x93, 0xb9, 0xb0, 0x2d, 0xc7, 0xec, 0x35, 0xfc, 0xc3, - 0xba, 0xe6, 0x42, 0x97, 0x8c, 0xea, 0x0a, 0xf7, 0xa7, 0x01, 0xfb, 0x37, 0x38, 0x4d, 0x90, 0xcb, - 0xa5, 0x17, 0x5c, 0xe8, 0x84, 0xcb, 0xb5, 0x56, 0xeb, 0x5c, 0xc3, 0x88, 0x03, 0xed, 0x15, 0x91, - 0x4b, 0x67, 0xac, 0x42, 0xe4, 0x08, 0x2c, 0x51, 0x9e, 0xec, 0xa9, 0xcd, 0x99, 0xfe, 0x12, 0xd0, - 0x7e, 0x2b, 0x44, 0xd3, 0xbf, 0xac, 0xf2, 0x9b, 0x0a, 0x57, 0xfd, 0xb6, 0xbd, 0xee, 0x7d, 0x1b, - 0x5a, 0xe3, 0x9c, 0xa9, 0x9e, 0xa6, 0xce, 0x94, 0x21, 0x39, 0x86, 0x0e, 0x72, 0x3a, 0x8e, 0x51, - 0xef, 0xce, 0x6e, 0x39, 0x46, 0x6f, 0xc7, 0x6f, 0x6b, 0x4c, 0x0d, 0xe6, 0xfe, 0x32, 0x56, 0xcd, - 0xba, 0xf1, 0x1d, 0xf8, 0xdb, 0x66, 0x7d, 0x0c, 0x50, 0x0b, 0x50, 0x59, 0x75, 0x05, 0x21, 0x27, - 0x2b, 0x46, 0x0d, 0x24, 0x9d, 0x56, 0x46, 0xdd, 0xad, 0xd1, 0x11, 0x9d, 0x8a, 0x07, 0x9e, 0x6f, - 0x3e, 0xf4, 0xfc, 0xbb, 0xf3, 0xcf, 0x2f, 0xa6, 0x4c, 0xce, 0xf2, 0x71, 0xf1, 0x16, 0x0c, 0xf4, - 0x18, 0xcf, 0x59, 0x5a, 0x7e, 0x0d, 0x18, 0x97, 0x98, 0x71, 0x1a, 0x0f, 0xd4, 0x64, 0x83, 0xc2, - 0xd3, 0xf3, 0xf1, 0xb8, 0xa9, 0xa2, 0xf3, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xbd, 0xeb, 0x22, - 0x81, 0x0b, 0x06, 0x00, 0x00, + // 715 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x54, 0x4d, 0x6f, 0xdb, 0x38, + 0x10, 0x85, 0x22, 0xc7, 0x8e, 0xc6, 0x8e, 0x93, 0x70, 0x3f, 0x40, 0x04, 0xd9, 0x5d, 0x45, 0x40, + 0xb2, 0x02, 0x16, 0x6b, 0x63, 0x93, 0x45, 0x6f, 0x05, 0xda, 0x46, 0x08, 0x60, 0x14, 0x0d, 0x52, + 0xc5, 0xe8, 0xa1, 0x17, 0x81, 0x96, 0x68, 0x9b, 0x80, 0x48, 0xb9, 0x22, 0x15, 0xc4, 0xb7, 0x9e, + 0xfb, 0x13, 0xfa, 0xe7, 0x7a, 0xec, 0xa1, 0x7f, 0xa2, 0x10, 0x29, 0xc9, 0x76, 0xe2, 0x1e, 0x7b, + 0xd3, 0xbc, 0x99, 0x21, 0xdf, 0xbc, 0x79, 0x14, 0x1c, 0x50, 0x15, 0x27, 0x11, 0xa7, 0x8a, 0x0c, + 0x16, 0x79, 0xa6, 0x32, 0x74, 0xc4, 0x59, 0x7a, 0x5f, 0x48, 0x13, 0x0d, 0xca, 0xec, 0x71, 0x2f, + 0xce, 0x38, 0xcf, 0x84, 0x81, 0x8e, 0x7b, 0x32, 0x9e, 0x53, 0x5e, 0x95, 0x7b, 0x9f, 0x2d, 0x80, + 0x31, 0x15, 0x44, 0xa8, 0x37, 0x54, 0x11, 0xd4, 0x87, 0x9d, 0x51, 0x80, 0x2d, 0xd7, 0xf2, 0xed, + 0x70, 0x67, 0x14, 0xa0, 0x73, 0x38, 0x10, 0x05, 0x8f, 0x3e, 0x14, 0x34, 0x5f, 0x46, 0x22, 0x4b, + 0xa8, 0xc4, 0x3b, 0x3a, 0xb9, 0x2f, 0x0a, 0xfe, 0xb6, 0x44, 0x6f, 0x4a, 0x10, 0xfd, 0x03, 0x47, + 0x4c, 0x48, 0x9a, 0xab, 0x28, 0x9e, 0x13, 0x21, 0x68, 0x3a, 0x0a, 0x24, 0xb6, 0x5d, 0xdb, 0x77, + 0xc2, 0x43, 0x93, 0xb8, 0x6a, 0x70, 0xf4, 0x37, 0x1c, 0x98, 0x03, 0x9b, 0x5a, 0xdc, 0x72, 0x2d, + 0xdf, 0x09, 0xfb, 0x1a, 0x6e, 0x2a, 0xbd, 0x8f, 0x16, 0x38, 0xb7, 0x79, 0xf6, 0xb0, 0xdc, 0xca, + 0xed, 0x19, 0x74, 0x48, 0x92, 0xe4, 0x54, 0x1a, 0x4e, 0xdd, 0x8b, 0x93, 0xc1, 0xc6, 0xec, 0xd5, + 0xd4, 0x2f, 0x4d, 0x4d, 0x58, 0x17, 0x97, 0x5c, 0x73, 0x2a, 0x8b, 0x74, 0x1b, 0x57, 0x93, 0x58, + 0x71, 0xf5, 0x3e, 0x59, 0xe0, 0x8c, 0x44, 0x42, 0x1f, 0x46, 0x62, 0x9a, 0xa1, 0x3f, 0x00, 0x58, + 0x19, 0x44, 0x82, 0x70, 0xaa, 0xa9, 0x38, 0xa1, 0xa3, 0x91, 0x1b, 0xc2, 0x29, 0xc2, 0xd0, 0xd1, + 0xc1, 0x28, 0xa8, 0x54, 0xaa, 0x43, 0x14, 0x40, 0xcf, 0x34, 0x2e, 0x48, 0x4e, 0xb8, 0xb9, 0xae, + 0x7b, 0x71, 0xba, 0x95, 0xf0, 0x6b, 0xba, 0x7c, 0x47, 0xd2, 0x82, 0xde, 0x12, 0x96, 0x87, 0x5d, + 0xdd, 0x76, 0xab, 0xbb, 0xbc, 0x00, 0xfa, 0xd7, 0x8c, 0xa6, 0xc9, 0x8a, 0x10, 0x86, 0xce, 0x94, + 0xa5, 0x34, 0x69, 0x84, 0xa9, 0xc3, 0x1f, 0x73, 0xf1, 0xbe, 0xd8, 0xd0, 0xbf, 0xca, 0xd2, 0x94, + 0xc6, 0x8a, 0x65, 0x42, 0x1f, 0xf3, 0x58, 0xda, 0xe7, 0xd0, 0x36, 0x2e, 0xa9, 0x94, 0x3d, 0xdb, + 0x24, 0x5a, 0x39, 0x68, 0x75, 0xc8, 0x9d, 0x06, 0xc2, 0xaa, 0x09, 0xfd, 0x05, 0xdd, 0x38, 0xa7, + 0x44, 0xd1, 0x48, 0x31, 0x4e, 0xb1, 0xed, 0x5a, 0x7e, 0x2b, 0x04, 0x03, 0x8d, 0x19, 0xa7, 0xc8, + 0x83, 0xde, 0x82, 0xe4, 0x8a, 0x69, 0x02, 0x81, 0xc4, 0x2d, 0xd7, 0xf6, 0xed, 0x70, 0x03, 0x43, + 0xe7, 0xd0, 0x6f, 0xe2, 0x52, 0x5d, 0x89, 0x77, 0xf5, 0x8e, 0x1e, 0xa1, 0xe8, 0x1a, 0xf6, 0xa7, + 0xa5, 0x28, 0x91, 0x9e, 0x8f, 0x4a, 0xdc, 0xde, 0xa6, 0x6d, 0xf9, 0x10, 0x06, 0x9b, 0xe2, 0x85, + 0xbd, 0x69, 0x13, 0x53, 0x89, 0x2e, 0xe0, 0xb7, 0x7b, 0x96, 0xab, 0x82, 0xa4, 0xb5, 0x2f, 0xf4, + 0x96, 0x25, 0xee, 0xe8, 0x6b, 0x7f, 0xa9, 0x92, 0x95, 0x37, 0xcc, 0xdd, 0xff, 0xc3, 0xef, 0x8b, + 0xf9, 0x52, 0xb2, 0xf8, 0x49, 0xd3, 0x9e, 0x6e, 0xfa, 0xb5, 0xce, 0x6e, 0x74, 0xbd, 0x80, 0x93, + 0x66, 0x86, 0xc8, 0xa8, 0x92, 0x68, 0xa5, 0xa4, 0x22, 0x7c, 0x21, 0xb1, 0xe3, 0xda, 0x7e, 0x2b, + 0x3c, 0x6e, 0x6a, 0xae, 0x4c, 0xc9, 0xb8, 0xa9, 0x28, 0x7d, 0x28, 0xe7, 0x24, 0x4f, 0x64, 0x24, + 0x0a, 0x8e, 0xc1, 0xb5, 0xfc, 0xdd, 0xd0, 0x31, 0xc8, 0x4d, 0xc1, 0xbd, 0xaf, 0x16, 0x1c, 0xde, + 0xd1, 0x19, 0xa7, 0x42, 0xad, 0xac, 0xe2, 0x41, 0x2f, 0x5e, 0x6d, 0xbd, 0xde, 0xf6, 0x06, 0x86, + 0x5c, 0xe8, 0xae, 0xed, 0xa0, 0x32, 0xce, 0x3a, 0x84, 0x4e, 0xc0, 0x91, 0xd5, 0xc9, 0x81, 0x5e, + 0xac, 0x1d, 0xae, 0x00, 0x63, 0xc7, 0x52, 0x53, 0xf3, 0xa2, 0xb5, 0x1d, 0x75, 0xb8, 0x6e, 0xc7, + 0xdd, 0xcd, 0xa7, 0x81, 0xa1, 0x33, 0x29, 0x98, 0xee, 0x69, 0x9b, 0x4c, 0x15, 0xa2, 0x53, 0xe8, + 0x51, 0x41, 0x26, 0x29, 0x35, 0xab, 0xc5, 0x1d, 0xd7, 0xf2, 0xf7, 0xc2, 0xae, 0xc1, 0xf4, 0x60, + 0xde, 0x37, 0x6b, 0xdd, 0xcb, 0x5b, 0x7f, 0x13, 0x3f, 0xdb, 0xcb, 0x7f, 0x02, 0x34, 0x02, 0xd4, + 0x4e, 0x5e, 0x43, 0xd0, 0xd9, 0x9a, 0x8f, 0x23, 0x45, 0x66, 0xb5, 0x8f, 0xf7, 0x1b, 0x74, 0x4c, + 0x66, 0xf2, 0xc9, 0x93, 0x68, 0x3f, 0x7d, 0x12, 0xaf, 0x2e, 0xdf, 0xff, 0x37, 0x63, 0x6a, 0x5e, + 0x4c, 0xca, 0x5f, 0xc5, 0xd0, 0x8c, 0xf1, 0x2f, 0xcb, 0xaa, 0xaf, 0x21, 0x13, 0x8a, 0xe6, 0x82, + 0xa4, 0x43, 0x3d, 0xd9, 0xb0, 0xb4, 0xfc, 0x62, 0x32, 0x69, 0xeb, 0xe8, 0xf2, 0x7b, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x4a, 0x04, 0x49, 0x0f, 0x2a, 0x06, 0x00, 0x00, } diff --git a/internal/proto/milvus.proto b/internal/proto/milvus.proto index 4833cbb27d..5daa09794e 100644 --- a/internal/proto/milvus.proto +++ b/internal/proto/milvus.proto @@ -97,6 +97,7 @@ message DescribeCollectionResponse { repeated string physical_channel_names = 5; uint64 created_timestamp = 6; // hybrid timestamp uint64 created_utc_timestamp = 7; // physical timestamp + int32 shards_num = 8; // shards number } message LoadCollectionRequest { diff --git a/internal/proto/milvuspb/milvus.pb.go b/internal/proto/milvuspb/milvus.pb.go index 2e21cf3984..35f6409516 100644 --- a/internal/proto/milvuspb/milvus.pb.go +++ b/internal/proto/milvuspb/milvus.pb.go @@ -442,6 +442,7 @@ type DescribeCollectionResponse struct { PhysicalChannelNames []string `protobuf:"bytes,5,rep,name=physical_channel_names,json=physicalChannelNames,proto3" json:"physical_channel_names,omitempty"` CreatedTimestamp uint64 `protobuf:"varint,6,opt,name=created_timestamp,json=createdTimestamp,proto3" json:"created_timestamp,omitempty"` CreatedUtcTimestamp uint64 `protobuf:"varint,7,opt,name=created_utc_timestamp,json=createdUtcTimestamp,proto3" json:"created_utc_timestamp,omitempty"` + ShardsNum int32 `protobuf:"varint,8,opt,name=shards_num,json=shardsNum,proto3" json:"shards_num,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -521,6 +522,13 @@ func (m *DescribeCollectionResponse) GetCreatedUtcTimestamp() uint64 { return 0 } +func (m *DescribeCollectionResponse) GetShardsNum() int32 { + if m != nil { + return m.ShardsNum + } + return 0 +} + type LoadCollectionRequest struct { Base *commonpb.MsgBase `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` @@ -4079,196 +4087,197 @@ func init() { func init() { proto.RegisterFile("milvus.proto", fileDescriptor_02345ba45cc0e303) } var fileDescriptor_02345ba45cc0e303 = []byte{ - // 3022 bytes of a gzipped FileDescriptorProto + // 3026 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3a, 0x4b, 0x6f, 0x1c, 0xc7, 0xd1, 0x9c, 0x5d, 0xee, 0xab, 0x76, 0x96, 0x5c, 0x35, 0x1f, 0x5a, 0xaf, 0x25, 0x8b, 0x1c, 0x7f, 0xb2, 0x29, 0xc9, 0x96, 0x2c, 0xca, 0xfe, 0xec, 0xcf, 0xfe, 0x12, 0x5b, 0x12, 0x63, 0x89, 0xb0, 0xe4, 0xd0, 0x43, 0xdb, 0x80, 0x63, 0x18, 0x83, 0xe1, 0x4e, 0x73, 0x39, 0xe0, 0xec, 0xcc, 0x66, - 0xba, 0x57, 0xd4, 0xfa, 0x14, 0xc0, 0x49, 0x80, 0xc0, 0x8e, 0x8d, 0x20, 0x41, 0x82, 0x5c, 0x93, - 0xf8, 0x90, 0x5b, 0x9c, 0x04, 0x48, 0x90, 0x43, 0x90, 0x83, 0x0f, 0x39, 0x04, 0xc8, 0xe3, 0x90, - 0x73, 0x2e, 0x39, 0xfa, 0x1f, 0x04, 0x48, 0xd0, 0x8f, 0x99, 0x9d, 0x59, 0xf6, 0x2c, 0x97, 0x5a, - 0x3b, 0x24, 0x6f, 0x33, 0xd5, 0x55, 0xdd, 0x55, 0xd5, 0xd5, 0xd5, 0x55, 0x5d, 0x05, 0x7a, 0xc7, - 0xf5, 0xee, 0xf5, 0xc8, 0xe5, 0x6e, 0x18, 0xd0, 0x00, 0xcd, 0x25, 0xff, 0x2e, 0x8b, 0x9f, 0xa6, - 0xde, 0x0a, 0x3a, 0x9d, 0xc0, 0x17, 0xc0, 0xa6, 0x4e, 0x5a, 0x3b, 0xb8, 0x63, 0x8b, 0x3f, 0xe3, - 0x53, 0x0d, 0x4e, 0xdf, 0x0c, 0xb1, 0x4d, 0xf1, 0xcd, 0xc0, 0xf3, 0x70, 0x8b, 0xba, 0x81, 0x6f, - 0xe2, 0xaf, 0xf7, 0x30, 0xa1, 0xe8, 0x29, 0x98, 0xde, 0xb2, 0x09, 0x6e, 0x68, 0x4b, 0xda, 0x4a, - 0x75, 0xf5, 0xcc, 0xe5, 0xd4, 0xdc, 0x72, 0xce, 0xbb, 0xa4, 0x7d, 0xc3, 0x26, 0xd8, 0xe4, 0x98, - 0xe8, 0x34, 0x94, 0x9c, 0x2d, 0xcb, 0xb7, 0x3b, 0xb8, 0x91, 0x5b, 0xd2, 0x56, 0x2a, 0x66, 0xd1, - 0xd9, 0x7a, 0xd5, 0xee, 0x60, 0xf4, 0x38, 0xcc, 0xb6, 0xe2, 0xf9, 0x05, 0x42, 0x9e, 0x23, 0xcc, - 0x0c, 0xc0, 0x1c, 0x71, 0x11, 0x8a, 0x82, 0xbf, 0xc6, 0xf4, 0x92, 0xb6, 0xa2, 0x9b, 0xf2, 0x0f, - 0x9d, 0x05, 0x20, 0x3b, 0x76, 0xe8, 0x10, 0xcb, 0xef, 0x75, 0x1a, 0x85, 0x25, 0x6d, 0xa5, 0x60, - 0x56, 0x04, 0xe4, 0xd5, 0x5e, 0xc7, 0x78, 0x5f, 0x83, 0x85, 0xb5, 0x30, 0xe8, 0x1e, 0x0b, 0x21, - 0x8c, 0x9f, 0x6b, 0x30, 0x7f, 0xdb, 0x26, 0xc7, 0x43, 0xa3, 0x67, 0x01, 0xa8, 0xdb, 0xc1, 0x16, - 0xa1, 0x76, 0xa7, 0xcb, 0xb5, 0x3a, 0x6d, 0x56, 0x18, 0x64, 0x93, 0x01, 0x8c, 0xb7, 0x40, 0xbf, - 0x11, 0x04, 0x9e, 0x89, 0x49, 0x37, 0xf0, 0x09, 0x46, 0xd7, 0xa0, 0x48, 0xa8, 0x4d, 0x7b, 0x44, - 0x32, 0xf9, 0xb0, 0x92, 0xc9, 0x4d, 0x8e, 0x62, 0x4a, 0x54, 0x34, 0x0f, 0x85, 0x7b, 0xb6, 0xd7, - 0x13, 0x3c, 0x96, 0x4d, 0xf1, 0x63, 0xbc, 0x0d, 0x33, 0x9b, 0x34, 0x74, 0xfd, 0xf6, 0xe7, 0x38, - 0x79, 0x25, 0x9a, 0xfc, 0x6f, 0x1a, 0x3c, 0xb4, 0x86, 0x49, 0x2b, 0x74, 0xb7, 0x8e, 0x89, 0xe9, - 0x1a, 0xa0, 0x0f, 0x20, 0xeb, 0x6b, 0x5c, 0xd5, 0x79, 0x33, 0x05, 0x1b, 0xda, 0x8c, 0xc2, 0xf0, - 0x66, 0xfc, 0x3b, 0x07, 0x4d, 0x95, 0x50, 0x93, 0xa8, 0xef, 0x4b, 0xf1, 0x89, 0xca, 0x71, 0xa2, - 0xf3, 0x69, 0x22, 0xe9, 0x0d, 0x06, 0xab, 0x6d, 0x72, 0x40, 0x7c, 0xf0, 0x86, 0xa5, 0xca, 0x2b, - 0xa4, 0x5a, 0x85, 0x85, 0x7b, 0x6e, 0x48, 0x7b, 0xb6, 0x67, 0xb5, 0x76, 0x6c, 0xdf, 0xc7, 0x1e, - 0xd7, 0x13, 0x69, 0x4c, 0x2f, 0xe5, 0x57, 0x2a, 0xe6, 0x9c, 0x1c, 0xbc, 0x29, 0xc6, 0x98, 0xb2, - 0x08, 0x7a, 0x1a, 0x16, 0xbb, 0x3b, 0x7d, 0xe2, 0xb6, 0xf6, 0x11, 0x15, 0x38, 0xd1, 0x7c, 0x34, - 0x9a, 0xa2, 0xba, 0x04, 0xa7, 0x5a, 0xdc, 0x5b, 0x39, 0x16, 0xd3, 0x9a, 0x50, 0x63, 0x91, 0xab, - 0xb1, 0x2e, 0x07, 0x5e, 0x8f, 0xe0, 0x8c, 0xad, 0x08, 0xb9, 0x47, 0x5b, 0x09, 0x82, 0x12, 0x27, - 0x98, 0x93, 0x83, 0x6f, 0xd0, 0x56, 0x4c, 0xc3, 0x1d, 0xc9, 0x9d, 0xc0, 0x76, 0x8e, 0x87, 0x23, - 0xf9, 0x50, 0x83, 0x86, 0x89, 0x3d, 0x6c, 0x93, 0xe3, 0x61, 0xe3, 0xc6, 0x0f, 0x34, 0x78, 0xe4, - 0x16, 0xa6, 0x09, 0x6b, 0xa1, 0x36, 0x75, 0x09, 0x75, 0x5b, 0xe4, 0x28, 0xd9, 0xfa, 0x48, 0x83, - 0x73, 0x99, 0x6c, 0x4d, 0x72, 0x78, 0x9e, 0x85, 0x02, 0xfb, 0x22, 0x8d, 0xdc, 0x52, 0x7e, 0xa5, - 0xba, 0xba, 0xac, 0xa4, 0x79, 0x05, 0xf7, 0xdf, 0x64, 0x3e, 0x69, 0xc3, 0x76, 0x43, 0x53, 0xe0, - 0x1b, 0xff, 0xd0, 0x60, 0x71, 0x73, 0x27, 0xd8, 0x1b, 0xb0, 0xf4, 0x45, 0x28, 0x28, 0xed, 0x4e, - 0xf2, 0x43, 0xee, 0x04, 0x5d, 0x85, 0x69, 0xda, 0xef, 0x62, 0xee, 0x89, 0x66, 0x56, 0xcf, 0x5e, - 0x56, 0x04, 0x07, 0x97, 0x19, 0x93, 0xaf, 0xf7, 0xbb, 0xd8, 0xe4, 0xa8, 0xe8, 0x02, 0xd4, 0x87, - 0x54, 0x1e, 0x1d, 0xc8, 0xd9, 0xb4, 0xce, 0x89, 0xf1, 0xdb, 0x1c, 0x9c, 0xde, 0x27, 0xe2, 0x24, - 0xca, 0x56, 0xad, 0x9d, 0x53, 0xae, 0x8d, 0xce, 0x43, 0xc2, 0x04, 0x2c, 0xd7, 0x21, 0x8d, 0xfc, - 0x52, 0x7e, 0x25, 0x6f, 0xd6, 0x12, 0x7e, 0xc9, 0x21, 0xe8, 0x49, 0x40, 0xfb, 0xdc, 0x85, 0xf0, - 0x4a, 0xd3, 0xe6, 0xa9, 0x61, 0x7f, 0xc1, 0x7d, 0x92, 0xd2, 0x61, 0x08, 0x15, 0x4c, 0x9b, 0xf3, - 0x0a, 0x8f, 0x41, 0xd0, 0x55, 0x98, 0x77, 0xfd, 0xbb, 0xb8, 0x13, 0x84, 0x7d, 0xab, 0x8b, 0xc3, - 0x16, 0xf6, 0xa9, 0xdd, 0xc6, 0xa4, 0x51, 0xe4, 0x1c, 0xcd, 0x45, 0x63, 0x1b, 0x83, 0x21, 0xe3, - 0x57, 0x1a, 0x2c, 0x8a, 0xa8, 0x6b, 0xc3, 0x0e, 0xa9, 0x7b, 0xd4, 0x37, 0xd7, 0x79, 0x98, 0xe9, - 0x46, 0x7c, 0x08, 0xbc, 0x69, 0x8e, 0x57, 0x8b, 0xa1, 0xfc, 0x94, 0x7d, 0xa2, 0xc1, 0x3c, 0x0b, - 0xb2, 0x4e, 0x12, 0xcf, 0xbf, 0xd0, 0x60, 0xee, 0xb6, 0x4d, 0x4e, 0x12, 0xcb, 0xbf, 0x96, 0x57, - 0x50, 0xcc, 0xf3, 0x51, 0xba, 0x56, 0x86, 0x98, 0x66, 0x3a, 0xba, 0xd5, 0x67, 0x52, 0x5c, 0x13, - 0xe3, 0x37, 0x83, 0xbb, 0xea, 0x84, 0x71, 0xfe, 0x3b, 0x0d, 0xce, 0xde, 0xc2, 0x34, 0xe6, 0xfa, - 0x58, 0xdc, 0x69, 0xe3, 0x5a, 0xcb, 0x87, 0xe2, 0x46, 0x56, 0x32, 0x7f, 0x24, 0x37, 0xdf, 0xfb, - 0x39, 0x58, 0x60, 0xd7, 0xc2, 0xf1, 0x30, 0x82, 0x71, 0x82, 0x72, 0x85, 0xa1, 0x14, 0x54, 0x86, - 0x12, 0xdf, 0xa7, 0xc5, 0xb1, 0xef, 0x53, 0xe3, 0x97, 0x39, 0x11, 0x07, 0x24, 0xb5, 0x31, 0xc9, - 0xb6, 0x28, 0x78, 0xcd, 0x29, 0x79, 0x35, 0x40, 0x8f, 0x21, 0xeb, 0x6b, 0xd1, 0xfd, 0x98, 0x82, - 0x1d, 0xdb, 0xeb, 0xf1, 0x03, 0x0d, 0x16, 0xa3, 0x34, 0x68, 0x13, 0xb7, 0x3b, 0xd8, 0xa7, 0x0f, - 0x6e, 0x43, 0xc3, 0x16, 0x90, 0x53, 0x58, 0xc0, 0x19, 0xa8, 0x10, 0xb1, 0x4e, 0x9c, 0xe1, 0x0c, - 0x00, 0xc6, 0xc7, 0x1a, 0x9c, 0xde, 0xc7, 0xce, 0x24, 0x9b, 0xd8, 0x80, 0x92, 0xeb, 0x3b, 0xf8, - 0x7e, 0xcc, 0x4d, 0xf4, 0xcb, 0x46, 0xb6, 0x7a, 0xae, 0xe7, 0xc4, 0x6c, 0x44, 0xbf, 0x68, 0x19, - 0x74, 0xec, 0xdb, 0x5b, 0x1e, 0xb6, 0x38, 0x2e, 0x37, 0xe4, 0xb2, 0x59, 0x15, 0xb0, 0x75, 0x06, - 0x32, 0xbe, 0xab, 0xc1, 0x1c, 0xb3, 0x35, 0xc9, 0x23, 0xf9, 0x62, 0x75, 0xb6, 0x04, 0xd5, 0x84, - 0x31, 0x49, 0x76, 0x93, 0x20, 0x63, 0x17, 0xe6, 0xd3, 0xec, 0x4c, 0xa2, 0xb3, 0x47, 0x00, 0xe2, - 0x1d, 0x11, 0x36, 0x9f, 0x37, 0x13, 0x10, 0xe3, 0x33, 0x0d, 0x90, 0x08, 0xa9, 0xb8, 0x32, 0x8e, - 0xf8, 0xc5, 0x65, 0xdb, 0xc5, 0x9e, 0x93, 0xf4, 0xda, 0x15, 0x0e, 0xe1, 0xc3, 0x6b, 0xa0, 0xe3, - 0xfb, 0x34, 0xb4, 0xad, 0xae, 0x1d, 0xda, 0x1d, 0x71, 0x78, 0xc6, 0x72, 0xb0, 0x55, 0x4e, 0xb6, - 0xc1, 0xa9, 0x8c, 0x3f, 0xb2, 0x60, 0x4c, 0x1a, 0xe5, 0x71, 0x97, 0xf8, 0x2c, 0x00, 0x37, 0x5a, - 0x31, 0x5c, 0x10, 0xc3, 0x1c, 0xc2, 0xaf, 0xb0, 0x8f, 0x35, 0xa8, 0x73, 0x11, 0x84, 0x3c, 0x5d, - 0x36, 0xed, 0x10, 0x8d, 0x36, 0x44, 0x33, 0xe2, 0x08, 0xfd, 0x1f, 0x14, 0xa5, 0x62, 0xf3, 0xe3, - 0x2a, 0x56, 0x12, 0x1c, 0x20, 0x86, 0xf1, 0x13, 0x0d, 0x16, 0x86, 0x54, 0x3e, 0x89, 0x45, 0xbf, - 0x0e, 0x48, 0x48, 0xe8, 0x0c, 0xc4, 0x8e, 0xae, 0xdb, 0xf3, 0xca, 0xbb, 0x65, 0x58, 0x49, 0xe6, - 0x29, 0x77, 0x08, 0x42, 0x8c, 0xbf, 0x68, 0x70, 0xe6, 0x16, 0xa6, 0x1c, 0xf5, 0x06, 0xf3, 0x1d, - 0x1b, 0x61, 0xd0, 0x0e, 0x31, 0x21, 0x27, 0xd7, 0x3e, 0x7e, 0x28, 0xe2, 0x33, 0x95, 0x48, 0x93, - 0xe8, 0x7f, 0x19, 0x74, 0xbe, 0x06, 0x76, 0xac, 0x30, 0xd8, 0x23, 0xd2, 0x8e, 0xaa, 0x12, 0x66, - 0x06, 0x7b, 0xdc, 0x20, 0x68, 0x40, 0x6d, 0x4f, 0x20, 0xc8, 0x8b, 0x81, 0x43, 0xd8, 0x30, 0x3f, - 0x83, 0x11, 0x63, 0x6c, 0x72, 0x7c, 0x72, 0x75, 0xfc, 0x33, 0x0d, 0x16, 0x86, 0x44, 0x99, 0x44, - 0xb7, 0xcf, 0x88, 0xe8, 0x51, 0x08, 0x33, 0xb3, 0x7a, 0x4e, 0x49, 0x93, 0x58, 0x4c, 0x60, 0xa3, - 0x73, 0x50, 0xdd, 0xb6, 0x5d, 0xcf, 0x0a, 0xb1, 0x4d, 0x02, 0x5f, 0x0a, 0x0a, 0x0c, 0x64, 0x72, - 0x88, 0xf1, 0xa9, 0x06, 0x75, 0x96, 0x82, 0x9e, 0x70, 0x8f, 0xf7, 0xd3, 0x1c, 0xd4, 0xd6, 0x7d, - 0x82, 0x43, 0x7a, 0xfc, 0x33, 0x0c, 0xf4, 0x22, 0x54, 0xb9, 0x60, 0xc4, 0x72, 0x6c, 0x6a, 0xcb, - 0xeb, 0xea, 0x11, 0xe5, 0x2b, 0xf2, 0xcb, 0x0c, 0x6f, 0xcd, 0xa6, 0xb6, 0x29, 0xb4, 0x43, 0xd8, - 0x37, 0x7a, 0x18, 0x2a, 0x3b, 0x36, 0xd9, 0xb1, 0x76, 0x71, 0x5f, 0x84, 0x7d, 0x35, 0xb3, 0xcc, - 0x00, 0xaf, 0xe0, 0x3e, 0x41, 0x0f, 0x41, 0xd9, 0xef, 0x75, 0xc4, 0x01, 0x2b, 0x2d, 0x69, 0x2b, - 0x35, 0xb3, 0xe4, 0xf7, 0x3a, 0xfc, 0x78, 0xfd, 0x29, 0x07, 0x33, 0x77, 0x7b, 0x2c, 0x9f, 0xe1, - 0x6f, 0xe0, 0x3d, 0x8f, 0x3e, 0x98, 0x31, 0x5e, 0x84, 0xbc, 0x88, 0x19, 0x18, 0x45, 0x43, 0xc9, - 0xf8, 0xfa, 0x1a, 0x31, 0x19, 0x12, 0xaf, 0x33, 0xf5, 0x5a, 0x2d, 0x19, 0x64, 0xe5, 0x39, 0xb3, - 0x15, 0x06, 0xe1, 0x16, 0xc7, 0x44, 0xc1, 0x61, 0x18, 0x87, 0x60, 0x5c, 0x14, 0x1c, 0x86, 0x62, - 0xd0, 0x00, 0xdd, 0x6e, 0xed, 0xfa, 0xc1, 0x9e, 0x87, 0x9d, 0x36, 0x76, 0xf8, 0xb6, 0x97, 0xcd, - 0x14, 0x4c, 0x18, 0x06, 0xdb, 0x78, 0xab, 0xe5, 0x53, 0x9e, 0x48, 0xe4, 0x99, 0x61, 0x30, 0xc8, - 0x4d, 0x9f, 0xb2, 0x61, 0x07, 0x7b, 0x98, 0x62, 0x3e, 0x5c, 0x12, 0xc3, 0x02, 0x22, 0x87, 0x7b, - 0xdd, 0x98, 0xba, 0x2c, 0x86, 0x05, 0x84, 0x0d, 0x9f, 0x81, 0xca, 0xe0, 0x91, 0xbb, 0x32, 0x78, - 0x0d, 0x14, 0x4f, 0xdb, 0xbf, 0xd7, 0xa0, 0xb6, 0xc6, 0xa7, 0x3a, 0x01, 0x46, 0x87, 0x60, 0x1a, - 0xdf, 0xef, 0x86, 0xf2, 0xe8, 0xf0, 0x6f, 0xe3, 0x1e, 0xd4, 0x37, 0x3c, 0xbb, 0x85, 0x77, 0x02, - 0xcf, 0xc1, 0x21, 0xbf, 0xbe, 0x51, 0x1d, 0xf2, 0xd4, 0x6e, 0xcb, 0xf8, 0x80, 0x7d, 0xa2, 0xe7, - 0x64, 0x92, 0x26, 0x3c, 0xcf, 0xff, 0x28, 0x2f, 0xd2, 0xc4, 0x34, 0x89, 0xb7, 0xcf, 0x45, 0x28, - 0xf2, 0xda, 0x92, 0x88, 0x1c, 0x74, 0x53, 0xfe, 0x19, 0xef, 0xa4, 0xd6, 0xbd, 0x15, 0x06, 0xbd, - 0x2e, 0x5a, 0x07, 0xbd, 0x3b, 0x80, 0x31, 0x73, 0xcc, 0xbe, 0xb6, 0x87, 0x99, 0x36, 0x53, 0xa4, - 0xc6, 0x67, 0x79, 0xa8, 0x6d, 0x62, 0x3b, 0x6c, 0xed, 0x9c, 0x84, 0xd7, 0x12, 0xa6, 0x71, 0x87, - 0x78, 0x72, 0x63, 0xd8, 0x27, 0xba, 0x04, 0xa7, 0x12, 0x02, 0x59, 0x6d, 0xa6, 0x20, 0x6e, 0xda, - 0xba, 0x59, 0xef, 0x0e, 0x2b, 0xee, 0x59, 0x28, 0x3b, 0xc4, 0xb3, 0xf8, 0x16, 0x95, 0xf8, 0x16, - 0xa9, 0xe5, 0x5b, 0x23, 0x1e, 0xdf, 0x9a, 0x92, 0x23, 0x3e, 0xd0, 0xa3, 0x50, 0x0b, 0x7a, 0xb4, - 0xdb, 0xa3, 0x96, 0x70, 0x2d, 0x8d, 0x32, 0x67, 0x4f, 0x17, 0x40, 0xee, 0x79, 0x08, 0x7a, 0x19, - 0x6a, 0x84, 0xab, 0x32, 0x0a, 0xae, 0x2b, 0xe3, 0xc6, 0x80, 0xba, 0xa0, 0x13, 0xd1, 0x35, 0xba, - 0x00, 0x75, 0x1a, 0xda, 0xf7, 0xb0, 0x97, 0xa8, 0x1a, 0x01, 0x3f, 0x50, 0xb3, 0x02, 0x3e, 0xa8, - 0x32, 0x5d, 0x81, 0xb9, 0x76, 0xcf, 0x0e, 0x6d, 0x9f, 0x62, 0x9c, 0xc0, 0xae, 0x72, 0x6c, 0x14, - 0x0f, 0x0d, 0x4a, 0x4c, 0xaf, 0xc0, 0xf4, 0x6d, 0x97, 0x72, 0x45, 0x32, 0xb7, 0xa4, 0xf1, 0x54, - 0x86, 0x3b, 0x9f, 0x87, 0xa0, 0x1c, 0x06, 0x7b, 0xc2, 0xcd, 0xe6, 0xb8, 0x09, 0x96, 0xc2, 0x60, - 0x8f, 0xfb, 0x50, 0x5e, 0x17, 0x0f, 0x42, 0x69, 0x9b, 0x39, 0x53, 0xfe, 0x19, 0xdf, 0xd2, 0x06, - 0xc6, 0xc3, 0x3c, 0x24, 0x79, 0x30, 0x17, 0xf9, 0x22, 0x94, 0x42, 0x41, 0x3f, 0xb2, 0x4a, 0x98, - 0x5c, 0x89, 0xbb, 0xf9, 0x88, 0xca, 0xf8, 0xa6, 0x06, 0xfa, 0xcb, 0x5e, 0x8f, 0x7c, 0x11, 0x36, - 0xac, 0xaa, 0x0b, 0xe4, 0xd5, 0x35, 0x89, 0xef, 0xe5, 0xa0, 0x26, 0xd9, 0x98, 0x24, 0x7c, 0xc9, - 0x64, 0x65, 0x13, 0xaa, 0x6c, 0x49, 0x8b, 0xe0, 0x76, 0xf4, 0xa8, 0x52, 0x5d, 0x5d, 0x55, 0x9e, - 0xfa, 0x14, 0x1b, 0xbc, 0xbe, 0xba, 0xc9, 0x89, 0xbe, 0xe2, 0xd3, 0xb0, 0x6f, 0x42, 0x2b, 0x06, - 0x34, 0xdf, 0x81, 0xd9, 0xa1, 0x61, 0x66, 0x1b, 0xbb, 0xb8, 0x1f, 0xb9, 0xb5, 0x5d, 0xdc, 0x47, - 0x4f, 0x27, 0xab, 0xe0, 0x59, 0xf7, 0xef, 0x9d, 0xc0, 0x6f, 0x5f, 0x0f, 0x43, 0xbb, 0x2f, 0xab, - 0xe4, 0xcf, 0xe7, 0x9e, 0xd3, 0x8c, 0x3f, 0xe4, 0x40, 0x7f, 0xad, 0x87, 0xc3, 0xfe, 0x51, 0xba, - 0x97, 0xc8, 0x9f, 0x4f, 0x0f, 0xfc, 0xf9, 0xfe, 0x13, 0x5d, 0x50, 0x9c, 0x68, 0x85, 0x5f, 0x2a, - 0x2a, 0xfd, 0x92, 0xea, 0xc8, 0x96, 0x0e, 0x75, 0x64, 0xcb, 0x99, 0x47, 0x96, 0x59, 0xb7, 0x54, - 0xe1, 0x44, 0x87, 0x2c, 0x15, 0x48, 0xe5, 0x0e, 0x1b, 0x48, 0x19, 0x9f, 0x68, 0x50, 0x79, 0x13, - 0xb7, 0x68, 0x10, 0x32, 0x6f, 0xa1, 0xd0, 0xbd, 0x36, 0x46, 0xac, 0x9a, 0x1b, 0x8e, 0x55, 0xaf, - 0x41, 0xd9, 0x75, 0x2c, 0x9b, 0x99, 0x0d, 0xdf, 0xbc, 0x51, 0x31, 0x52, 0xc9, 0x75, 0xb8, 0x7d, - 0x8d, 0xff, 0xb8, 0xfe, 0x23, 0x0d, 0x74, 0xc1, 0x33, 0x11, 0x94, 0x2f, 0x24, 0x96, 0xd3, 0x54, - 0xb6, 0x2c, 0x7f, 0x62, 0x41, 0x6f, 0x4f, 0x0d, 0x96, 0xbd, 0x0e, 0xc0, 0x74, 0x27, 0xc9, 0xc5, - 0x51, 0x58, 0x52, 0x72, 0x2b, 0xc8, 0xb9, 0x1e, 0x6f, 0x4f, 0x99, 0x15, 0x46, 0xc5, 0xa7, 0xb8, - 0x51, 0x82, 0x02, 0xa7, 0x36, 0xfe, 0xa5, 0xc1, 0xdc, 0x4d, 0xdb, 0x6b, 0xad, 0xb9, 0x84, 0xda, - 0x7e, 0x6b, 0x82, 0xa8, 0xe8, 0x79, 0x28, 0x05, 0x5d, 0xcb, 0xc3, 0xdb, 0x54, 0xb2, 0xb4, 0x3c, - 0x42, 0x22, 0xa1, 0x06, 0xb3, 0x18, 0x74, 0xef, 0xe0, 0x6d, 0x8a, 0xfe, 0x1f, 0xca, 0x41, 0xd7, - 0x0a, 0xdd, 0xf6, 0x0e, 0x95, 0xda, 0x1f, 0x83, 0xb8, 0x14, 0x74, 0x4d, 0x46, 0x91, 0x78, 0xec, - 0x98, 0x3e, 0xe4, 0x63, 0x87, 0xf1, 0xd7, 0x7d, 0xe2, 0x4f, 0x60, 0xda, 0xcf, 0x43, 0xd9, 0xf5, - 0xa9, 0xe5, 0xb8, 0x24, 0x52, 0xc1, 0x59, 0xb5, 0x0d, 0xf9, 0x94, 0x4b, 0xc0, 0xf7, 0xd4, 0xa7, - 0x6c, 0x6d, 0xf4, 0x12, 0xc0, 0xb6, 0x17, 0xd8, 0x92, 0x5a, 0xe8, 0xe0, 0x9c, 0xfa, 0x54, 0x30, - 0xb4, 0x88, 0xbe, 0xc2, 0x89, 0xd8, 0x0c, 0x83, 0x2d, 0xfd, 0xb3, 0x06, 0x0b, 0x1b, 0x38, 0x24, - 0x2e, 0xa1, 0xd8, 0xa7, 0xf2, 0xe1, 0x71, 0xdd, 0xdf, 0x0e, 0xd2, 0x2f, 0xbc, 0xda, 0xd0, 0x0b, - 0xef, 0xe7, 0xf3, 0xde, 0x99, 0x4a, 0x65, 0x44, 0x9d, 0x21, 0x4a, 0x65, 0xa2, 0x6a, 0x8a, 0x48, - 0x05, 0x67, 0x32, 0xb6, 0x49, 0xf2, 0x9b, 0xcc, 0x88, 0x8d, 0xef, 0x8b, 0xce, 0x06, 0xa5, 0x50, - 0x0f, 0x6e, 0xb0, 0x8b, 0x20, 0x1d, 0xf8, 0x90, 0x3b, 0x7f, 0x0c, 0x86, 0x7c, 0x47, 0x46, 0xbf, - 0xc5, 0x8f, 0x35, 0x58, 0xca, 0xe6, 0x6a, 0x92, 0x9b, 0xf7, 0x25, 0x28, 0xb8, 0xfe, 0x76, 0x10, - 0xbd, 0x83, 0x5d, 0x54, 0x07, 0xd4, 0xca, 0x75, 0x05, 0xa1, 0xf1, 0x4f, 0x0d, 0xea, 0xdc, 0x57, - 0x1f, 0xc1, 0xf6, 0x77, 0x70, 0xc7, 0x22, 0xee, 0xbb, 0x38, 0xda, 0xfe, 0x0e, 0xee, 0x6c, 0xba, - 0xef, 0xe2, 0x94, 0x65, 0x14, 0xd2, 0x96, 0x91, 0x7e, 0x29, 0x28, 0x8e, 0x78, 0xe7, 0x2c, 0xa5, - 0xde, 0x39, 0x8d, 0x0f, 0x35, 0x68, 0xde, 0xc2, 0x74, 0x58, 0xd4, 0xa3, 0x33, 0x8a, 0x8f, 0x34, - 0x78, 0x58, 0xc9, 0xd0, 0x24, 0xf6, 0xf0, 0x42, 0xda, 0x1e, 0xd4, 0x09, 0xd6, 0xbe, 0x25, 0xa5, - 0x29, 0x5c, 0x05, 0x7d, 0xad, 0xd7, 0xe9, 0xc4, 0x81, 0xcf, 0x32, 0xe8, 0xa1, 0xf8, 0x14, 0xf9, - 0x87, 0xb8, 0x2e, 0xab, 0x12, 0xc6, 0xb2, 0x0c, 0xe3, 0x12, 0xd4, 0x24, 0x89, 0xe4, 0xba, 0x09, - 0xe5, 0x50, 0x7e, 0x4b, 0xfc, 0xf8, 0xdf, 0x58, 0x80, 0x39, 0x13, 0xb7, 0x99, 0x25, 0x86, 0x77, - 0x5c, 0x7f, 0x57, 0x2e, 0x63, 0xbc, 0xa7, 0xc1, 0x7c, 0x1a, 0x2e, 0xe7, 0xfa, 0x5f, 0x28, 0xd9, - 0x8e, 0x13, 0x62, 0x42, 0x46, 0x6e, 0xcb, 0x75, 0x81, 0x63, 0x46, 0xc8, 0x09, 0xcd, 0xe5, 0xc6, - 0xd6, 0x9c, 0x61, 0xc1, 0xa9, 0x5b, 0x98, 0xde, 0xc5, 0x34, 0x9c, 0xa8, 0x90, 0xdd, 0x60, 0x99, - 0x01, 0x27, 0x96, 0x66, 0x11, 0xfd, 0x1a, 0x1f, 0x68, 0x80, 0x92, 0x2b, 0x4c, 0xb2, 0xcd, 0x49, - 0x2d, 0xe7, 0xd2, 0x5a, 0x16, 0xbd, 0x3e, 0x9d, 0x6e, 0xe0, 0x63, 0x9f, 0x26, 0x43, 0xcc, 0x5a, - 0x0c, 0x65, 0xe6, 0x77, 0x71, 0x19, 0xca, 0x51, 0xed, 0x15, 0x95, 0x20, 0x7f, 0xdd, 0xf3, 0xea, - 0x53, 0x48, 0x87, 0xf2, 0xba, 0x2c, 0x30, 0xd6, 0xb5, 0x8b, 0x5f, 0x86, 0xd9, 0xa1, 0xcc, 0x1f, - 0x95, 0x61, 0xfa, 0xd5, 0xc0, 0xc7, 0xf5, 0x29, 0x54, 0x07, 0xfd, 0x86, 0xeb, 0xdb, 0x61, 0x5f, - 0xdc, 0xb4, 0x75, 0x07, 0xcd, 0x42, 0x95, 0xdf, 0x38, 0x12, 0x80, 0x57, 0xff, 0xde, 0x80, 0xda, - 0x5d, 0x2e, 0xcc, 0x26, 0x0e, 0xef, 0xb9, 0x2d, 0x8c, 0x2c, 0xa8, 0x0f, 0x77, 0x4f, 0xa3, 0x27, - 0x94, 0x36, 0x9a, 0xd1, 0x64, 0xdd, 0x1c, 0xa5, 0x1e, 0x63, 0x0a, 0xbd, 0x0d, 0x33, 0xe9, 0xbe, - 0x66, 0xa4, 0x76, 0x89, 0xca, 0xe6, 0xe7, 0x83, 0x26, 0xb7, 0xa0, 0x96, 0x6a, 0x53, 0x46, 0x17, - 0x94, 0x73, 0xab, 0x5a, 0x99, 0x9b, 0xea, 0x28, 0x25, 0xd9, 0x4a, 0x2c, 0xb8, 0x4f, 0x37, 0x53, - 0x66, 0x70, 0xaf, 0xec, 0xb8, 0x3c, 0x88, 0x7b, 0x1b, 0x4e, 0xed, 0xeb, 0x8d, 0x44, 0x4f, 0x2a, - 0xe7, 0xcf, 0xea, 0xa1, 0x3c, 0x68, 0x89, 0x3d, 0x40, 0xfb, 0xdb, 0x71, 0xd1, 0x65, 0xf5, 0x0e, - 0x64, 0x35, 0x23, 0x37, 0xaf, 0x8c, 0x8d, 0x1f, 0x2b, 0xee, 0xdb, 0x1a, 0x9c, 0xce, 0x68, 0x68, - 0x44, 0xd7, 0x94, 0xd3, 0x8d, 0xee, 0xca, 0x6c, 0x3e, 0x7d, 0x38, 0xa2, 0x98, 0x11, 0x1f, 0x66, - 0x87, 0x7a, 0xfc, 0xd0, 0xa5, 0xcc, 0xbe, 0x87, 0xfd, 0xcd, 0x8e, 0xcd, 0x27, 0xc6, 0x43, 0x8e, - 0xd7, 0x63, 0xb9, 0x70, 0xba, 0x31, 0x2e, 0x63, 0x3d, 0x75, 0xfb, 0xdc, 0x41, 0x1b, 0xfa, 0x16, - 0xd4, 0x52, 0x1d, 0x6c, 0x19, 0x16, 0xaf, 0xea, 0x72, 0x3b, 0x68, 0xea, 0x77, 0x40, 0x4f, 0x36, - 0x9a, 0xa1, 0x95, 0xac, 0xb3, 0xb4, 0x6f, 0xe2, 0xc3, 0x1c, 0xa5, 0x41, 0x1f, 0xc9, 0x88, 0xa3, - 0xb4, 0xaf, 0xf5, 0x66, 0xfc, 0xa3, 0x94, 0x98, 0x7f, 0xe4, 0x51, 0x3a, 0xf4, 0x12, 0xef, 0x69, - 0xb0, 0xa8, 0xee, 0x53, 0x42, 0xab, 0x59, 0xb6, 0x99, 0xdd, 0x91, 0xd5, 0xbc, 0x76, 0x28, 0x9a, - 0x58, 0x8b, 0xbb, 0x30, 0x93, 0xee, 0xc6, 0xc9, 0xd0, 0xa2, 0xb2, 0x81, 0xa9, 0x79, 0x69, 0x2c, - 0xdc, 0x78, 0xb1, 0x37, 0xa0, 0x9a, 0xe8, 0x48, 0x40, 0x8f, 0x8f, 0xb0, 0xe3, 0x64, 0x3d, 0xeb, - 0x20, 0x4d, 0xee, 0x40, 0x2d, 0x55, 0x85, 0xce, 0xb2, 0x61, 0x45, 0x73, 0x40, 0xf3, 0xe2, 0x38, - 0xa8, 0xb1, 0x00, 0x3b, 0x50, 0x4b, 0xd5, 0x04, 0x33, 0x56, 0x52, 0x95, 0x40, 0x33, 0x56, 0x52, - 0x96, 0x18, 0x8d, 0x29, 0xf4, 0x8d, 0x44, 0xf9, 0x31, 0x55, 0xe2, 0x45, 0x57, 0x47, 0xce, 0xa3, - 0xaa, 0x70, 0x37, 0x57, 0x0f, 0x43, 0x12, 0xb3, 0xf0, 0x1a, 0x54, 0xe2, 0xca, 0x22, 0x3a, 0x9f, - 0xe9, 0x16, 0x0e, 0xb3, 0x53, 0x9b, 0x50, 0x14, 0x55, 0x3e, 0x64, 0x64, 0xd4, 0xf3, 0x13, 0x25, - 0xc0, 0xe6, 0xa3, 0x4a, 0x9c, 0x74, 0x01, 0x4c, 0x4c, 0x2a, 0xaa, 0x38, 0x19, 0x93, 0xa6, 0x4a, - 0x3c, 0xe3, 0x4e, 0x6a, 0x42, 0x51, 0xbc, 0xed, 0x66, 0x4c, 0x9a, 0xaa, 0x4f, 0x34, 0x47, 0xe3, - 0x88, 0x07, 0xe1, 0x29, 0xb4, 0x01, 0x05, 0xfe, 0x06, 0x8a, 0x96, 0x47, 0xbd, 0x8f, 0x8e, 0x9a, - 0x31, 0xf5, 0x84, 0x6a, 0x4c, 0xa1, 0xaf, 0x42, 0x81, 0x87, 0xfa, 0x19, 0x33, 0x26, 0x1f, 0x39, - 0x9b, 0x23, 0x51, 0x22, 0x16, 0x1d, 0xd0, 0x93, 0x4f, 0x20, 0x19, 0x3e, 0x5b, 0xf1, 0x48, 0xd4, - 0x1c, 0x07, 0x33, 0x5a, 0xe5, 0x3b, 0x1a, 0x34, 0xb2, 0xb2, 0x65, 0x94, 0x79, 0x31, 0x8f, 0x4a, - 0xf9, 0x9b, 0xcf, 0x1c, 0x92, 0x2a, 0x56, 0xe1, 0xbb, 0x30, 0xa7, 0xc8, 0xd1, 0xd0, 0x95, 0xac, - 0xf9, 0x32, 0xd2, 0xcb, 0xe6, 0x53, 0xe3, 0x13, 0xc4, 0x6b, 0x6f, 0x40, 0x81, 0xe7, 0x56, 0x19, - 0xdb, 0x97, 0x4c, 0xd5, 0x32, 0x0c, 0x22, 0x95, 0x9a, 0x19, 0x53, 0x08, 0x83, 0x9e, 0x4c, 0xb4, - 0x32, 0xf6, 0x4f, 0x91, 0xa3, 0x35, 0x2f, 0x8c, 0x81, 0x19, 0x2f, 0x63, 0x01, 0x0c, 0x12, 0x1d, - 0xf4, 0x58, 0x96, 0xe8, 0xe9, 0x5c, 0xab, 0xf9, 0xf8, 0x81, 0x78, 0xd1, 0x02, 0xab, 0x3d, 0xd0, - 0x37, 0xc2, 0xe0, 0x7e, 0x3f, 0x4a, 0x2b, 0xfe, 0x3b, 0x72, 0xdd, 0x78, 0xe6, 0x6b, 0xd7, 0xda, - 0x2e, 0xdd, 0xe9, 0x6d, 0x31, 0xcf, 0x75, 0x45, 0xe0, 0x3e, 0xe9, 0x06, 0xf2, 0xeb, 0x8a, 0xeb, - 0x53, 0x1c, 0xfa, 0xb6, 0x77, 0x85, 0xcf, 0x25, 0xa1, 0xdd, 0xad, 0xad, 0x22, 0xff, 0xbf, 0xf6, - 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x88, 0x7a, 0xa8, 0xfc, 0x7b, 0x3a, 0x00, 0x00, + 0xba, 0x57, 0xd4, 0xfa, 0x14, 0xc0, 0x49, 0x80, 0xc0, 0x8e, 0x8d, 0x20, 0x41, 0x82, 0x5c, 0x72, + 0x48, 0xe2, 0x43, 0x6e, 0x71, 0x12, 0x20, 0x41, 0x0e, 0x41, 0x0e, 0x3e, 0xe4, 0x10, 0x20, 0x8f, + 0x43, 0xce, 0xb9, 0xe4, 0xe8, 0x7f, 0x90, 0x43, 0xd0, 0x8f, 0x99, 0x9d, 0x59, 0xf6, 0x2c, 0x97, + 0x5a, 0x3b, 0x24, 0x6f, 0x33, 0xd5, 0x55, 0xdd, 0x55, 0xd5, 0xd5, 0xd5, 0x55, 0x5d, 0x05, 0x7a, + 0xc7, 0xf5, 0xee, 0xf5, 0xc8, 0xe5, 0x6e, 0x18, 0xd0, 0x00, 0xcd, 0x25, 0xff, 0x2e, 0x8b, 0x9f, + 0xa6, 0xde, 0x0a, 0x3a, 0x9d, 0xc0, 0x17, 0xc0, 0xa6, 0x4e, 0x5a, 0x3b, 0xb8, 0x63, 0x8b, 0x3f, + 0xe3, 0x53, 0x0d, 0x4e, 0xdf, 0x0c, 0xb1, 0x4d, 0xf1, 0xcd, 0xc0, 0xf3, 0x70, 0x8b, 0xba, 0x81, + 0x6f, 0xe2, 0xaf, 0xf7, 0x30, 0xa1, 0xe8, 0x29, 0x98, 0xde, 0xb2, 0x09, 0x6e, 0x68, 0x4b, 0xda, + 0x4a, 0x75, 0xf5, 0xcc, 0xe5, 0xd4, 0xdc, 0x72, 0xce, 0xbb, 0xa4, 0x7d, 0xc3, 0x26, 0xd8, 0xe4, + 0x98, 0xe8, 0x34, 0x94, 0x9c, 0x2d, 0xcb, 0xb7, 0x3b, 0xb8, 0x91, 0x5b, 0xd2, 0x56, 0x2a, 0x66, + 0xd1, 0xd9, 0x7a, 0xd5, 0xee, 0x60, 0xf4, 0x38, 0xcc, 0xb6, 0xe2, 0xf9, 0x05, 0x42, 0x9e, 0x23, + 0xcc, 0x0c, 0xc0, 0x1c, 0x71, 0x11, 0x8a, 0x82, 0xbf, 0xc6, 0xf4, 0x92, 0xb6, 0xa2, 0x9b, 0xf2, + 0x0f, 0x9d, 0x05, 0x20, 0x3b, 0x76, 0xe8, 0x10, 0xcb, 0xef, 0x75, 0x1a, 0x85, 0x25, 0x6d, 0xa5, + 0x60, 0x56, 0x04, 0xe4, 0xd5, 0x5e, 0xc7, 0x78, 0x5f, 0x83, 0x85, 0xb5, 0x30, 0xe8, 0x1e, 0x0b, + 0x21, 0x8c, 0x5f, 0x68, 0x30, 0x7f, 0xdb, 0x26, 0xc7, 0x43, 0xa3, 0x67, 0x01, 0xa8, 0xdb, 0xc1, + 0x16, 0xa1, 0x76, 0xa7, 0xcb, 0xb5, 0x3a, 0x6d, 0x56, 0x18, 0x64, 0x93, 0x01, 0x8c, 0xb7, 0x40, + 0xbf, 0x11, 0x04, 0x9e, 0x89, 0x49, 0x37, 0xf0, 0x09, 0x46, 0xd7, 0xa0, 0x48, 0xa8, 0x4d, 0x7b, + 0x44, 0x32, 0xf9, 0xb0, 0x92, 0xc9, 0x4d, 0x8e, 0x62, 0x4a, 0x54, 0x34, 0x0f, 0x85, 0x7b, 0xb6, + 0xd7, 0x13, 0x3c, 0x96, 0x4d, 0xf1, 0x63, 0xbc, 0x0d, 0x33, 0x9b, 0x34, 0x74, 0xfd, 0xf6, 0xe7, + 0x38, 0x79, 0x25, 0x9a, 0xfc, 0xef, 0x1a, 0x3c, 0xb4, 0x86, 0x49, 0x2b, 0x74, 0xb7, 0x8e, 0x89, + 0xe9, 0x1a, 0xa0, 0x0f, 0x20, 0xeb, 0x6b, 0x5c, 0xd5, 0x79, 0x33, 0x05, 0x1b, 0xda, 0x8c, 0xc2, + 0xf0, 0x66, 0xfc, 0x24, 0x0f, 0x4d, 0x95, 0x50, 0x93, 0xa8, 0xef, 0x4b, 0xf1, 0x89, 0xca, 0x71, + 0xa2, 0xf3, 0x69, 0x22, 0xe9, 0x0d, 0x06, 0xab, 0x6d, 0x72, 0x40, 0x7c, 0xf0, 0x86, 0xa5, 0xca, + 0x2b, 0xa4, 0x5a, 0x85, 0x85, 0x7b, 0x6e, 0x48, 0x7b, 0xb6, 0x67, 0xb5, 0x76, 0x6c, 0xdf, 0xc7, + 0x1e, 0xd7, 0x13, 0x69, 0x4c, 0x2f, 0xe5, 0x57, 0x2a, 0xe6, 0x9c, 0x1c, 0xbc, 0x29, 0xc6, 0x98, + 0xb2, 0x08, 0x7a, 0x1a, 0x16, 0xbb, 0x3b, 0x7d, 0xe2, 0xb6, 0xf6, 0x11, 0x15, 0x38, 0xd1, 0x7c, + 0x34, 0x9a, 0xa2, 0xba, 0x04, 0xa7, 0x5a, 0xdc, 0x5b, 0x39, 0x16, 0xd3, 0x9a, 0x50, 0x63, 0x91, + 0xab, 0xb1, 0x2e, 0x07, 0x5e, 0x8f, 0xe0, 0x8c, 0xad, 0x08, 0xb9, 0x47, 0x5b, 0x09, 0x82, 0x12, + 0x27, 0x98, 0x93, 0x83, 0x6f, 0xd0, 0xd6, 0x80, 0x26, 0xed, 0x67, 0xca, 0x2a, 0x3f, 0x73, 0x27, + 0xb0, 0x9d, 0xe3, 0xe1, 0x67, 0x3e, 0xd4, 0xa0, 0x61, 0x62, 0x0f, 0xdb, 0xe4, 0x78, 0x1c, 0x01, + 0xe3, 0x07, 0x1a, 0x3c, 0x72, 0x0b, 0xd3, 0x84, 0x31, 0x51, 0x9b, 0xba, 0x84, 0xba, 0x2d, 0x72, + 0x94, 0x6c, 0x7d, 0xa4, 0xc1, 0xb9, 0x4c, 0xb6, 0x26, 0x39, 0x5b, 0xcf, 0x42, 0x81, 0x7d, 0x91, + 0x46, 0x6e, 0x29, 0xbf, 0x52, 0x5d, 0x5d, 0x56, 0xd2, 0xbc, 0x82, 0xfb, 0x6f, 0x32, 0x97, 0xb5, + 0x61, 0xbb, 0xa1, 0x29, 0xf0, 0x8d, 0x7f, 0x6a, 0xb0, 0xb8, 0xb9, 0x13, 0xec, 0x0d, 0x58, 0xfa, + 0x22, 0x14, 0x94, 0xf6, 0x36, 0xf9, 0x21, 0x6f, 0x83, 0xae, 0xc2, 0x34, 0xed, 0x77, 0x31, 0x77, + 0x54, 0x33, 0xab, 0x67, 0x2f, 0x2b, 0x62, 0x87, 0xcb, 0x8c, 0xc9, 0xd7, 0xfb, 0x5d, 0x6c, 0x72, + 0x54, 0x74, 0x01, 0xea, 0x43, 0x2a, 0x8f, 0xce, 0xeb, 0x6c, 0x5a, 0xe7, 0xc4, 0xf8, 0x5d, 0x0e, + 0x4e, 0xef, 0x13, 0x71, 0x12, 0x65, 0xab, 0xd6, 0xce, 0x29, 0xd7, 0x46, 0xe7, 0x21, 0x61, 0x02, + 0x96, 0xeb, 0x90, 0x46, 0x7e, 0x29, 0xbf, 0x92, 0x37, 0x6b, 0x09, 0xb7, 0xe5, 0x10, 0xf4, 0x24, + 0xa0, 0x7d, 0xde, 0x44, 0x38, 0xad, 0x69, 0xf3, 0xd4, 0xb0, 0x3b, 0xe1, 0x2e, 0x4b, 0xe9, 0x4f, + 0x84, 0x0a, 0xa6, 0xcd, 0x79, 0x85, 0x43, 0x21, 0xe8, 0x2a, 0xcc, 0xbb, 0xfe, 0x5d, 0xdc, 0x09, + 0xc2, 0xbe, 0xd5, 0xc5, 0x61, 0x0b, 0xfb, 0xd4, 0x6e, 0x63, 0xd2, 0x28, 0x72, 0x8e, 0xe6, 0xa2, + 0xb1, 0x8d, 0xc1, 0x90, 0xf1, 0x6b, 0x0d, 0x16, 0x45, 0x50, 0xb6, 0x61, 0x87, 0xd4, 0x3d, 0xea, + 0x8b, 0xed, 0x3c, 0xcc, 0x74, 0x23, 0x3e, 0x04, 0xde, 0x34, 0xc7, 0xab, 0xc5, 0x50, 0x7e, 0xca, + 0x3e, 0xd1, 0x60, 0x9e, 0xc5, 0x60, 0x27, 0x89, 0xe7, 0x5f, 0x6a, 0x30, 0x77, 0xdb, 0x26, 0x27, + 0x89, 0xe5, 0xdf, 0xc8, 0x2b, 0x28, 0xe6, 0xf9, 0x28, 0x5d, 0x2b, 0x43, 0x4c, 0x33, 0x1d, 0x5d, + 0xfa, 0x33, 0x29, 0xae, 0x89, 0xf1, 0xdb, 0xc1, 0x5d, 0x75, 0xc2, 0x38, 0xff, 0xbd, 0x06, 0x67, + 0x6f, 0x61, 0x1a, 0x73, 0x7d, 0x2c, 0xee, 0xb4, 0x71, 0xad, 0xe5, 0x43, 0x71, 0x23, 0x2b, 0x99, + 0x3f, 0x92, 0x9b, 0xef, 0xfd, 0x1c, 0x2c, 0xb0, 0x6b, 0xe1, 0x78, 0x18, 0xc1, 0x38, 0x31, 0xbb, + 0xc2, 0x50, 0x0a, 0x2a, 0x43, 0x89, 0xef, 0xd3, 0xe2, 0xd8, 0xf7, 0xa9, 0xf1, 0xab, 0x9c, 0x88, + 0x03, 0x92, 0xda, 0x98, 0x64, 0x5b, 0x14, 0xbc, 0xe6, 0x94, 0xbc, 0x1a, 0xa0, 0xc7, 0x90, 0xf5, + 0xb5, 0xe8, 0x7e, 0x4c, 0xc1, 0x8e, 0xed, 0xf5, 0xf8, 0x81, 0x06, 0x8b, 0x51, 0x96, 0xb4, 0x89, + 0xdb, 0x1d, 0xec, 0xd3, 0x07, 0xb7, 0xa1, 0x61, 0x0b, 0xc8, 0x29, 0x2c, 0xe0, 0x0c, 0x54, 0x88, + 0x58, 0x27, 0x4e, 0x80, 0x06, 0x00, 0xe3, 0x63, 0x0d, 0x4e, 0xef, 0x63, 0x67, 0x92, 0x4d, 0x6c, + 0x40, 0xc9, 0xf5, 0x1d, 0x7c, 0x3f, 0xe6, 0x26, 0xfa, 0x65, 0x23, 0x5b, 0x3d, 0xd7, 0x73, 0x62, + 0x36, 0xa2, 0x5f, 0xb4, 0x0c, 0x3a, 0xf6, 0xed, 0x2d, 0x0f, 0x5b, 0x1c, 0x97, 0x1b, 0x72, 0xd9, + 0xac, 0x0a, 0xd8, 0x3a, 0x03, 0x19, 0xdf, 0xd5, 0x60, 0x8e, 0xd9, 0x9a, 0xe4, 0x91, 0x7c, 0xb1, + 0x3a, 0x5b, 0x82, 0x6a, 0xc2, 0x98, 0x24, 0xbb, 0x49, 0x90, 0xb1, 0x0b, 0xf3, 0x69, 0x76, 0x26, + 0xd1, 0xd9, 0x23, 0x00, 0xf1, 0x8e, 0x08, 0x9b, 0xcf, 0x9b, 0x09, 0x88, 0xf1, 0x99, 0x06, 0x48, + 0x84, 0x54, 0x5c, 0x19, 0x47, 0xfc, 0x20, 0xb3, 0xed, 0x62, 0xcf, 0x49, 0x7a, 0xed, 0x0a, 0x87, + 0xf0, 0xe1, 0x35, 0xd0, 0xf1, 0x7d, 0x1a, 0xda, 0x56, 0xd7, 0x0e, 0xed, 0x8e, 0x38, 0x3c, 0x63, + 0x39, 0xd8, 0x2a, 0x27, 0xdb, 0xe0, 0x54, 0xc6, 0x9f, 0x58, 0x30, 0x26, 0x8d, 0xf2, 0xb8, 0x4b, + 0x7c, 0x16, 0x80, 0x1b, 0xad, 0x18, 0x2e, 0x88, 0x61, 0x0e, 0xe1, 0x57, 0xd8, 0xc7, 0x1a, 0xd4, + 0xb9, 0x08, 0x42, 0x9e, 0x2e, 0x9b, 0x76, 0x88, 0x46, 0x1b, 0xa2, 0x19, 0x71, 0x84, 0xfe, 0x0f, + 0x8a, 0x52, 0xb1, 0xf9, 0x71, 0x15, 0x2b, 0x09, 0x0e, 0x10, 0xc3, 0xf8, 0xa9, 0x06, 0x0b, 0x43, + 0x2a, 0x9f, 0xc4, 0xa2, 0x5f, 0x07, 0x24, 0x24, 0x74, 0x06, 0x62, 0x47, 0xd7, 0xed, 0x79, 0xe5, + 0xdd, 0x32, 0xac, 0x24, 0xf3, 0x94, 0x3b, 0x04, 0x21, 0xc6, 0x5f, 0x35, 0x38, 0x73, 0x0b, 0x53, + 0x8e, 0x7a, 0x83, 0xf9, 0x8e, 0x8d, 0x30, 0x68, 0x87, 0x98, 0x90, 0x93, 0x6b, 0x1f, 0x3f, 0x14, + 0xf1, 0x99, 0x4a, 0xa4, 0x49, 0xf4, 0xbf, 0x0c, 0x3a, 0x5f, 0x03, 0x3b, 0x56, 0x18, 0xec, 0x11, + 0x69, 0x47, 0x55, 0x09, 0x33, 0x83, 0x3d, 0x6e, 0x10, 0x34, 0xa0, 0xb6, 0x27, 0x10, 0xe4, 0xc5, + 0xc0, 0x21, 0x6c, 0x98, 0x9f, 0xc1, 0x88, 0x31, 0x36, 0x39, 0x3e, 0xb9, 0x3a, 0xfe, 0xb9, 0x06, + 0x0b, 0x43, 0xa2, 0x4c, 0xa2, 0xdb, 0x67, 0x44, 0xf4, 0x28, 0x84, 0x99, 0x59, 0x3d, 0xa7, 0xa4, + 0x49, 0x2c, 0x26, 0xb0, 0xd1, 0x39, 0xa8, 0x6e, 0xdb, 0xae, 0x67, 0x85, 0xd8, 0x26, 0x81, 0x2f, + 0x05, 0x05, 0x06, 0x32, 0x39, 0xc4, 0xf8, 0x54, 0x83, 0x3a, 0x4b, 0x41, 0x4f, 0xb8, 0xc7, 0xfb, + 0x59, 0x0e, 0x6a, 0xeb, 0x3e, 0xc1, 0x21, 0x3d, 0xfe, 0x19, 0x06, 0x7a, 0x11, 0xaa, 0x5c, 0x30, + 0x62, 0x39, 0x36, 0xb5, 0xe5, 0x75, 0xf5, 0x88, 0xf2, 0x91, 0xf9, 0x65, 0x86, 0xb7, 0x66, 0x53, + 0xdb, 0x14, 0xda, 0x21, 0xec, 0x1b, 0x3d, 0x0c, 0x95, 0x1d, 0x9b, 0xec, 0x58, 0xbb, 0xb8, 0x2f, + 0xc2, 0xbe, 0x9a, 0x59, 0x66, 0x80, 0x57, 0x70, 0x9f, 0xa0, 0x87, 0xa0, 0xec, 0xf7, 0x3a, 0xe2, + 0x80, 0x95, 0x96, 0xb4, 0x95, 0x9a, 0x59, 0xf2, 0x7b, 0x1d, 0x7e, 0xbc, 0xfe, 0x9c, 0x83, 0x99, + 0xbb, 0x3d, 0x96, 0xcf, 0xf0, 0x27, 0xf2, 0x9e, 0x47, 0x1f, 0xcc, 0x18, 0x2f, 0x42, 0x5e, 0xc4, + 0x0c, 0x8c, 0xa2, 0xa1, 0x64, 0x7c, 0x7d, 0x8d, 0x98, 0x0c, 0x89, 0x3f, 0x0f, 0xf7, 0x5a, 0x2d, + 0x19, 0x64, 0xe5, 0x39, 0xb3, 0x15, 0x06, 0xe1, 0x16, 0xc7, 0x44, 0xc1, 0x61, 0x18, 0x87, 0x60, + 0x5c, 0x14, 0x1c, 0x86, 0x62, 0xd0, 0x00, 0xdd, 0x6e, 0xed, 0xfa, 0xc1, 0x9e, 0x87, 0x9d, 0x36, + 0x76, 0xf8, 0xb6, 0x97, 0xcd, 0x14, 0x4c, 0x18, 0x06, 0xdb, 0x78, 0xab, 0xe5, 0x53, 0x9e, 0x48, + 0xe4, 0x99, 0x61, 0x30, 0xc8, 0x4d, 0x9f, 0xb2, 0x61, 0x07, 0x7b, 0x98, 0x62, 0x3e, 0x5c, 0x12, + 0xc3, 0x02, 0x22, 0x87, 0x7b, 0xdd, 0x98, 0xba, 0x2c, 0x86, 0x05, 0x84, 0x0d, 0x9f, 0x81, 0xca, + 0xe0, 0x0d, 0xbc, 0x32, 0x78, 0x0d, 0xe4, 0x00, 0xe3, 0x0f, 0x1a, 0xd4, 0xd6, 0xf8, 0x54, 0x27, + 0xc0, 0xe8, 0x10, 0x4c, 0xe3, 0xfb, 0xdd, 0x50, 0x1e, 0x1d, 0xfe, 0x6d, 0xdc, 0x83, 0xfa, 0x86, + 0x67, 0xb7, 0xf0, 0x4e, 0xe0, 0x39, 0x38, 0xe4, 0xd7, 0x37, 0xaa, 0x43, 0x9e, 0xda, 0x6d, 0x19, + 0x1f, 0xb0, 0x4f, 0xf4, 0x9c, 0x4c, 0xd2, 0x84, 0xe7, 0xf9, 0x1f, 0xe5, 0x45, 0x9a, 0x98, 0x26, + 0xf1, 0xf6, 0xb9, 0x08, 0x45, 0x5e, 0x7a, 0x12, 0x91, 0x83, 0x6e, 0xca, 0x3f, 0xe3, 0x9d, 0xd4, + 0xba, 0xb7, 0xc2, 0xa0, 0xd7, 0x45, 0xeb, 0xa0, 0x77, 0x07, 0x30, 0x66, 0x8e, 0xd9, 0xd7, 0xf6, + 0x30, 0xd3, 0x66, 0x8a, 0xd4, 0xf8, 0x2c, 0x0f, 0xb5, 0x4d, 0x6c, 0x87, 0xad, 0x9d, 0x93, 0xf0, + 0x5a, 0xc2, 0x34, 0xee, 0x10, 0x4f, 0x6e, 0x0c, 0xfb, 0x44, 0x97, 0xe0, 0x54, 0x42, 0x20, 0xab, + 0xcd, 0x14, 0xc4, 0x4d, 0x5b, 0x37, 0xeb, 0xdd, 0x61, 0xc5, 0x3d, 0x0b, 0x65, 0x87, 0x78, 0x16, + 0xdf, 0xa2, 0x12, 0xdf, 0x22, 0xb5, 0x7c, 0x6b, 0xc4, 0xe3, 0x5b, 0x53, 0x72, 0xc4, 0x07, 0x7a, + 0x14, 0x6a, 0x41, 0x8f, 0x76, 0x7b, 0xd4, 0x12, 0xae, 0xa5, 0x51, 0xe6, 0xec, 0xe9, 0x02, 0xc8, + 0x3d, 0x0f, 0x41, 0x2f, 0x43, 0x8d, 0x70, 0x55, 0x46, 0xc1, 0x75, 0x65, 0xdc, 0x18, 0x50, 0x17, + 0x74, 0x22, 0xba, 0x46, 0x17, 0xa0, 0x4e, 0x43, 0xfb, 0x1e, 0xf6, 0x12, 0x45, 0x25, 0xe0, 0x07, + 0x6a, 0x56, 0xc0, 0x07, 0x05, 0xa5, 0x2b, 0x30, 0xd7, 0xee, 0xd9, 0xa1, 0xed, 0x53, 0x8c, 0x13, + 0xd8, 0x55, 0x8e, 0x8d, 0xe2, 0xa1, 0x98, 0xc0, 0x78, 0x05, 0xa6, 0x6f, 0xbb, 0x94, 0x2b, 0x92, + 0xb9, 0x25, 0x8d, 0xa7, 0x32, 0xdc, 0xf9, 0x3c, 0x04, 0xe5, 0x30, 0xd8, 0x13, 0x6e, 0x36, 0xc7, + 0x4d, 0xb0, 0x14, 0x06, 0x7b, 0xdc, 0x87, 0xf2, 0xb2, 0x79, 0x10, 0x4a, 0xdb, 0xcc, 0x99, 0xf2, + 0xcf, 0xf8, 0x96, 0x36, 0x30, 0x1e, 0xe6, 0x21, 0xc9, 0x83, 0xb9, 0xc8, 0x17, 0xa1, 0x14, 0x0a, + 0xfa, 0x91, 0x45, 0xc4, 0xe4, 0x4a, 0xdc, 0xcd, 0x47, 0x54, 0xc6, 0x37, 0x35, 0xd0, 0x5f, 0xf6, + 0x7a, 0xe4, 0x8b, 0xb0, 0x61, 0x55, 0x5d, 0x20, 0xaf, 0xae, 0x49, 0x7c, 0x2f, 0x07, 0x35, 0xc9, + 0xc6, 0x24, 0xe1, 0x4b, 0x26, 0x2b, 0x9b, 0x50, 0x65, 0x4b, 0x5a, 0x04, 0xb7, 0xa3, 0x47, 0x95, + 0xea, 0xea, 0xaa, 0xf2, 0xd4, 0xa7, 0xd8, 0xe0, 0xe5, 0xd7, 0x4d, 0x4e, 0xf4, 0x15, 0x9f, 0x86, + 0x7d, 0x13, 0x5a, 0x31, 0xa0, 0xf9, 0x0e, 0xcc, 0x0e, 0x0d, 0x33, 0xdb, 0xd8, 0xc5, 0xfd, 0xc8, + 0xad, 0xed, 0xe2, 0x3e, 0x7a, 0x3a, 0x59, 0x24, 0xcf, 0xba, 0x7f, 0xef, 0x04, 0x7e, 0xfb, 0x7a, + 0x18, 0xda, 0x7d, 0x59, 0x44, 0x7f, 0x3e, 0xf7, 0x9c, 0x66, 0xfc, 0x31, 0x07, 0xfa, 0x6b, 0x3d, + 0x1c, 0xf6, 0x8f, 0xd2, 0xbd, 0x44, 0xfe, 0x7c, 0x7a, 0xe0, 0xcf, 0xf7, 0x9f, 0xe8, 0x82, 0xe2, + 0x44, 0x2b, 0xfc, 0x52, 0x51, 0xe9, 0x97, 0x54, 0x47, 0xb6, 0x74, 0xa8, 0x23, 0x5b, 0xce, 0x3c, + 0xb2, 0xcc, 0xba, 0xa5, 0x0a, 0x27, 0x3a, 0x64, 0xa9, 0x40, 0x2a, 0x77, 0xd8, 0x40, 0xca, 0xf8, + 0x44, 0x83, 0xca, 0x9b, 0xb8, 0x45, 0x83, 0x90, 0x79, 0x0b, 0x85, 0xee, 0xb5, 0x31, 0x62, 0xd5, + 0xdc, 0x70, 0xac, 0x7a, 0x0d, 0xca, 0xae, 0x63, 0xd9, 0xcc, 0x6c, 0xf8, 0xe6, 0x8d, 0x8a, 0x91, + 0x4a, 0xae, 0xc3, 0xed, 0x6b, 0xfc, 0xc7, 0xf5, 0x1f, 0x69, 0xa0, 0x0b, 0x9e, 0x89, 0xa0, 0x7c, + 0x21, 0xb1, 0x9c, 0xa6, 0xb2, 0x65, 0xf9, 0x13, 0x0b, 0x7a, 0x7b, 0x6a, 0xb0, 0xec, 0x75, 0x00, + 0xa6, 0x3b, 0x49, 0x2e, 0x8e, 0xc2, 0x92, 0x92, 0x5b, 0x41, 0xce, 0xf5, 0x78, 0x7b, 0xca, 0xac, + 0x30, 0x2a, 0x3e, 0xc5, 0x8d, 0x12, 0x14, 0x38, 0xb5, 0xf1, 0x6f, 0x0d, 0xe6, 0x6e, 0xda, 0x5e, + 0x6b, 0xcd, 0x25, 0xd4, 0xf6, 0x5b, 0x13, 0x44, 0x45, 0xcf, 0x43, 0x29, 0xe8, 0x5a, 0x1e, 0xde, + 0xa6, 0x92, 0xa5, 0xe5, 0x11, 0x12, 0x09, 0x35, 0x98, 0xc5, 0xa0, 0x7b, 0x07, 0x6f, 0x53, 0xf4, + 0xff, 0x50, 0x0e, 0xba, 0x56, 0xe8, 0xb6, 0x77, 0xa8, 0xd4, 0xfe, 0x18, 0xc4, 0xa5, 0xa0, 0x6b, + 0x32, 0x8a, 0xc4, 0x63, 0xc7, 0xf4, 0x21, 0x1f, 0x3b, 0x8c, 0xbf, 0xed, 0x13, 0x7f, 0x02, 0xd3, + 0x7e, 0x1e, 0xca, 0xae, 0x4f, 0x2d, 0xc7, 0x25, 0x91, 0x0a, 0xce, 0xaa, 0x6d, 0xc8, 0xa7, 0x5c, + 0x02, 0xbe, 0xa7, 0x3e, 0x65, 0x6b, 0xa3, 0x97, 0x00, 0xb6, 0xbd, 0xc0, 0x96, 0xd4, 0x42, 0x07, + 0xe7, 0xd4, 0xa7, 0x82, 0xa1, 0x45, 0xf4, 0x15, 0x4e, 0xc4, 0x66, 0x18, 0x6c, 0xe9, 0x5f, 0x34, + 0x58, 0xd8, 0xc0, 0x21, 0x71, 0x09, 0xc5, 0x3e, 0x95, 0x0f, 0x8f, 0xeb, 0xfe, 0x76, 0x90, 0x7e, + 0xe1, 0xd5, 0x86, 0x5e, 0x78, 0x3f, 0x9f, 0xf7, 0xce, 0x54, 0x2a, 0x23, 0xea, 0x0c, 0x51, 0x2a, + 0x13, 0x55, 0x53, 0x44, 0x2a, 0x38, 0x93, 0xb1, 0x4d, 0x92, 0xdf, 0x64, 0x46, 0x6c, 0x7c, 0x5f, + 0x74, 0x36, 0x28, 0x85, 0x7a, 0x70, 0x83, 0x5d, 0x04, 0xe9, 0xc0, 0x87, 0xdc, 0xf9, 0x63, 0x30, + 0xe4, 0x3b, 0x32, 0xfa, 0x2d, 0x7e, 0xac, 0xc1, 0x52, 0x36, 0x57, 0x93, 0xdc, 0xbc, 0x2f, 0x41, + 0xc1, 0xf5, 0xb7, 0x83, 0xe8, 0x1d, 0xec, 0xa2, 0x3a, 0xa0, 0x56, 0xae, 0x2b, 0x08, 0x8d, 0x7f, + 0x69, 0x50, 0xe7, 0xbe, 0xfa, 0x08, 0xb6, 0xbf, 0x83, 0x3b, 0x16, 0x71, 0xdf, 0xc5, 0xd1, 0xf6, + 0x77, 0x70, 0x67, 0xd3, 0x7d, 0x17, 0xa7, 0x2c, 0xa3, 0x90, 0xb6, 0x8c, 0xf4, 0x4b, 0x41, 0x71, + 0xc4, 0x3b, 0x67, 0x29, 0xf5, 0xce, 0x69, 0x7c, 0xa8, 0x41, 0xf3, 0x16, 0xa6, 0xc3, 0xa2, 0x1e, + 0x9d, 0x51, 0x7c, 0xa4, 0xc1, 0xc3, 0x4a, 0x86, 0x26, 0xb1, 0x87, 0x17, 0xd2, 0xf6, 0xa0, 0x4e, + 0xb0, 0xf6, 0x2d, 0x29, 0x4d, 0xe1, 0x2a, 0xe8, 0x6b, 0xbd, 0x4e, 0x27, 0x0e, 0x7c, 0x96, 0x41, + 0x0f, 0xc5, 0xa7, 0xc8, 0x3f, 0xc4, 0x75, 0x59, 0x95, 0x30, 0x96, 0x65, 0x18, 0x97, 0xa0, 0x26, + 0x49, 0x24, 0xd7, 0x4d, 0x28, 0x87, 0xf2, 0x5b, 0xe2, 0xc7, 0xff, 0xc6, 0x02, 0xcc, 0x99, 0xb8, + 0xcd, 0x2c, 0x31, 0xbc, 0xe3, 0xfa, 0xbb, 0x72, 0x19, 0xe3, 0x3d, 0x0d, 0xe6, 0xd3, 0x70, 0x39, + 0xd7, 0xff, 0x42, 0xc9, 0x76, 0x9c, 0x10, 0x13, 0x32, 0x72, 0x5b, 0xae, 0x0b, 0x1c, 0x33, 0x42, + 0x4e, 0x68, 0x2e, 0x37, 0xb6, 0xe6, 0x0c, 0x0b, 0x4e, 0xdd, 0xc2, 0xf4, 0x2e, 0xa6, 0xe1, 0x44, + 0x85, 0xec, 0x06, 0xcb, 0x0c, 0x38, 0xb1, 0x34, 0x8b, 0xe8, 0xd7, 0xf8, 0x40, 0x03, 0x94, 0x5c, + 0x61, 0x92, 0x6d, 0x4e, 0x6a, 0x39, 0x97, 0xd6, 0xb2, 0xe8, 0xf5, 0xe9, 0x74, 0x03, 0x1f, 0xfb, + 0x34, 0x19, 0x62, 0xd6, 0x62, 0x28, 0x33, 0xbf, 0x8b, 0xcb, 0x50, 0x8e, 0x6a, 0xaf, 0xa8, 0x04, + 0xf9, 0xeb, 0x9e, 0x57, 0x9f, 0x42, 0x3a, 0x94, 0xd7, 0x65, 0x81, 0xb1, 0xae, 0x5d, 0xfc, 0x32, + 0xcc, 0x0e, 0x65, 0xfe, 0xa8, 0x0c, 0xd3, 0xaf, 0x06, 0x3e, 0xae, 0x4f, 0xa1, 0x3a, 0xe8, 0x37, + 0x5c, 0xdf, 0x0e, 0xfb, 0xe2, 0xa6, 0xad, 0x3b, 0x68, 0x16, 0xaa, 0xfc, 0xc6, 0x91, 0x00, 0xbc, + 0xfa, 0x8f, 0x06, 0xd4, 0xee, 0x72, 0x61, 0x36, 0x71, 0x78, 0xcf, 0x6d, 0x61, 0x64, 0x41, 0x7d, + 0xb8, 0xb9, 0x1a, 0x3d, 0xa1, 0xb4, 0xd1, 0x8c, 0x1e, 0xec, 0xe6, 0x28, 0xf5, 0x18, 0x53, 0xe8, + 0x6d, 0x98, 0x49, 0xb7, 0x3d, 0x23, 0xb5, 0x4b, 0x54, 0xf6, 0x46, 0x1f, 0x34, 0xb9, 0x05, 0xb5, + 0x54, 0x17, 0x33, 0xba, 0xa0, 0x9c, 0x5b, 0xd5, 0xe9, 0xdc, 0x54, 0x47, 0x29, 0xc9, 0x4e, 0x63, + 0xc1, 0x7d, 0xba, 0x99, 0x32, 0x83, 0x7b, 0x65, 0xc7, 0xe5, 0x41, 0xdc, 0xdb, 0x70, 0x6a, 0x5f, + 0x6f, 0x24, 0x7a, 0x52, 0x39, 0x7f, 0x56, 0x0f, 0xe5, 0x41, 0x4b, 0xec, 0x01, 0xda, 0xdf, 0xad, + 0x8b, 0x2e, 0xab, 0x77, 0x20, 0xab, 0x57, 0xb9, 0x79, 0x65, 0x6c, 0xfc, 0x58, 0x71, 0xdf, 0xd6, + 0xe0, 0x74, 0x46, 0x43, 0x23, 0xba, 0xa6, 0x9c, 0x6e, 0x74, 0x57, 0x66, 0xf3, 0xe9, 0xc3, 0x11, + 0xc5, 0x8c, 0xf8, 0x30, 0x3b, 0xd4, 0xe3, 0x87, 0x2e, 0x65, 0xf6, 0x3d, 0xec, 0x6f, 0x76, 0x6c, + 0x3e, 0x31, 0x1e, 0x72, 0xbc, 0x1e, 0xcb, 0x85, 0xd3, 0x8d, 0x71, 0x19, 0xeb, 0xa9, 0xdb, 0xe7, + 0x0e, 0xda, 0xd0, 0xb7, 0xa0, 0x96, 0xea, 0x60, 0xcb, 0xb0, 0x78, 0x55, 0x97, 0xdb, 0x41, 0x53, + 0xbf, 0x03, 0x7a, 0xb2, 0xd1, 0x0c, 0xad, 0x64, 0x9d, 0xa5, 0x7d, 0x13, 0x1f, 0xe6, 0x28, 0x0d, + 0xfa, 0x48, 0x46, 0x1c, 0xa5, 0x7d, 0xad, 0x37, 0xe3, 0x1f, 0xa5, 0xc4, 0xfc, 0x23, 0x8f, 0xd2, + 0xa1, 0x97, 0x78, 0x4f, 0x83, 0x45, 0x75, 0x9f, 0x12, 0x5a, 0xcd, 0xb2, 0xcd, 0xec, 0x8e, 0xac, + 0xe6, 0xb5, 0x43, 0xd1, 0xc4, 0x5a, 0xdc, 0x85, 0x99, 0x74, 0x37, 0x4e, 0x86, 0x16, 0x95, 0x0d, + 0x4c, 0xcd, 0x4b, 0x63, 0xe1, 0xc6, 0x8b, 0xbd, 0x01, 0xd5, 0x44, 0x47, 0x02, 0x7a, 0x7c, 0x84, + 0x1d, 0x27, 0xeb, 0x59, 0x07, 0x69, 0x72, 0x07, 0x6a, 0xa9, 0x2a, 0x74, 0x96, 0x0d, 0x2b, 0x9a, + 0x03, 0x9a, 0x17, 0xc7, 0x41, 0x8d, 0x05, 0xd8, 0x81, 0x5a, 0xaa, 0x26, 0x98, 0xb1, 0x92, 0xaa, + 0x04, 0x9a, 0xb1, 0x92, 0xb2, 0xc4, 0x68, 0x4c, 0xa1, 0x6f, 0x24, 0xca, 0x8f, 0xa9, 0x12, 0x2f, + 0xba, 0x3a, 0x72, 0x1e, 0x55, 0x85, 0xbb, 0xb9, 0x7a, 0x18, 0x92, 0x98, 0x85, 0xd7, 0xa0, 0x12, + 0x57, 0x16, 0xd1, 0xf9, 0x4c, 0xb7, 0x70, 0x98, 0x9d, 0xda, 0x84, 0xa2, 0xa8, 0xf2, 0x21, 0x23, + 0xa3, 0x9e, 0x9f, 0x28, 0x01, 0x36, 0x1f, 0x55, 0xe2, 0xa4, 0x0b, 0x60, 0x62, 0x52, 0x51, 0xc5, + 0xc9, 0x98, 0x34, 0x55, 0xe2, 0x19, 0x77, 0x52, 0x13, 0x8a, 0xe2, 0x6d, 0x37, 0x63, 0xd2, 0x54, + 0x7d, 0xa2, 0x39, 0x1a, 0x47, 0x3c, 0x08, 0x4f, 0xa1, 0x0d, 0x28, 0xf0, 0x37, 0x50, 0xb4, 0x3c, + 0xea, 0x7d, 0x74, 0xd4, 0x8c, 0xa9, 0x27, 0x54, 0x63, 0x0a, 0x7d, 0x15, 0x0a, 0x3c, 0xd4, 0xcf, + 0x98, 0x31, 0xf9, 0xc8, 0xd9, 0x1c, 0x89, 0x12, 0xb1, 0xe8, 0x80, 0x9e, 0x7c, 0x02, 0xc9, 0xf0, + 0xd9, 0x8a, 0x47, 0xa2, 0xe6, 0x38, 0x98, 0xd1, 0x2a, 0xdf, 0xd1, 0xa0, 0x91, 0x95, 0x2d, 0xa3, + 0xcc, 0x8b, 0x79, 0x54, 0xca, 0xdf, 0x7c, 0xe6, 0x90, 0x54, 0xb1, 0x0a, 0xdf, 0x85, 0x39, 0x45, + 0x8e, 0x86, 0xae, 0x64, 0xcd, 0x97, 0x91, 0x5e, 0x36, 0x9f, 0x1a, 0x9f, 0x20, 0x5e, 0x7b, 0x03, + 0x0a, 0x3c, 0xb7, 0xca, 0xd8, 0xbe, 0x64, 0xaa, 0x96, 0x61, 0x10, 0xa9, 0xd4, 0xcc, 0x98, 0x42, + 0x18, 0xf4, 0x64, 0xa2, 0x95, 0xb1, 0x7f, 0x8a, 0x1c, 0xad, 0x79, 0x61, 0x0c, 0xcc, 0x78, 0x19, + 0x0b, 0x60, 0x90, 0xe8, 0xa0, 0xc7, 0xb2, 0x44, 0x4f, 0xe7, 0x5a, 0xcd, 0xc7, 0x0f, 0xc4, 0x8b, + 0x16, 0x58, 0xed, 0x81, 0xbe, 0x11, 0x06, 0xf7, 0xfb, 0x51, 0x5a, 0xf1, 0xdf, 0x91, 0xeb, 0xc6, + 0x33, 0x5f, 0xbb, 0xd6, 0x76, 0xe9, 0x4e, 0x6f, 0x8b, 0x79, 0xae, 0x2b, 0x02, 0xf7, 0x49, 0x37, + 0x90, 0x5f, 0x57, 0x5c, 0x9f, 0xe2, 0xd0, 0xb7, 0xbd, 0x2b, 0x7c, 0x2e, 0x09, 0xed, 0x6e, 0x6d, + 0x15, 0xf9, 0xff, 0xb5, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x79, 0xfe, 0x2f, 0x81, 0x9a, 0x3a, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/internal/proxy/paramtable.go b/internal/proxy/paramtable.go index 185f303599..be32bd0175 100644 --- a/internal/proxy/paramtable.go +++ b/internal/proxy/paramtable.go @@ -56,6 +56,7 @@ type ParamTable struct { MsgStreamTimeTickBufSize int64 MaxNameLength int64 MaxFieldNum int64 + MaxShardNum int32 MaxDimension int64 DefaultPartitionName string DefaultIndexName string @@ -91,6 +92,7 @@ func (pt *ParamTable) initParams() { pt.initMsgStreamTimeTickBufSize() pt.initMaxNameLength() pt.initMaxFieldNum() + pt.initMaxShardNum() pt.initMaxDimension() pt.initDefaultPartitionName() pt.initDefaultIndexName() @@ -164,6 +166,18 @@ func (pt *ParamTable) initMaxNameLength() { pt.MaxNameLength = maxNameLength } +func (pt *ParamTable) initMaxShardNum() { + str, err := pt.Load("proxy.maxShardNum") + if err != nil { + panic(err) + } + maxShardNum, err := strconv.ParseInt(str, 10, 64) + if err != nil { + panic(err) + } + pt.MaxShardNum = int32(maxShardNum) +} + func (pt *ParamTable) initMaxFieldNum() { str, err := pt.Load("proxy.maxFieldNum") if err != nil { diff --git a/internal/proxy/paramtable_test.go b/internal/proxy/paramtable_test.go index a244ec9b8c..5656eb3013 100644 --- a/internal/proxy/paramtable_test.go +++ b/internal/proxy/paramtable_test.go @@ -11,9 +11,11 @@ package proxy -import "testing" +import ( + "testing" +) -func TestParamTable(t *testing.T) { +func TestParamTable_Normal(t *testing.T) { Params.Init() t.Run("EtcdEndPoints", func(t *testing.T) { @@ -56,6 +58,10 @@ func TestParamTable(t *testing.T) { t.Logf("MaxFieldNum: %d", Params.MaxFieldNum) }) + t.Run("MaxShardNum", func(t *testing.T) { + t.Logf("MaxShardNum: %d", Params.MaxShardNum) + }) + t.Run("MaxDimension", func(t *testing.T) { t.Logf("MaxDimension: %d", Params.MaxDimension) }) @@ -76,3 +82,71 @@ func TestParamTable(t *testing.T) { t.Logf("RoleName: %s", Params.RoleName) }) } + +func shouldPanic(t *testing.T, name string, f func()) { + defer func() { recover() }() + f() + t.Errorf("%s should have panicked", name) +} + +func TestParamTable_Panics(t *testing.T) { + shouldPanic(t, "proxy.timeTickInterval", func() { + Params.Remove("proxy.timeTickInterval") + Params.initTimeTickInterval() + }) + + shouldPanic(t, "proxy.timeTickInterval", func() { + Params.Save("proxy.timeTickInterval", "") + Params.initTimeTickInterval() + }) + + shouldPanic(t, "proxy.msgStream.timeTick.bufSize", func() { + Params.Remove("proxy.msgStream.timeTick.bufSize") + Params.initMsgStreamTimeTickBufSize() + }) + + shouldPanic(t, "proxy.msgStream.timeTick.bufSize", func() { + Params.Save("proxy.msgStream.timeTick.bufSize", "abc") + Params.initMsgStreamTimeTickBufSize() + }) + + shouldPanic(t, "proxy.maxNameLength", func() { + Params.Remove("proxy.maxNameLength") + Params.initMaxNameLength() + }) + + shouldPanic(t, "proxy.maxNameLength", func() { + Params.Save("proxy.maxNameLength", "abc") + Params.initMaxNameLength() + }) + + shouldPanic(t, "proxy.maxFieldNum", func() { + Params.Remove("proxy.maxFieldNum") + Params.initMaxFieldNum() + }) + + shouldPanic(t, "proxy.maxFieldNum", func() { + Params.Save("proxy.maxFieldNum", "abc") + Params.initMaxFieldNum() + }) + + shouldPanic(t, "proxy.maxShardNum", func() { + Params.Remove("proxy.maxShardNum") + Params.initMaxShardNum() + }) + + shouldPanic(t, "proxy.maxShardNum", func() { + Params.Save("proxy.maxShardNum", "abc") + Params.initMaxShardNum() + }) + + shouldPanic(t, "proxy.maxDimension", func() { + Params.Remove("proxy.maxDimension") + Params.initMaxDimension() + }) + + shouldPanic(t, "proxy.maxDimension", func() { + Params.Save("proxy.maxDimension", "-asdf") + Params.initMaxDimension() + }) +} diff --git a/internal/proxy/task.go b/internal/proxy/task.go index 61b9ca05b4..5b95f21ce7 100644 --- a/internal/proxy/task.go +++ b/internal/proxy/task.go @@ -1128,6 +1128,10 @@ func (cct *CreateCollectionTask) PreExecute(ctx context.Context) error { return err } + if cct.ShardsNum > Params.MaxShardNum { + return fmt.Errorf("maximum shards's number should be limited to %d", Params.MaxShardNum) + } + if int64(len(cct.schema.Fields)) > Params.MaxFieldNum { return fmt.Errorf("maximum field's number should be limited to %d", Params.MaxFieldNum) } diff --git a/internal/rootcoord/root_coord.go b/internal/rootcoord/root_coord.go index 2df5cccc07..679762746b 100644 --- a/internal/rootcoord/root_coord.go +++ b/internal/rootcoord/root_coord.go @@ -65,6 +65,8 @@ const ( // MetricRequestsSuccess used to count the num of successful requests MetricRequestsSuccess = "success" + + DefaultShardsNum = int32(2) ) func metricProxy(v int64) string { diff --git a/internal/rootcoord/root_coord_test.go b/internal/rootcoord/root_coord_test.go index ecf35a9529..67e0ee5589 100644 --- a/internal/rootcoord/root_coord_test.go +++ b/internal/rootcoord/root_coord_test.go @@ -257,6 +257,139 @@ func getNotTtMsg(ctx context.Context, n int, ch <-chan *msgstream.MsgPack) []msg } } +func createCollectionInMeta(dbName, collName string, core *Core, shardsNum int32, modifyFunc func(*etcdpb.CollectionInfo)) error { + schema := schemapb.CollectionSchema{ + Name: collName, + } + + sbf, err := proto.Marshal(&schema) + + t := &milvuspb.CreateCollectionRequest{ + Base: &commonpb.MsgBase{ + MsgType: commonpb.MsgType_CreateCollection, + Timestamp: 100, + }, + DbName: dbName, + CollectionName: collName, + Schema: sbf, + ShardsNum: shardsNum, + } + + err = proto.Unmarshal(t.Schema, &schema) + if err != nil { + return fmt.Errorf("unmarshal schema error= %w", err) + } + + for idx, field := range schema.Fields { + field.FieldID = int64(idx + StartOfUserFieldID) + } + rowIDField := &schemapb.FieldSchema{ + FieldID: int64(RowIDField), + Name: RowIDFieldName, + IsPrimaryKey: false, + Description: "row id", + DataType: schemapb.DataType_Int64, + } + timeStampField := &schemapb.FieldSchema{ + FieldID: int64(TimeStampField), + Name: TimeStampFieldName, + IsPrimaryKey: false, + Description: "time stamp", + DataType: schemapb.DataType_Int64, + } + schema.Fields = append(schema.Fields, rowIDField, timeStampField) + + collID, _, err := core.IDAllocator(1) + if err != nil { + return fmt.Errorf("alloc collection id error = %w", err) + } + partID, _, err := core.IDAllocator(1) + if err != nil { + return fmt.Errorf("alloc partition id error = %w", err) + } + + vchanNames := make([]string, t.ShardsNum) + chanNames := make([]string, t.ShardsNum) + for i := int32(0); i < t.ShardsNum; i++ { + vchanNames[i] = fmt.Sprintf("%s_%dv%d", core.dmlChannels.GetDmlMsgStreamName(), collID, i) + chanNames[i] = ToPhysicalChannel(vchanNames[i]) + } + + collInfo := etcdpb.CollectionInfo{ + ID: collID, + Schema: &schema, + PartitionIDs: []typeutil.UniqueID{partID}, + PartitionNames: []string{Params.DefaultPartitionName}, + FieldIndexes: make([]*etcdpb.FieldIndexInfo, 0, 16), + VirtualChannelNames: vchanNames, + PhysicalChannelNames: chanNames, + ShardsNum: 0, // intend to set zero + PartitionCreatedTimestamps: []uint64{0}, + } + + if modifyFunc != nil { + modifyFunc(&collInfo) + } + + idxInfo := make([]*etcdpb.IndexInfo, 0, 16) + + // schema is modified (add RowIDField and TimestampField), + // so need Marshal again + schemaBytes, err := proto.Marshal(&schema) + if err != nil { + return fmt.Errorf("marshal schema error = %w", err) + } + + ddCollReq := internalpb.CreateCollectionRequest{ + Base: t.Base, + DbName: t.DbName, + CollectionName: t.CollectionName, + PartitionName: Params.DefaultPartitionName, + DbID: 0, //TODO,not used + CollectionID: collID, + PartitionID: partID, + Schema: schemaBytes, + VirtualChannelNames: vchanNames, + PhysicalChannelNames: chanNames, + } + + // build DdOperation and save it into etcd, when ddmsg send fail, + // system can restore ddmsg from etcd and re-send + ddOp := func(ts typeutil.Timestamp) (string, error) { + ddCollReq.Base.Timestamp = ts + return EncodeDdOperation(&ddCollReq, CreateCollectionDDType) + } + + reason := fmt.Sprintf("create collection %d", collID) + ts, err := core.TSOAllocator(1) + if err != nil { + return fmt.Errorf("TSO alloc fail, error = %w", err) + } + + // use lambda function here to guarantee all resources to be released + createCollectionFn := func() error { + // lock for ddl operation + core.ddlLock.Lock() + defer core.ddlLock.Unlock() + + core.chanTimeTick.AddDdlTimeTick(ts, reason) + // clear ddl timetick in all conditions + defer core.chanTimeTick.RemoveDdlTimeTick(ts, reason) + + err = core.MetaTable.AddCollection(&collInfo, ts, idxInfo, ddOp) + if err != nil { + return fmt.Errorf("meta table add collection failed,error = %w", err) + } + return nil + } + + err = createCollectionFn() + if err != nil { + return err + } + return nil +} + func TestRootCoord(t *testing.T) { const ( dbName = "testDb" @@ -279,7 +412,7 @@ func TestRootCoord(t *testing.T) { Params.MetaRootPath = fmt.Sprintf("/%d/%s", randVal, Params.MetaRootPath) Params.KvRootPath = fmt.Sprintf("/%d/%s", randVal, Params.KvRootPath) Params.MsgChannelSubName = fmt.Sprintf("subname-%d", randVal) - Params.DmlChannelName = fmt.Sprintf("dml-%d", randVal) + Params.DmlChannelName = fmt.Sprintf("rootcoord-dml-test-%d", randVal) err = core.Register() assert.Nil(t, err) @@ -345,6 +478,7 @@ func TestRootCoord(t *testing.T) { timeTickStream.Start() dmlStream, _ := tmpFactory.NewMsgStream(ctx) + clearMsgChan(1500*time.Millisecond, dmlStream.Chan()) err = core.Init() assert.Nil(t, err) @@ -362,6 +496,7 @@ func TestRootCoord(t *testing.T) { assert.Nil(t, err) time.Sleep(100 * time.Millisecond) + shardsNum := int32(8) t.Run("time tick", func(t *testing.T) { ttmsg, ok := <-timeTickStream.Chan() @@ -404,7 +539,6 @@ func TestRootCoord(t *testing.T) { } sbf, err := proto.Marshal(&schema) assert.Nil(t, err) - req := &milvuspb.CreateCollectionRequest{ Base: &commonpb.MsgBase{ MsgType: commonpb.MsgType_CreateCollection, @@ -415,12 +549,13 @@ func TestRootCoord(t *testing.T) { DbName: dbName, CollectionName: collName, Schema: sbf, + ShardsNum: shardsNum, } status, err := core.CreateCollection(ctx, req) assert.Nil(t, err) assert.Equal(t, commonpb.ErrorCode_Success, status.ErrorCode) - assert.Equal(t, 2, core.dmlChannels.GetNumChannels()) + assert.Equal(t, shardsNum, int32(core.dmlChannels.GetNumChannels())) pChan := core.MetaTable.ListCollectionPhysicalChannels() dmlStream.AsConsumer([]string{pChan[0]}, Params.MsgChannelSubName) @@ -438,8 +573,9 @@ func TestRootCoord(t *testing.T) { assert.Equal(t, createMeta.PartitionIDs[0], createMsg.PartitionID) assert.Equal(t, 1, len(createMeta.PartitionNames)) assert.Equal(t, createMeta.PartitionNames[0], createMsg.PartitionName) - assert.Equal(t, 2, len(createMeta.VirtualChannelNames)) - assert.Equal(t, 2, len(createMeta.PhysicalChannelNames)) + assert.Equal(t, shardsNum, int32(len(createMeta.VirtualChannelNames))) + assert.Equal(t, shardsNum, int32(len(createMeta.PhysicalChannelNames))) + assert.Equal(t, shardsNum, createMeta.ShardsNum) vChanName := createMeta.VirtualChannelNames[0] assert.Equal(t, createMeta.PhysicalChannelNames[0], ToPhysicalChannel(vChanName)) @@ -455,9 +591,9 @@ func TestRootCoord(t *testing.T) { assert.Equal(t, len(core.chanTimeTick.proxyTimeTick), 2) pt, ok := core.chanTimeTick.proxyTimeTick[core.session.ServerID] assert.True(t, ok) - assert.Equal(t, 2, len(pt.in.ChannelNames)) - assert.Equal(t, 2, len(pt.in.Timestamps)) - assert.Equal(t, 2, len(pt.timeTick)) + assert.Equal(t, shardsNum, int32(len(pt.in.ChannelNames))) + assert.Equal(t, shardsNum, int32(len(pt.in.Timestamps))) + assert.Equal(t, shardsNum, int32(len(pt.timeTick))) assert.ElementsMatch(t, pt.in.ChannelNames, createMeta.PhysicalChannelNames) assert.Equal(t, pt.in.Timestamps[0], pt.in.Timestamps[1]) assert.Equal(t, pt.in.Timestamps[0], pt.in.DefaultTimestamp) @@ -580,8 +716,9 @@ func TestRootCoord(t *testing.T) { assert.Equal(t, commonpb.ErrorCode_Success, rsp.Status.ErrorCode) assert.Equal(t, collName, rsp.Schema.Name) assert.Equal(t, collMeta.ID, rsp.CollectionID) - assert.Equal(t, 2, len(rsp.VirtualChannelNames)) - assert.Equal(t, 2, len(rsp.PhysicalChannelNames)) + assert.Equal(t, shardsNum, int32(len(rsp.VirtualChannelNames))) + assert.Equal(t, shardsNum, int32(len(rsp.PhysicalChannelNames))) + assert.Equal(t, shardsNum, rsp.ShardsNum) }) t.Run("show collection", func(t *testing.T) { @@ -1881,6 +2018,29 @@ func TestRootCoord2(t *testing.T) { assert.True(t, ok) t.Log("time tick", m1.Base.Timestamp) }) + + t.Run("describe collection", func(t *testing.T) { + collMeta, err := core.MetaTable.GetCollectionByName(collName, 0) + assert.Nil(t, err) + req := &milvuspb.DescribeCollectionRequest{ + Base: &commonpb.MsgBase{ + MsgType: commonpb.MsgType_DescribeCollection, + MsgID: 120, + Timestamp: 120, + SourceID: 120, + }, + DbName: dbName, + CollectionName: collName, + } + rsp, err := core.DescribeCollection(ctx, req) + assert.Nil(t, err) + assert.Equal(t, commonpb.ErrorCode_Success, rsp.Status.ErrorCode) + assert.Equal(t, collName, rsp.Schema.Name) + assert.Equal(t, collMeta.ID, rsp.CollectionID) + assert.Equal(t, DefaultShardsNum, int32(len(rsp.VirtualChannelNames))) + assert.Equal(t, DefaultShardsNum, int32(len(rsp.PhysicalChannelNames))) + assert.Equal(t, DefaultShardsNum, rsp.ShardsNum) + }) } func TestCheckInit(t *testing.T) { @@ -2155,3 +2315,102 @@ func TestCheckFlushedSegments(t *testing.T) { }) } + +func TestRootCoord_CheckZeroShardsNum(t *testing.T) { + const ( + dbName = "testDb" + collName = "testColl" + ) + + shardsNum := int32(2) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + msFactory := msgstream.NewPmsFactory() + Params.Init() + core, err := NewCore(ctx, msFactory) + assert.Nil(t, err) + randVal := rand.Int() + + Params.TimeTickChannel = fmt.Sprintf("rootcoord-time-tick-%d", randVal) + Params.StatisticsChannel = fmt.Sprintf("rootcoord-statistics-%d", randVal) + Params.MetaRootPath = fmt.Sprintf("/%d/%s", randVal, Params.MetaRootPath) + Params.KvRootPath = fmt.Sprintf("/%d/%s", randVal, Params.KvRootPath) + Params.MsgChannelSubName = fmt.Sprintf("subname-%d", randVal) + + err = core.Register() + assert.Nil(t, err) + + dm := &dataMock{randVal: randVal} + err = core.SetDataCoord(ctx, dm) + assert.Nil(t, err) + + im := &indexMock{ + fileArray: []string{}, + idxBuildID: []int64{}, + idxID: []int64{}, + idxDropID: []int64{}, + mutex: sync.Mutex{}, + } + err = core.SetIndexCoord(im) + assert.Nil(t, err) + + qm := &queryMock{ + collID: nil, + mutex: sync.Mutex{}, + } + err = core.SetQueryCoord(qm) + assert.Nil(t, err) + + core.NewProxyClient = func(*sessionutil.Session) (types.Proxy, error) { + return nil, nil + } + + err = core.Init() + assert.Nil(t, err) + + err = core.Start() + assert.Nil(t, err) + + m := map[string]interface{}{ + "receiveBufSize": 1024, + "pulsarAddress": Params.PulsarAddress, + "pulsarBufSize": 1024} + err = msFactory.SetParams(m) + assert.Nil(t, err) + + timeTickStream, _ := msFactory.NewMsgStream(ctx) + timeTickStream.AsConsumer([]string{Params.TimeTickChannel}, Params.MsgChannelSubName) + timeTickStream.Start() + + time.Sleep(100 * time.Millisecond) + + modifyFunc := func(collInfo *etcdpb.CollectionInfo) { + collInfo.ShardsNum = 0 + } + + createCollectionInMeta(dbName, collName, core, shardsNum, modifyFunc) + + t.Run("describe collection", func(t *testing.T) { + collMeta, err := core.MetaTable.GetCollectionByName(collName, 0) + assert.Nil(t, err) + req := &milvuspb.DescribeCollectionRequest{ + Base: &commonpb.MsgBase{ + MsgType: commonpb.MsgType_DescribeCollection, + MsgID: 120, + Timestamp: 120, + SourceID: 120, + }, + DbName: dbName, + CollectionName: collName, + } + rsp, err := core.DescribeCollection(ctx, req) + assert.Nil(t, err) + assert.Equal(t, commonpb.ErrorCode_Success, rsp.Status.ErrorCode) + assert.Equal(t, collName, rsp.Schema.Name) + assert.Equal(t, collMeta.ID, rsp.CollectionID) + assert.Equal(t, shardsNum, int32(len(rsp.VirtualChannelNames))) + assert.Equal(t, shardsNum, int32(len(rsp.PhysicalChannelNames))) + assert.Equal(t, shardsNum, rsp.ShardsNum) + }) +} diff --git a/internal/rootcoord/task.go b/internal/rootcoord/task.go index ad3df0e581..ce19c198a0 100644 --- a/internal/rootcoord/task.go +++ b/internal/rootcoord/task.go @@ -79,8 +79,6 @@ func (t *CreateCollectionReqTask) Type() commonpb.MsgType { } func (t *CreateCollectionReqTask) Execute(ctx context.Context) error { - const defaultShardsNum = 2 - if t.Type() != commonpb.MsgType_CreateCollection { return fmt.Errorf("create collection, msg type = %s", commonpb.MsgType_name[int32(t.Type())]) } @@ -93,12 +91,11 @@ func (t *CreateCollectionReqTask) Execute(ctx context.Context) error { if t.Req.CollectionName != schema.Name { return fmt.Errorf("collection name = %s, schema.Name=%s", t.Req.CollectionName, schema.Name) } - if t.Req.ShardsNum <= 0 { - log.Debug("Set ShardsNum to default", zap.String("collection name", t.Req.CollectionName), - zap.Int32("defaultShardsNum", defaultShardsNum)) - t.Req.ShardsNum = defaultShardsNum + t.Req.ShardsNum = DefaultShardsNum } + log.Debug("CreateCollectionReqTask Execute", zap.Any("CollectionName", t.Req.CollectionName), + zap.Any("ShardsNum", t.Req.ShardsNum)) for idx, field := range schema.Fields { field.FieldID = int64(idx + StartOfUserFieldID) @@ -136,7 +133,7 @@ func (t *CreateCollectionReqTask) Execute(ctx context.Context) error { vchanNames := make([]string, t.Req.ShardsNum) chanNames := make([]string, t.Req.ShardsNum) for i := int32(0); i < t.Req.ShardsNum; i++ { - vchanNames[i] = fmt.Sprintf("%s_%dv", t.core.dmlChannels.GetDmlMsgStreamName(), collID) + vchanNames[i] = fmt.Sprintf("%s_%dv%d", t.core.dmlChannels.GetDmlMsgStreamName(), collID, i) chanNames[i] = ToPhysicalChannel(vchanNames[i]) } @@ -148,6 +145,7 @@ func (t *CreateCollectionReqTask) Execute(ctx context.Context) error { FieldIndexes: make([]*etcdpb.FieldIndexInfo, 0, 16), VirtualChannelNames: vchanNames, PhysicalChannelNames: chanNames, + ShardsNum: t.Req.ShardsNum, PartitionCreatedTimestamps: []uint64{0}, } @@ -376,16 +374,12 @@ func (t *DescribeCollectionReqTask) Execute(ctx context.Context) error { t.Rsp.Schema = proto.Clone(collInfo.Schema).(*schemapb.CollectionSchema) t.Rsp.CollectionID = collInfo.ID - //var newField []*schemapb.FieldSchema - //for _, field := range t.Rsp.Schema.Fields { - // if field.FieldID >= StartOfUserFieldID { - // newField = append(newField, field) - // } - //} - //t.Rsp.Schema.Fields = newField - t.Rsp.VirtualChannelNames = collInfo.VirtualChannelNames t.Rsp.PhysicalChannelNames = collInfo.PhysicalChannelNames + if collInfo.ShardsNum == 0 { + collInfo.ShardsNum = int32(len(collInfo.VirtualChannelNames)) + } + t.Rsp.ShardsNum = collInfo.ShardsNum t.Rsp.CreatedTimestamp = collInfo.CreateTime createdPhysicalTime, _ := tsoutil.ParseHybridTs(collInfo.CreateTime)