Update proto and doc

Signed-off-by: zhenshan.cao <zhenshan.cao@zilliz.com>
pull/4973/head^2
zhenshan.cao 2020-11-02 16:01:04 +08:00 committed by yefu.chen
parent 832a880684
commit 3e596fa474
14 changed files with 1837 additions and 766 deletions

File diff suppressed because it is too large Load Diff

View File

@ -31,6 +31,7 @@
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h> // IWYU pragma: export
#include <google/protobuf/extension_set.h> // IWYU pragma: export
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
#include "common.pb.h"
#include "schema.pb.h"
@ -49,7 +50,7 @@ struct TableStruct_service_5fmsg_2eproto {
PROTOBUF_SECTION_VARIABLE(protodesc_cold);
static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
PROTOBUF_SECTION_VARIABLE(protodesc_cold);
static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[15]
static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[16]
PROTOBUF_SECTION_VARIABLE(protodesc_cold);
static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
@ -104,6 +105,9 @@ extern StringListResponseDefaultTypeInternal _StringListResponse_default_instanc
class StringResponse;
class StringResponseDefaultTypeInternal;
extern StringResponseDefaultTypeInternal _StringResponse_default_instance_;
class VectorValues;
class VectorValuesDefaultTypeInternal;
extern VectorValuesDefaultTypeInternal _VectorValues_default_instance_;
} // namespace service
} // namespace proto
} // namespace milvus
@ -123,11 +127,38 @@ template<> ::milvus::proto::service::RowBatch* Arena::CreateMaybeMessage<::milvu
template<> ::milvus::proto::service::Score* Arena::CreateMaybeMessage<::milvus::proto::service::Score>(Arena*);
template<> ::milvus::proto::service::StringListResponse* Arena::CreateMaybeMessage<::milvus::proto::service::StringListResponse>(Arena*);
template<> ::milvus::proto::service::StringResponse* Arena::CreateMaybeMessage<::milvus::proto::service::StringResponse>(Arena*);
template<> ::milvus::proto::service::VectorValues* Arena::CreateMaybeMessage<::milvus::proto::service::VectorValues>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace milvus {
namespace proto {
namespace service {
enum PlaceholderType : int {
NONE = 0,
VECTOR_BINARY = 100,
VECTOR_FLOAT = 101,
PlaceholderType_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
PlaceholderType_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool PlaceholderType_IsValid(int value);
constexpr PlaceholderType PlaceholderType_MIN = NONE;
constexpr PlaceholderType PlaceholderType_MAX = VECTOR_FLOAT;
constexpr int PlaceholderType_ARRAYSIZE = PlaceholderType_MAX + 1;
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* PlaceholderType_descriptor();
template<typename T>
inline const std::string& PlaceholderType_Name(T enum_t_value) {
static_assert(::std::is_same<T, PlaceholderType>::value ||
::std::is_integral<T>::value,
"Incorrect type passed to function PlaceholderType_Name.");
return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
PlaceholderType_descriptor(), enum_t_value);
}
inline bool PlaceholderType_Parse(
const std::string& name, PlaceholderType* value) {
return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<PlaceholderType>(
PlaceholderType_descriptor(), name, value);
}
// ===================================================================
class CollectionName :
@ -531,7 +562,7 @@ class RowBatch :
enum : int {
kRowDataFieldNumber = 3,
kHashValuesFieldNumber = 4,
kHashKeysFieldNumber = 4,
kCollectionNameFieldNumber = 1,
kPartitionTagFieldNumber = 2,
};
@ -546,16 +577,16 @@ class RowBatch :
const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob >&
row_data() const;
// repeated int32 hash_values = 4;
int hash_values_size() const;
void clear_hash_values();
::PROTOBUF_NAMESPACE_ID::int32 hash_values(int index) const;
void set_hash_values(int index, ::PROTOBUF_NAMESPACE_ID::int32 value);
void add_hash_values(::PROTOBUF_NAMESPACE_ID::int32 value);
// repeated int32 hash_keys = 4;
int hash_keys_size() const;
void clear_hash_keys();
::PROTOBUF_NAMESPACE_ID::int32 hash_keys(int index) const;
void set_hash_keys(int index, ::PROTOBUF_NAMESPACE_ID::int32 value);
void add_hash_keys(::PROTOBUF_NAMESPACE_ID::int32 value);
const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
hash_values() const;
hash_keys() const;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
mutable_hash_values();
mutable_hash_keys();
// string collection_name = 1;
void clear_collection_name();
@ -585,8 +616,8 @@ class RowBatch :
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob > row_data_;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 > hash_values_;
mutable std::atomic<int> _hash_values_cached_byte_size_;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 > hash_keys_;
mutable std::atomic<int> _hash_keys_cached_byte_size_;
::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr collection_name_;
::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr partition_tag_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
@ -594,6 +625,143 @@ class RowBatch :
};
// -------------------------------------------------------------------
class VectorValues :
public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:milvus.proto.service.VectorValues) */ {
public:
VectorValues();
virtual ~VectorValues();
VectorValues(const VectorValues& from);
VectorValues(VectorValues&& from) noexcept
: VectorValues() {
*this = ::std::move(from);
}
inline VectorValues& operator=(const VectorValues& from) {
CopyFrom(from);
return *this;
}
inline VectorValues& operator=(VectorValues&& from) noexcept {
if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
if (this != &from) InternalSwap(&from);
} else {
CopyFrom(from);
}
return *this;
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
return GetDescriptor();
}
static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
return GetMetadataStatic().descriptor;
}
static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
return GetMetadataStatic().reflection;
}
static const VectorValues& default_instance();
static void InitAsDefaultInstance(); // FOR INTERNAL USE ONLY
static inline const VectorValues* internal_default_instance() {
return reinterpret_cast<const VectorValues*>(
&_VectorValues_default_instance_);
}
static constexpr int kIndexInFileMessages =
3;
friend void swap(VectorValues& a, VectorValues& b) {
a.Swap(&b);
}
inline void Swap(VectorValues* other) {
if (other == this) return;
InternalSwap(other);
}
// implements Message ----------------------------------------------
inline VectorValues* New() const final {
return CreateMaybeMessage<VectorValues>(nullptr);
}
VectorValues* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
return CreateMaybeMessage<VectorValues>(arena);
}
void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
void CopyFrom(const VectorValues& from);
void MergeFrom(const VectorValues& from);
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
bool IsInitialized() const final;
size_t ByteSizeLong() const final;
#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
#else
bool MergePartialFromCodedStream(
::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) final;
#endif // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
void SerializeWithCachedSizes(
::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const final;
::PROTOBUF_NAMESPACE_ID::uint8* InternalSerializeWithCachedSizesToArray(
::PROTOBUF_NAMESPACE_ID::uint8* target) const final;
int GetCachedSize() const final { return _cached_size_.Get(); }
private:
inline void SharedCtor();
inline void SharedDtor();
void SetCachedSize(int size) const final;
void InternalSwap(VectorValues* other);
friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
return "milvus.proto.service.VectorValues";
}
private:
inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
return nullptr;
}
inline void* MaybeArenaPtr() const {
return nullptr;
}
public:
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
private:
static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_service_5fmsg_2eproto);
return ::descriptor_table_service_5fmsg_2eproto.file_level_metadata[kIndexInFileMessages];
}
public:
// nested types ----------------------------------------------------
// accessors -------------------------------------------------------
enum : int {
kValueFieldNumber = 1,
};
// repeated .milvus.proto.common.Blob value = 1;
int value_size() const;
void clear_value();
::milvus::proto::common::Blob* mutable_value(int index);
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob >*
mutable_value();
const ::milvus::proto::common::Blob& value(int index) const;
::milvus::proto::common::Blob* add_value();
const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob >&
value() const;
// @@protoc_insertion_point(class_scope:milvus.proto.service.VectorValues)
private:
class _Internal;
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob > value_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
friend struct ::TableStruct_service_5fmsg_2eproto;
};
// -------------------------------------------------------------------
class PlaceholderValue :
public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:milvus.proto.service.PlaceholderValue) */ {
public:
@ -636,7 +804,7 @@ class PlaceholderValue :
&_PlaceholderValue_default_instance_);
}
static constexpr int kIndexInFileMessages =
3;
4;
friend void swap(PlaceholderValue& a, PlaceholderValue& b) {
a.Swap(&b);
@ -708,7 +876,8 @@ class PlaceholderValue :
enum : int {
kTagFieldNumber = 1,
kValueFieldNumber = 2,
kValueFieldNumber = 3,
kTypeFieldNumber = 2,
};
// string tag = 1;
void clear_tag();
@ -721,7 +890,7 @@ class PlaceholderValue :
std::string* release_tag();
void set_allocated_tag(std::string* tag);
// .milvus.proto.common.Blob value = 2;
// .milvus.proto.common.Blob value = 3;
bool has_value() const;
void clear_value();
const ::milvus::proto::common::Blob& value() const;
@ -729,6 +898,11 @@ class PlaceholderValue :
::milvus::proto::common::Blob* mutable_value();
void set_allocated_value(::milvus::proto::common::Blob* value);
// .milvus.proto.service.PlaceholderType type = 2;
void clear_type();
::milvus::proto::service::PlaceholderType type() const;
void set_type(::milvus::proto::service::PlaceholderType value);
// @@protoc_insertion_point(class_scope:milvus.proto.service.PlaceholderValue)
private:
class _Internal;
@ -736,6 +910,7 @@ class PlaceholderValue :
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr tag_;
::milvus::proto::common::Blob* value_;
int type_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
friend struct ::TableStruct_service_5fmsg_2eproto;
};
@ -783,7 +958,7 @@ class Query :
&_Query_default_instance_);
}
static constexpr int kIndexInFileMessages =
4;
5;
friend void swap(Query& a, Query& b) {
a.Swap(&b);
@ -965,7 +1140,7 @@ class StringResponse :
&_StringResponse_default_instance_);
}
static constexpr int kIndexInFileMessages =
5;
6;
friend void swap(StringResponse& a, StringResponse& b) {
a.Swap(&b);
@ -1112,7 +1287,7 @@ class BoolResponse :
&_BoolResponse_default_instance_);
}
static constexpr int kIndexInFileMessages =
6;
7;
friend void swap(BoolResponse& a, BoolResponse& b) {
a.Swap(&b);
@ -1253,7 +1428,7 @@ class StringListResponse :
&_StringListResponse_default_instance_);
}
static constexpr int kIndexInFileMessages =
7;
8;
friend void swap(StringListResponse& a, StringListResponse& b) {
a.Swap(&b);
@ -1406,7 +1581,7 @@ class IntegerListResponse :
&_IntegerListResponse_default_instance_);
}
static constexpr int kIndexInFileMessages =
8;
9;
friend void swap(IntegerListResponse& a, IntegerListResponse& b) {
a.Swap(&b);
@ -1554,7 +1729,7 @@ class IntegerRangeResponse :
&_IntegerRangeResponse_default_instance_);
}
static constexpr int kIndexInFileMessages =
9;
10;
friend void swap(IntegerRangeResponse& a, IntegerRangeResponse& b) {
a.Swap(&b);
@ -1625,32 +1800,10 @@ class IntegerRangeResponse :
// accessors -------------------------------------------------------
enum : int {
kStatusFieldNumber = 1,
kBeginFieldNumber = 2,
kEndFieldNumber = 3,
kStatusFieldNumber = 1,
};
// repeated int64 begin = 2;
int begin_size() const;
void clear_begin();
::PROTOBUF_NAMESPACE_ID::int64 begin(int index) const;
void set_begin(int index, ::PROTOBUF_NAMESPACE_ID::int64 value);
void add_begin(::PROTOBUF_NAMESPACE_ID::int64 value);
const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
begin() const;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
mutable_begin();
// repeated int64 end = 3;
int end_size() const;
void clear_end();
::PROTOBUF_NAMESPACE_ID::int64 end(int index) const;
void set_end(int index, ::PROTOBUF_NAMESPACE_ID::int64 value);
void add_end(::PROTOBUF_NAMESPACE_ID::int64 value);
const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
end() const;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
mutable_end();
// .milvus.proto.common.Status status = 1;
bool has_status() const;
void clear_status();
@ -1659,16 +1812,24 @@ class IntegerRangeResponse :
::milvus::proto::common::Status* mutable_status();
void set_allocated_status(::milvus::proto::common::Status* status);
// int64 begin = 2;
void clear_begin();
::PROTOBUF_NAMESPACE_ID::int64 begin() const;
void set_begin(::PROTOBUF_NAMESPACE_ID::int64 value);
// int64 end = 3;
void clear_end();
::PROTOBUF_NAMESPACE_ID::int64 end() const;
void set_end(::PROTOBUF_NAMESPACE_ID::int64 value);
// @@protoc_insertion_point(class_scope:milvus.proto.service.IntegerRangeResponse)
private:
class _Internal;
::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 > begin_;
mutable std::atomic<int> _begin_cached_byte_size_;
::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 > end_;
mutable std::atomic<int> _end_cached_byte_size_;
::milvus::proto::common::Status* status_;
::PROTOBUF_NAMESPACE_ID::int64 begin_;
::PROTOBUF_NAMESPACE_ID::int64 end_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
friend struct ::TableStruct_service_5fmsg_2eproto;
};
@ -1716,7 +1877,7 @@ class CollectionDescription :
&_CollectionDescription_default_instance_);
}
static constexpr int kIndexInFileMessages =
10;
11;
friend void swap(CollectionDescription& a, CollectionDescription& b) {
a.Swap(&b);
@ -1873,7 +2034,7 @@ class PartitionDescription :
&_PartitionDescription_default_instance_);
}
static constexpr int kIndexInFileMessages =
11;
12;
friend void swap(PartitionDescription& a, PartitionDescription& b) {
a.Swap(&b);
@ -2030,7 +2191,7 @@ class Score :
&_Score_default_instance_);
}
static constexpr int kIndexInFileMessages =
12;
13;
friend void swap(Score& a, Score& b) {
a.Swap(&b);
@ -2181,7 +2342,7 @@ class Hits :
&_Hits_default_instance_);
}
static constexpr int kIndexInFileMessages =
13;
14;
friend void swap(Hits& a, Hits& b) {
a.Swap(&b);
@ -2345,7 +2506,7 @@ class QueryResult :
&_QueryResult_default_instance_);
}
static constexpr int kIndexInFileMessages =
14;
15;
friend void swap(QueryResult& a, QueryResult& b) {
a.Swap(&b);
@ -2749,34 +2910,65 @@ RowBatch::row_data() const {
return row_data_;
}
// repeated int32 hash_values = 4;
inline int RowBatch::hash_values_size() const {
return hash_values_.size();
// repeated int32 hash_keys = 4;
inline int RowBatch::hash_keys_size() const {
return hash_keys_.size();
}
inline void RowBatch::clear_hash_values() {
hash_values_.Clear();
inline void RowBatch::clear_hash_keys() {
hash_keys_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RowBatch::hash_values(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.service.RowBatch.hash_values)
return hash_values_.Get(index);
inline ::PROTOBUF_NAMESPACE_ID::int32 RowBatch::hash_keys(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.service.RowBatch.hash_keys)
return hash_keys_.Get(index);
}
inline void RowBatch::set_hash_values(int index, ::PROTOBUF_NAMESPACE_ID::int32 value) {
hash_values_.Set(index, value);
// @@protoc_insertion_point(field_set:milvus.proto.service.RowBatch.hash_values)
inline void RowBatch::set_hash_keys(int index, ::PROTOBUF_NAMESPACE_ID::int32 value) {
hash_keys_.Set(index, value);
// @@protoc_insertion_point(field_set:milvus.proto.service.RowBatch.hash_keys)
}
inline void RowBatch::add_hash_values(::PROTOBUF_NAMESPACE_ID::int32 value) {
hash_values_.Add(value);
// @@protoc_insertion_point(field_add:milvus.proto.service.RowBatch.hash_values)
inline void RowBatch::add_hash_keys(::PROTOBUF_NAMESPACE_ID::int32 value) {
hash_keys_.Add(value);
// @@protoc_insertion_point(field_add:milvus.proto.service.RowBatch.hash_keys)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
RowBatch::hash_values() const {
// @@protoc_insertion_point(field_list:milvus.proto.service.RowBatch.hash_values)
return hash_values_;
RowBatch::hash_keys() const {
// @@protoc_insertion_point(field_list:milvus.proto.service.RowBatch.hash_keys)
return hash_keys_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
RowBatch::mutable_hash_values() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.service.RowBatch.hash_values)
return &hash_values_;
RowBatch::mutable_hash_keys() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.service.RowBatch.hash_keys)
return &hash_keys_;
}
// -------------------------------------------------------------------
// VectorValues
// repeated .milvus.proto.common.Blob value = 1;
inline int VectorValues::value_size() const {
return value_.size();
}
inline ::milvus::proto::common::Blob* VectorValues::mutable_value(int index) {
// @@protoc_insertion_point(field_mutable:milvus.proto.service.VectorValues.value)
return value_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob >*
VectorValues::mutable_value() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.service.VectorValues.value)
return &value_;
}
inline const ::milvus::proto::common::Blob& VectorValues::value(int index) const {
// @@protoc_insertion_point(field_get:milvus.proto.service.VectorValues.value)
return value_.Get(index);
}
inline ::milvus::proto::common::Blob* VectorValues::add_value() {
// @@protoc_insertion_point(field_add:milvus.proto.service.VectorValues.value)
return value_.Add();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::milvus::proto::common::Blob >&
VectorValues::value() const {
// @@protoc_insertion_point(field_list:milvus.proto.service.VectorValues.value)
return value_;
}
// -------------------------------------------------------------------
@ -2834,7 +3026,21 @@ inline void PlaceholderValue::set_allocated_tag(std::string* tag) {
// @@protoc_insertion_point(field_set_allocated:milvus.proto.service.PlaceholderValue.tag)
}
// .milvus.proto.common.Blob value = 2;
// .milvus.proto.service.PlaceholderType type = 2;
inline void PlaceholderValue::clear_type() {
type_ = 0;
}
inline ::milvus::proto::service::PlaceholderType PlaceholderValue::type() const {
// @@protoc_insertion_point(field_get:milvus.proto.service.PlaceholderValue.type)
return static_cast< ::milvus::proto::service::PlaceholderType >(type_);
}
inline void PlaceholderValue::set_type(::milvus::proto::service::PlaceholderType value) {
type_ = value;
// @@protoc_insertion_point(field_set:milvus.proto.service.PlaceholderValue.type)
}
// .milvus.proto.common.Blob value = 3;
inline bool PlaceholderValue::has_value() const {
return this != internal_default_instance() && value_ != nullptr;
}
@ -3485,64 +3691,32 @@ inline void IntegerRangeResponse::set_allocated_status(::milvus::proto::common::
// @@protoc_insertion_point(field_set_allocated:milvus.proto.service.IntegerRangeResponse.status)
}
// repeated int64 begin = 2;
inline int IntegerRangeResponse::begin_size() const {
return begin_.size();
}
// int64 begin = 2;
inline void IntegerRangeResponse::clear_begin() {
begin_.Clear();
begin_ = PROTOBUF_LONGLONG(0);
}
inline ::PROTOBUF_NAMESPACE_ID::int64 IntegerRangeResponse::begin(int index) const {
inline ::PROTOBUF_NAMESPACE_ID::int64 IntegerRangeResponse::begin() const {
// @@protoc_insertion_point(field_get:milvus.proto.service.IntegerRangeResponse.begin)
return begin_.Get(index);
}
inline void IntegerRangeResponse::set_begin(int index, ::PROTOBUF_NAMESPACE_ID::int64 value) {
begin_.Set(index, value);
// @@protoc_insertion_point(field_set:milvus.proto.service.IntegerRangeResponse.begin)
}
inline void IntegerRangeResponse::add_begin(::PROTOBUF_NAMESPACE_ID::int64 value) {
begin_.Add(value);
// @@protoc_insertion_point(field_add:milvus.proto.service.IntegerRangeResponse.begin)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
IntegerRangeResponse::begin() const {
// @@protoc_insertion_point(field_list:milvus.proto.service.IntegerRangeResponse.begin)
return begin_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
IntegerRangeResponse::mutable_begin() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.service.IntegerRangeResponse.begin)
return &begin_;
inline void IntegerRangeResponse::set_begin(::PROTOBUF_NAMESPACE_ID::int64 value) {
begin_ = value;
// @@protoc_insertion_point(field_set:milvus.proto.service.IntegerRangeResponse.begin)
}
// repeated int64 end = 3;
inline int IntegerRangeResponse::end_size() const {
return end_.size();
}
// int64 end = 3;
inline void IntegerRangeResponse::clear_end() {
end_.Clear();
end_ = PROTOBUF_LONGLONG(0);
}
inline ::PROTOBUF_NAMESPACE_ID::int64 IntegerRangeResponse::end(int index) const {
inline ::PROTOBUF_NAMESPACE_ID::int64 IntegerRangeResponse::end() const {
// @@protoc_insertion_point(field_get:milvus.proto.service.IntegerRangeResponse.end)
return end_.Get(index);
}
inline void IntegerRangeResponse::set_end(int index, ::PROTOBUF_NAMESPACE_ID::int64 value) {
end_.Set(index, value);
// @@protoc_insertion_point(field_set:milvus.proto.service.IntegerRangeResponse.end)
}
inline void IntegerRangeResponse::add_end(::PROTOBUF_NAMESPACE_ID::int64 value) {
end_.Add(value);
// @@protoc_insertion_point(field_add:milvus.proto.service.IntegerRangeResponse.end)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >&
IntegerRangeResponse::end() const {
// @@protoc_insertion_point(field_list:milvus.proto.service.IntegerRangeResponse.end)
return end_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int64 >*
IntegerRangeResponse::mutable_end() {
// @@protoc_insertion_point(field_mutable_list:milvus.proto.service.IntegerRangeResponse.end)
return &end_;
inline void IntegerRangeResponse::set_end(::PROTOBUF_NAMESPACE_ID::int64 value) {
end_ = value;
// @@protoc_insertion_point(field_set:milvus.proto.service.IntegerRangeResponse.end)
}
// -------------------------------------------------------------------
@ -4079,6 +4253,8 @@ QueryResult::hits() const {
// -------------------------------------------------------------------
// -------------------------------------------------------------------
// @@protoc_insertion_point(namespace_scope)
@ -4086,6 +4262,16 @@ QueryResult::hits() const {
} // namespace proto
} // namespace milvus
PROTOBUF_NAMESPACE_OPEN
template <> struct is_proto_enum< ::milvus::proto::service::PlaceholderType> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::milvus::proto::service::PlaceholderType>() {
return ::milvus::proto::service::PlaceholderType_descriptor();
}
PROTOBUF_NAMESPACE_CLOSE
// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>

View File

@ -1,3 +1,3 @@
#!/bin/bash
sudo apt-get install libtbb-dev
sudo apt-get install libtbb-dev libopenblas-dev libopenblas-base

View File

@ -59,7 +59,7 @@ func (im *InsertMarshaler) Marshal(input *TsMsg) ([]byte, commonPb.Status) {
func (im *InsertMarshaler) Unmarshal(input []byte) (*TsMsg, commonPb.Status) {
insertRequest := internalPb.InsertRequest{}
err := proto.Unmarshal(input, &insertRequest)
insertTask := InsertTask{insertRequest}
insertTask := InsertTask{InsertRequest:insertRequest}
if err != nil {
return nil, commonPb.Status{ErrorCode: commonPb.ErrorCode_UNEXPECTED_ERROR}
@ -85,7 +85,7 @@ func (dm *DeleteMarshaler) Marshal(input *TsMsg) ([]byte, commonPb.Status) {
func (dm *DeleteMarshaler) Unmarshal(input []byte) (*TsMsg, commonPb.Status) {
deleteRequest := internalPb.DeleteRequest{}
err := proto.Unmarshal(input, &deleteRequest)
deleteTask := DeleteTask{deleteRequest}
deleteTask := DeleteTask{DeleteRequest:deleteRequest}
if err != nil {
return nil, commonPb.Status{ErrorCode: commonPb.ErrorCode_UNEXPECTED_ERROR}
}
@ -110,7 +110,7 @@ func (sm *SearchMarshaler) Marshal(input *TsMsg) ([]byte, commonPb.Status) {
func (sm *SearchMarshaler) Unmarshal(input []byte) (*TsMsg, commonPb.Status) {
searchRequest := internalPb.SearchRequest{}
err := proto.Unmarshal(input, &searchRequest)
searchTask := SearchTask{searchRequest}
searchTask := SearchTask{SearchRequest: searchRequest}
if err != nil {
return nil, commonPb.Status{ErrorCode: commonPb.ErrorCode_UNEXPECTED_ERROR}
}
@ -135,7 +135,7 @@ func (srm *SearchResultMarshaler) Marshal(input *TsMsg) ([]byte, commonPb.Status
func (srm *SearchResultMarshaler) Unmarshal(input []byte) (*TsMsg, commonPb.Status) {
searchResult := internalPb.SearchResult{}
err := proto.Unmarshal(input, &searchResult)
searchResultTask := SearchResultTask{searchResult}
searchResultTask := SearchResultTask{SearchResult: searchResult}
if err != nil {
return nil, commonPb.Status{ErrorCode: commonPb.ErrorCode_UNEXPECTED_ERROR}
}
@ -160,7 +160,7 @@ func (tm *TimeSyncMarshaler) Marshal(input *TsMsg) ([]byte, commonPb.Status) {
func (tm *TimeSyncMarshaler) Unmarshal(input []byte) (*TsMsg, commonPb.Status) {
timeSyncMsg := internalPb.TimeSyncMsg{}
err := proto.Unmarshal(input, &timeSyncMsg)
timeSyncTask := TimeSyncTask{timeSyncMsg}
timeSyncTask := TimeSyncTask{TimeSyncMsg:timeSyncMsg}
if err != nil {
return nil, commonPb.Status{ErrorCode: commonPb.ErrorCode_UNEXPECTED_ERROR}
}

View File

@ -2,35 +2,40 @@ package msgstream
import (
"context"
"fmt"
"github.com/apache/pulsar-client-go/pulsar"
commonPb "github.com/zilliztech/milvus-distributed/internal/proto/commonpb"
"log"
"sync"
)
const PulsarChannelLength = 100
type TimeStamp uint64
type Timestamp uint64
type MsgPack struct {
BeginTs TimeStamp
EndTs TimeStamp
BeginTs Timestamp
EndTs Timestamp
Msgs []*TsMsg
}
type HashFunc func(*MsgPack) map[uint32]*MsgPack
type RepackFunc func(msgs []*TsMsg, hashKeys [][]int32) map[int32]*MsgPack
type MsgStream interface {
Start()
Close()
SetRepackFunc(repackFunc RepackFunc)
SetMsgMarshaler(marshal *TsMsgMarshaler, unmarshal *TsMsgMarshaler)
Produce(*MsgPack) commonPb.Status
Consume() *MsgPack // message can be consumed exactly once
}
type PulsarMsgStream struct {
client *pulsar.Client
producers []*pulsar.Producer
consumers []*pulsar.Consumer
msgHashFunc HashFunc // return a map from produceChannel idx to *MsgPack
client *pulsar.Client
producers []*pulsar.Producer
consumers []*pulsar.Consumer
repackFunc RepackFunc // return a map from produceChannel idx to *MsgPack
receiveBuf chan *MsgPack
msgMarshaler *TsMsgMarshaler
msgUnmarshaler *TsMsgMarshaler
@ -56,9 +61,9 @@ func (ms *PulsarMsgStream) SetProducers(channels []string) {
}
}
func (ms *PulsarMsgStream) SetConsumers(channels []string, subName string) {
func (ms *PulsarMsgStream) SetConsumers(channels []string, subName string, pulsarBufSize int64) {
for i := 0; i < len(channels); i++ {
receiveChannel := make(chan pulsar.ConsumerMessage, PulsarChannelLength)
receiveChannel := make(chan pulsar.ConsumerMessage, pulsarBufSize)
pc, err := (*ms.client).Subscribe(pulsar.ConsumerOptions{
Topic: channels[i],
SubscriptionName: subName,
@ -78,27 +83,52 @@ func (ms *PulsarMsgStream) SetMsgMarshaler(marshal *TsMsgMarshaler, unmarshal *T
ms.msgUnmarshaler = unmarshal
}
func (ms *PulsarMsgStream) SetHashFunc(hashFunc HashFunc) {
ms.msgHashFunc = func(pack *MsgPack) map[uint32]*MsgPack {
hashResult := hashFunc(pack)
bucketResult := make(map[uint32]*MsgPack)
for k, v := range hashResult {
channelIndex := k % uint32(len(ms.producers))
_, ok := bucketResult[channelIndex]
if ok == false {
msgPack := MsgPack{}
bucketResult[channelIndex] = &msgPack
}
for _, msg := range v.Msgs {
bucketResult[channelIndex].Msgs = append(bucketResult[channelIndex].Msgs, msg)
}
func (ms *PulsarMsgStream) SetRepackFunc(repackFunc RepackFunc) {
ms.repackFunc = repackFunc
}
func (ms *PulsarMsgStream) Start(){
go ms.bufMsgPackToChannel()
}
func (ms *PulsarMsgStream) Close() {
for _, producer := range ms.producers {
if producer != nil {
(*producer).Close()
}
return bucketResult
}
for _, consumer := range ms.consumers {
if consumer != nil {
(*consumer).Close()
}
}
if ms.client != nil {
(*ms.client).Close()
}
}
func (ms *PulsarMsgStream) Produce(msg *MsgPack) commonPb.Status {
result := ms.msgHashFunc(msg)
func (ms *PulsarMsgStream) InitMsgPackBuf(msgPackBufSize int64) {
ms.receiveBuf = make(chan *MsgPack, msgPackBufSize)
}
func (ms *PulsarMsgStream) Produce(msgPack *MsgPack) commonPb.Status {
tsMsgs := msgPack.Msgs
if len(tsMsgs) <=0 {
log.Println("receive empty msgPack")
return commonPb.Status{ErrorCode: commonPb.ErrorCode_SUCCESS}
}
reBucketValues := make([][]int32, len(tsMsgs))
for channelId, tsMsg := range tsMsgs {
hashValues := (*tsMsg).HashKeys()
bucketValues := make([]int32, len(hashValues))
for index, hashValue := range hashValues {
bucketValues[index] = hashValue % int32(len(ms.producers))
}
reBucketValues[channelId] = bucketValues
}
result := ms.repackFunc(tsMsgs, reBucketValues)
for k, v := range result {
for i := 0; i < len(v.Msgs); i++ {
mb, status := (*ms.msgMarshaler).Marshal(v.Msgs[i])
@ -112,30 +142,53 @@ func (ms *PulsarMsgStream) Produce(msg *MsgPack) commonPb.Status {
); err != nil {
log.Printf("post into pulsar filed, error = %v", err)
}
fmt.Println("send a msg")
}
}
return commonPb.Status{ErrorCode: commonPb.ErrorCode_SUCCESS}
}
func (ms *PulsarMsgStream) Consume() *MsgPack {
tsMsgList := make([]*TsMsg, 0)
for i := 0; i < len(ms.consumers); i++ {
pulsarMsg, ok := <-(*ms.consumers[i]).Chan()
if ok == false {
log.Fatal("consumer closed!")
continue
ctx := context.Background()
for {
select {
case cm, ok := <-ms.receiveBuf:
if !ok {
log.Println("buf chan closed")
return nil
}
return cm
case <-ctx.Done():
return nil
}
(*ms.consumers[i]).AckID(pulsarMsg.ID())
tsMsg, status := (*ms.msgUnmarshaler).Unmarshal(pulsarMsg.Payload())
if status.ErrorCode != commonPb.ErrorCode_SUCCESS {
log.Printf("Marshal ManipulationReqMsg failed, error ")
}
tsMsgList = append(tsMsgList, tsMsg)
}
}
msgPack := MsgPack{Msgs: tsMsgList}
return &msgPack
func (ms *PulsarMsgStream) bufMsgPackToChannel() {
tsMsgList := make([]*TsMsg, 0)
for {
for i := 0; i < len(ms.consumers); i++ {
consumerChan := (*ms.consumers[i]).Chan()
chanLen := len(consumerChan)
for l := 0; l < chanLen; l++ {
pulsarMsg, ok := <-consumerChan
if ok == false {
log.Printf("channel closed")
}
(*ms.consumers[i]).AckID(pulsarMsg.ID())
tsMsg, status := (*ms.msgUnmarshaler).Unmarshal(pulsarMsg.Payload())
if status.ErrorCode != commonPb.ErrorCode_SUCCESS {
log.Printf("Marshal ManipulationReqMsg failed, error ")
}
tsMsgList = append(tsMsgList, tsMsg)
}
}
if len(tsMsgList) > 0 {
msgPack := MsgPack{Msgs: tsMsgList}
ms.receiveBuf <- &msgPack
}
}
}
type PulsarTtMsgStream struct {
@ -143,13 +196,17 @@ type PulsarTtMsgStream struct {
inputBuf []*TsMsg
unsolvedBuf []*TsMsg
msgPacks []*MsgPack
lastTimeStamp TimeStamp
lastTimeStamp Timestamp
}
func (ms *PulsarTtMsgStream) Consume() *MsgPack { //return messages in one time tick
func (ms *PulsarTtMsgStream) Start(){
go ms.bufMsgPackToChannel()
}
func (ms *PulsarTtMsgStream) bufMsgPackToChannel() {
wg := sync.WaitGroup{}
wg.Add(len(ms.consumers))
eofMsgTimeStamp := make(map[int]TimeStamp)
eofMsgTimeStamp := make(map[int]Timestamp)
mu := sync.Mutex{}
for i := 0; i < len(ms.consumers); i++ {
go ms.findTimeTick(context.Background(), i, eofMsgTimeStamp, &wg, &mu)
@ -161,12 +218,10 @@ func (ms *PulsarTtMsgStream) Consume() *MsgPack { //return messages in one time
}
timeTickBuf := make([]*TsMsg, 0)
for _, v := range ms.unsolvedBuf {
ms.inputBuf = append(ms.inputBuf, v)
}
ms.inputBuf = append(ms.inputBuf, ms.unsolvedBuf...)
ms.unsolvedBuf = ms.unsolvedBuf[:0]
for _, v := range ms.inputBuf {
if (*v).Ts() >= timeStamp {
if (*v).EndTs() >= timeStamp {
timeTickBuf = append(timeTickBuf, v)
} else {
ms.unsolvedBuf = append(ms.unsolvedBuf, v)
@ -180,12 +235,12 @@ func (ms *PulsarTtMsgStream) Consume() *MsgPack { //return messages in one time
Msgs: timeTickBuf,
}
return &msgPack
ms.receiveBuf <- &msgPack
}
func (ms *PulsarTtMsgStream) findTimeTick(ctx context.Context,
channelIndex int,
eofMsgMap map[int]TimeStamp,
eofMsgMap map[int]Timestamp,
wg *sync.WaitGroup,
mu *sync.Mutex) {
for {
@ -200,9 +255,10 @@ func (ms *PulsarTtMsgStream) findTimeTick(ctx context.Context,
(*ms.consumers[channelIndex]).Ack(pulsarMsg)
tsMsg, status := (*ms.msgUnmarshaler).Unmarshal(pulsarMsg.Payload())
// TODO:: Find the EOF
if (*tsMsg).Type() == kTimeTick {
eofMsgMap[channelIndex] = (*tsMsg).Ts()
break
if (*tsMsg).Type() == kTimeSync {
eofMsgMap[channelIndex] = (*tsMsg).EndTs()
wg.Done()
return
}
if status.ErrorCode != commonPb.ErrorCode_SUCCESS {
log.Printf("Marshal ManipulationReqMsg failed, error ")
@ -212,11 +268,10 @@ func (ms *PulsarTtMsgStream) findTimeTick(ctx context.Context,
mu.Unlock()
}
}
wg.Done()
}
func checkTimeTickMsg(msg map[int]TimeStamp) (TimeStamp, bool) {
checkMap := make(map[TimeStamp]int)
func checkTimeTickMsg(msg map[int]Timestamp) (Timestamp, bool) {
checkMap := make(map[Timestamp]int)
for _, v := range msg {
checkMap[v] += 1
}

View File

@ -0,0 +1,213 @@
package msgstream
import (
"fmt"
commonPb "github.com/zilliztech/milvus-distributed/internal/proto/commonpb"
internalPb "github.com/zilliztech/milvus-distributed/internal/proto/internalpb"
"testing"
)
func repackFunc(msgs []*TsMsg, hashKeys [][]int32) map[int32]*MsgPack {
result := make(map[int32]*MsgPack)
for i, request := range msgs {
keys := hashKeys[i]
for _, channelId := range keys {
_, ok := result[channelId]
if ok == false {
msgPack := MsgPack{}
result[channelId] = &msgPack
}
result[channelId].Msgs = append(result[channelId].Msgs, request)
}
}
return result
}
func getTsMsg(msgType MsgType, reqId int64, hashValue int32) *TsMsg {
var tsMsg TsMsg
switch msgType {
case kInsert:
insertRequest := internalPb.InsertRequest{
ReqType: internalPb.ReqType_kInsert,
ReqId: reqId,
CollectionName: "Collection",
PartitionTag: "Partition",
SegmentId: 1,
ChannelId: 1,
ProxyId: 1,
Timestamps: []uint64{1},
}
insertMsg := InsertTask{
HashValues: []int32{hashValue},
InsertRequest: insertRequest,
}
tsMsg = insertMsg
case kDelete:
deleteRequest := internalPb.DeleteRequest{
ReqType: internalPb.ReqType_kDelete,
ReqId: reqId,
CollectionName: "Collection",
ChannelId: 1,
ProxyId: 1,
Timestamps: []uint64{1},
PrimaryKeys: []int64{1},
}
deleteMsg := DeleteTask{
HashValues: []int32{hashValue},
DeleteRequest: deleteRequest,
}
tsMsg = deleteMsg
case kSearch:
searchRequest := internalPb.SearchRequest{
ReqType: internalPb.ReqType_kSearch,
ReqId: reqId,
ProxyId: 1,
Timestamp: 1,
ResultChannelId: 1,
}
searchMsg := SearchTask{
HashValues: []int32{hashValue},
SearchRequest: searchRequest,
}
tsMsg = searchMsg
case kSearchResult:
searchResult := internalPb.SearchResult{
Status: &commonPb.Status{ErrorCode: commonPb.ErrorCode_SUCCESS},
ReqId: reqId,
ProxyId: 1,
QueryNodeId: 1,
Timestamp: 1,
ResultChannelId: 1,
}
searchResultMsg := SearchResultTask{
HashValues: []int32{hashValue},
SearchResult: searchResult,
}
tsMsg = searchResultMsg
case kTimeSync:
timeSyncResult := internalPb.TimeSyncMsg{
PeerId: reqId,
Timestamp: 1,
}
timeSyncMsg := TimeSyncTask{
HashValues: []int32{hashValue},
TimeSyncMsg: timeSyncResult,
}
tsMsg = timeSyncMsg
}
return &tsMsg
}
func initStream(pulsarAddress string,
producerChannels []string,
consumerChannels []string,
consumerSubName string,
msgPack *MsgPack,
inputMsgType MsgType,
outputMsgType MsgType) {
// set input stream
inputStream := PulsarMsgStream{}
inputStream.SetPulsarCient(pulsarAddress)
inputStream.SetMsgMarshaler(GetMarshaler(inputMsgType), nil)
inputStream.SetProducers(producerChannels)
inputStream.SetRepackFunc(repackFunc)
// set output stream
outputStream := PulsarMsgStream{}
outputStream.SetPulsarCient(pulsarAddress)
outputStream.SetMsgMarshaler(nil, GetMarshaler(outputMsgType))
outputStream.SetConsumers(consumerChannels, consumerSubName, 100)
outputStream.InitMsgPackBuf(100)
outputStream.Start()
//send msgPack
inputStream.Produce(msgPack)
//outputStream.Start()
// receive msg
receiveCount := 0
for {
result := outputStream.Consume()
if len(result.Msgs) > 0 {
msgs := result.Msgs
for _, v := range msgs {
receiveCount++
fmt.Println("msg type: ", (*v).Type(), ", msg value: ", *v)
}
}
if receiveCount >= len(msgPack.Msgs) {
break
}
}
}
func TestStream_Insert(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"insert1", "insert2"}
consumerChannels := []string{"insert1", "insert2"}
consumerSubName := "subInsert"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kInsert, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kInsert, 1, 1))
//run stream
initStream(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kInsert, kInsert)
}
func TestStream_Delete(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"delete"}
consumerChannels := []string{"delete"}
consumerSubName := "subDelete"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kDelete, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kDelete, 3, 3))
//run stream
initStream(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kDelete, kDelete)
}
func TestStream_Search(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"search"}
consumerChannels := []string{"search"}
consumerSubName := "subSearch"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kSearch, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kSearch, 3, 3))
//run stream
initStream(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kSearch, kSearch)
}
func TestStream_SearchResult(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"search"}
consumerChannels := []string{"search"}
consumerSubName := "subSearch"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kSearchResult, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kSearchResult, 3, 3))
//run stream
initStream(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kSearchResult, kSearchResult)
}
func TestStream_TimeSync(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"search"}
consumerChannels := []string{"search"}
consumerSubName := "subSearch"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kTimeSync, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kTimeSync, 3, 3))
//run stream
initStream(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kTimeSync, kTimeSync)
}

View File

@ -0,0 +1,71 @@
package msgstream
func NewInputStream(pulsarAddress string,
producerChannels []string,
timeTick bool) *MsgStream {
var stream MsgStream
if timeTick {
pulsarTtStream := PulsarTtMsgStream{}
pulsarTtStream.SetPulsarCient(pulsarAddress)
pulsarTtStream.SetProducers(producerChannels)
stream = &pulsarTtStream
} else {
pulsarStream := PulsarMsgStream{}
pulsarStream.SetPulsarCient(pulsarAddress)
pulsarStream.SetProducers(producerChannels)
stream = &pulsarStream
}
return &stream
}
func NewOutputStream(pulsarAddress string,
pulsarBufSize int64,
consumerChannelSize int64,
consumerChannels []string,
consumerSubName string,
timeTick bool) *MsgStream {
var stream MsgStream
if timeTick {
pulsarTtStream := PulsarTtMsgStream{}
pulsarTtStream.SetPulsarCient(pulsarAddress)
pulsarTtStream.SetConsumers(consumerChannels, consumerSubName, pulsarBufSize)
pulsarTtStream.InitMsgPackBuf(consumerChannelSize)
stream = &pulsarTtStream
} else {
pulsarStream := PulsarMsgStream{}
pulsarStream.SetPulsarCient(pulsarAddress)
pulsarStream.SetConsumers(consumerChannels, consumerSubName, pulsarBufSize)
pulsarStream.InitMsgPackBuf(consumerChannelSize)
stream = &pulsarStream
}
return &stream
}
func NewPipeStream(pulsarAddress string,
pulsarBufSize int64,
consumerChannelSize int64,
producerChannels []string,
consumerChannels []string,
consumerSubName string,
timeTick bool) *MsgStream {
var stream MsgStream
if timeTick {
pulsarTtStream := PulsarTtMsgStream{}
pulsarTtStream.SetPulsarCient(pulsarAddress)
pulsarTtStream.SetProducers(producerChannels)
pulsarTtStream.SetConsumers(consumerChannels, consumerSubName, pulsarBufSize)
pulsarTtStream.InitMsgPackBuf(consumerChannelSize)
stream = &pulsarTtStream
} else {
pulsarStream := PulsarMsgStream{}
pulsarStream.SetPulsarCient(pulsarAddress)
pulsarStream.SetProducers(producerChannels)
pulsarStream.SetConsumers(consumerChannels, consumerSubName, pulsarBufSize)
pulsarStream.InitMsgPackBuf(consumerChannelSize)
stream = &pulsarStream
}
return &stream
}

View File

@ -0,0 +1,251 @@
package msgstream
import (
"fmt"
internalPb "github.com/zilliztech/milvus-distributed/internal/proto/internalpb"
"testing"
)
func TestNewStream_Insert(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"insert1", "insert2"}
consumerChannels := []string{"insert1", "insert2"}
consumerSubName := "subInsert"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kInsert, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kInsert, 1, 1))
inputStream := NewInputStream(pulsarAddress, producerChannels, false)
outputStream := NewOutputStream(pulsarAddress, 100, 100, consumerChannels, consumerSubName, false)
(*inputStream).SetMsgMarshaler(GetMarshaler(kInsert), nil)
(*inputStream).SetRepackFunc(repackFunc)
(*outputStream).SetMsgMarshaler(nil, GetMarshaler(kInsert))
(*outputStream).Start()
//send msgPack
(*inputStream).Produce(&msgPack)
//(*outputStream).Start()
// receive msg
receiveCount := 0
for {
result := (*outputStream).Consume()
if len(result.Msgs) > 0 {
msgs := result.Msgs
for _, v := range msgs {
receiveCount++
fmt.Println("msg type: ", (*v).Type(), ", msg value: ", *v)
}
}
if receiveCount >= len(msgPack.Msgs) {
break
}
}
}
func TestNewStream_Delete(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"delete1", "delete2"}
consumerChannels := []string{"delete1", "delete2"}
consumerSubName := "subDelete"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kDelete, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kDelete, 1, 1))
inputStream := NewInputStream(pulsarAddress, producerChannels, false)
outputStream := NewOutputStream(pulsarAddress, 100, 100, consumerChannels, consumerSubName, false)
(*inputStream).SetMsgMarshaler(GetMarshaler(kDelete), nil)
(*inputStream).SetRepackFunc(repackFunc)
(*outputStream).SetMsgMarshaler(nil, GetMarshaler(kDelete))
(*outputStream).Start()
//send msgPack
(*inputStream).Produce(&msgPack)
//(*outputStream).Start()
// receive msg
receiveCount := 0
for {
result := (*outputStream).Consume()
if len(result.Msgs) > 0 {
msgs := result.Msgs
for _, v := range msgs {
receiveCount++
fmt.Println("msg type: ", (*v).Type(), ", msg value: ", *v)
}
}
if receiveCount >= len(msgPack.Msgs) {
break
}
}
}
func TestNewStream_Search(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"search1", "search2"}
consumerChannels := []string{"search1", "search2"}
consumerSubName := "subSearch"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kSearch, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kSearch, 1, 1))
inputStream := NewInputStream(pulsarAddress, producerChannels, false)
outputStream := NewOutputStream(pulsarAddress, 100, 100, consumerChannels, consumerSubName, false)
(*inputStream).SetMsgMarshaler(GetMarshaler(kSearch), nil)
(*inputStream).SetRepackFunc(repackFunc)
(*outputStream).SetMsgMarshaler(nil, GetMarshaler(kSearch))
(*outputStream).Start()
//send msgPack
(*inputStream).Produce(&msgPack)
//(*outputStream).Start()
// receive msg
receiveCount := 0
for {
result := (*outputStream).Consume()
if len(result.Msgs) > 0 {
msgs := result.Msgs
for _, v := range msgs {
receiveCount++
fmt.Println("msg type: ", (*v).Type(), ", msg value: ", *v)
}
}
if receiveCount >= len(msgPack.Msgs) {
break
}
}
}
func TestNewStream_SearchResult(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"searchResult1", "searchResult2"}
consumerChannels := []string{"searchResult1", "searchResult2"}
consumerSubName := "subInsert"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kSearchResult, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kSearchResult, 1, 1))
inputStream := NewInputStream(pulsarAddress, producerChannels, false)
outputStream := NewOutputStream(pulsarAddress, 100, 100, consumerChannels, consumerSubName, false)
(*inputStream).SetMsgMarshaler(GetMarshaler(kSearchResult), nil)
(*inputStream).SetRepackFunc(repackFunc)
(*outputStream).SetMsgMarshaler(nil, GetMarshaler(kSearchResult))
(*outputStream).Start()
//send msgPack
(*inputStream).Produce(&msgPack)
//(*outputStream).Start()
// receive msg
receiveCount := 0
for {
result := (*outputStream).Consume()
if len(result.Msgs) > 0 {
msgs := result.Msgs
for _, v := range msgs {
receiveCount++
fmt.Println("msg type: ", (*v).Type(), ", msg value: ", *v)
}
}
if receiveCount >= len(msgPack.Msgs) {
break
}
}
}
func TestNewStream_TimeSync(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"timeSync1", "timeSync2"}
consumerChannels := []string{"timeSync1", "timeSync2"}
consumerSubName := "subInsert"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kTimeSync, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kTimeSync, 1, 1))
inputStream := NewInputStream(pulsarAddress, producerChannels, false)
outputStream := NewOutputStream(pulsarAddress, 100, 100, consumerChannels, consumerSubName, false)
(*inputStream).SetMsgMarshaler(GetMarshaler(kTimeSync), nil)
(*inputStream).SetRepackFunc(repackFunc)
(*outputStream).SetMsgMarshaler(nil, GetMarshaler(kTimeSync))
(*outputStream).Start()
//send msgPack
(*inputStream).Produce(&msgPack)
// receive msg
receiveCount := 0
for {
result := (*outputStream).Consume()
if len(result.Msgs) > 0 {
msgs := result.Msgs
for _, v := range msgs {
receiveCount++
fmt.Println("msg type: ", (*v).Type(), ", msg value: ", *v)
}
}
if receiveCount >= len(msgPack.Msgs) {
break
}
}
}
func TestNewStream_Insert_TimeTick(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"insert"}
consumerChannels := []string{"insert"}
consumerSubName := "subInsert"
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kInsert, 0, 0))
msgPack.Msgs = append(msgPack.Msgs, getTsMsg(kInsert, 1, 1))
insertRequest := internalPb.InsertRequest{
ReqType: internalPb.ReqType_kTimeTick,
ReqId: 2,
CollectionName: "Collection",
PartitionTag: "Partition",
SegmentId: 1,
ChannelId: 1,
ProxyId: 1,
Timestamps: []uint64{1},
}
insertMsg := InsertTask{
HashValues: []int32{2},
InsertRequest: insertRequest,
}
var tsMsg TsMsg = insertMsg
msgPack.Msgs = append(msgPack.Msgs, &tsMsg)
inputStream := NewInputStream(pulsarAddress, producerChannels, false)
outputStream := NewOutputStream(pulsarAddress, 100, 100, consumerChannels, consumerSubName, true)
(*inputStream).SetMsgMarshaler(GetMarshaler(kInsert), nil)
(*inputStream).SetRepackFunc(repackFunc)
(*outputStream).SetMsgMarshaler(nil, GetMarshaler(kInsert))
(*outputStream).Start()
//send msgPack
(*inputStream).Produce(&msgPack)
// receive msg
receiveCount := 0
for {
result := (*outputStream).Consume()
if len(result.Msgs) > 0 {
msgs := result.Msgs
for _, v := range msgs {
receiveCount++
fmt.Println("msg type: ", (*v).Type(), ", msg value: ", *v)
}
}
if receiveCount + 1 >= len(msgPack.Msgs) {
break
}
}
}

View File

@ -1,215 +0,0 @@
package msgstream
import (
"fmt"
commonPb "github.com/zilliztech/milvus-distributed/internal/proto/commonpb"
internalPb "github.com/zilliztech/milvus-distributed/internal/proto/internalpb"
"github.com/zilliztech/milvus-distributed/internal/util/typeutil"
"log"
"testing"
)
func produceHashTopic(input *MsgPack) map[uint32]*MsgPack {
msgs := input.Msgs
result := make(map[uint32]*MsgPack)
count := len(msgs)
for i := 0; i < count; i++ {
var key uint32
var err error
switch (*msgs[i]).Type() {
case kInsert:
var insertMsg InsertTask = (*msgs[i]).(InsertTask)
key, err = typeutil.Hash32Int64(insertMsg.ReqId)
case kDelete:
var deleteMsg DeleteTask = (*msgs[i]).(DeleteTask)
key, err = typeutil.Hash32Int64(deleteMsg.ReqId)
case kSearch:
var searchMsg SearchTask = (*msgs[i]).(SearchTask)
key, err = typeutil.Hash32Int64(searchMsg.ReqId)
case kSearchResult:
var searchResultMsg SearchResultTask = (*msgs[i]).(SearchResultTask)
key, err = typeutil.Hash32Int64(searchResultMsg.ReqId)
case kTimeSync:
var timeSyncMsg TimeSyncTask = (*msgs[i]).(TimeSyncTask)
key, err = typeutil.Hash32Int64(timeSyncMsg.PeerId)
default:
log.Fatal("con't find msgType")
}
if err != nil {
log.Fatal(err)
}
_, ok := result[key]
if ok == false {
msgPack := MsgPack{}
result[key] = &msgPack
}
result[key].Msgs = append(result[key].Msgs, msgs[i])
}
return result
}
func baseTest(pulsarAddress string,
producerChannels []string,
consumerChannels []string,
consumerSubName string,
msgPack *MsgPack,
inputMsgType MsgType,
outputMsgType MsgType) {
// set input stream
inputStream := PulsarMsgStream{}
inputStream.SetPulsarCient(pulsarAddress)
inputStream.SetMsgMarshaler(GetMarshaler(inputMsgType), nil)
inputStream.SetProducers(producerChannels)
inputStream.SetHashFunc(produceHashTopic)
// set output stream
outputStream := PulsarMsgStream{}
outputStream.SetPulsarCient(pulsarAddress)
outputStream.SetMsgMarshaler(nil, GetMarshaler(outputMsgType))
outputStream.SetConsumers(consumerChannels, consumerSubName)
//send msgPack
inputStream.Produce(msgPack)
// receive msg
for {
result := outputStream.Consume()
if len(result.Msgs) > 0 {
msgs := result.Msgs
for _, v := range msgs {
fmt.Println("msg type: ", (*v).Type(), ", msg value: ", *v)
}
break
}
}
}
func TestStream_Insert(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"insert"}
consumerChannels := []string{"insert"}
consumerSubName := "subInsert"
//pack tsmsg
insertRequest := internalPb.InsertRequest{
ReqType: internalPb.ReqType_kInsert,
ReqId: 1,
CollectionName: "Collection",
PartitionTag: "Partition",
SegmentId: 1,
ChannelId: 1,
ProxyId: 1,
Timestamp: 1,
}
insertMsg := InsertTask{
insertRequest,
}
var tsMsg TsMsg = insertMsg
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, &tsMsg)
//run stream
baseTest(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kInsert, kInsert)
}
func TestStream_Delete(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"delete"}
consumerChannels := []string{"delete"}
consumerSubName := "subDelete"
//pack tsmsg
deleteRequest := internalPb.DeleteRequest{
ReqType: internalPb.ReqType_kInsert,
ReqId: 1,
CollectionName: "Collection",
ChannelId: 1,
ProxyId: 1,
Timestamp: 1,
PrimaryKeys: []int64{1},
}
deleteMsg := DeleteTask{
deleteRequest,
}
var tsMsg TsMsg = deleteMsg
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, &tsMsg)
//run stream
baseTest(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kDelete, kDelete)
}
func TestStream_Search(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"search"}
consumerChannels := []string{"search"}
consumerSubName := "subSearch"
//pack tsmsg
searchRequest := internalPb.SearchRequest{
ReqType: internalPb.ReqType_kSearch,
ReqId: 1,
ProxyId: 1,
Timestamp: 1,
ResultChannelId: 1,
}
searchMsg := SearchTask{
searchRequest,
}
var tsMsg TsMsg = searchMsg
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, &tsMsg)
//run stream
baseTest(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kSearch, kSearch)
}
func TestStream_SearchResult(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"search"}
consumerChannels := []string{"search"}
consumerSubName := "subSearch"
//pack tsmsg
searchResult := internalPb.SearchResult{
Status: &commonPb.Status{ErrorCode: commonPb.ErrorCode_SUCCESS},
ReqId: 1,
ProxyId: 1,
QueryNodeId: 1,
Timestamp: 1,
ResultChannelId: 1,
}
searchResultMsg := SearchResultTask{
searchResult,
}
var tsMsg TsMsg = searchResultMsg
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, &tsMsg)
//run stream
baseTest(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kSearchResult, kSearchResult)
}
func TestStream_TimeSync(t *testing.T) {
pulsarAddress := "pulsar://localhost:6650"
producerChannels := []string{"search"}
consumerChannels := []string{"search"}
consumerSubName := "subSearch"
//pack tsmsg
timeSyncResult := internalPb.TimeSyncMsg{
PeerId: 1,
Timestamp: 1,
}
timeSyncMsg := TimeSyncTask{
timeSyncResult,
}
var tsMsg TsMsg = timeSyncMsg
msgPack := MsgPack{}
msgPack.Msgs = append(msgPack.Msgs, &tsMsg)
//run stream
baseTest(pulsarAddress, producerChannels, consumerChannels, consumerSubName, &msgPack, kTimeSync, kTimeSync)
}

View File

@ -7,125 +7,218 @@ import (
type MsgType uint32
const (
kInsert MsgType = 1
kDelete MsgType = 2
kSearch MsgType = 3
kSearchResult MsgType = 4
kTimeTick MsgType = 5
kSegmentStatics MsgType = 6
kTimeSync MsgType = 7
kInsert MsgType = 400
kDelete MsgType = 401
kSearch MsgType = 500
kSearchResult MsgType = 1000
kSegmentStatics MsgType = 1100
kTimeTick MsgType = 1200
kTimeSync MsgType = 1201
)
type TsMsg interface {
SetTs(ts TimeStamp)
Ts() TimeStamp
SetTs(ts Timestamp)
BeginTs() Timestamp
EndTs() Timestamp
Type() MsgType
HashKeys() []int32
}
/////////////////////////////////////////Insert//////////////////////////////////////////
type InsertTask struct {
HashValues []int32
internalPb.InsertRequest
}
func (it InsertTask) SetTs(ts TimeStamp) {
it.Timestamp = uint64(ts)
func (it InsertTask) SetTs(ts Timestamp) {
// TODO::
}
func (it InsertTask) Ts() TimeStamp {
return TimeStamp(it.Timestamp)
func (it InsertTask) BeginTs() Timestamp {
timestamps := it.Timestamps
var beginTs Timestamp
for _, v := range timestamps {
beginTs = Timestamp(v)
break
}
for _, v := range timestamps {
if beginTs > Timestamp(v) {
beginTs = Timestamp(v)
}
}
return beginTs
}
func (it InsertTask) EndTs() Timestamp {
timestamps := it.Timestamps
var endTs Timestamp
for _, v := range timestamps {
endTs = Timestamp(v)
break
}
for _, v := range timestamps {
if endTs < Timestamp(v) {
endTs = Timestamp(v)
}
}
return endTs
}
func (it InsertTask) Type() MsgType {
if it.ReqType == internalPb.ReqType_kNone {
return kTimeTick
if it.ReqType == internalPb.ReqType_kTimeTick {
return kTimeSync
}
return kInsert
}
func (it InsertTask) HashKeys() []int32 {
return it.HashValues
}
/////////////////////////////////////////Delete//////////////////////////////////////////
type DeleteTask struct {
HashValues []int32
internalPb.DeleteRequest
}
func (dt DeleteTask) SetTs(ts TimeStamp) {
dt.Timestamp = uint64(ts)
func (dt DeleteTask) SetTs(ts Timestamp) {
// TODO::
}
func (dt DeleteTask) Ts() TimeStamp {
return TimeStamp(dt.Timestamp)
func (dt DeleteTask) BeginTs() Timestamp {
timestamps := dt.Timestamps
var beginTs Timestamp
for _, v := range timestamps {
beginTs = Timestamp(v)
break
}
for _, v := range timestamps {
if beginTs > Timestamp(v) {
beginTs = Timestamp(v)
}
}
return beginTs
}
func (dt DeleteTask) EndTs() Timestamp {
timestamps := dt.Timestamps
var endTs Timestamp
for _, v := range timestamps {
endTs = Timestamp(v)
break
}
for _, v := range timestamps {
if endTs < Timestamp(v) {
endTs = Timestamp(v)
}
}
return endTs
}
func (dt DeleteTask) Type() MsgType {
if dt.ReqType == internalPb.ReqType_kNone {
return kTimeTick
if dt.ReqType == internalPb.ReqType_kTimeTick {
return kTimeSync
}
return kDelete
}
func (dt DeleteTask) HashKeys() []int32 {
return dt.HashValues
}
/////////////////////////////////////////Search//////////////////////////////////////////
type SearchTask struct {
HashValues []int32
internalPb.SearchRequest
}
func (st SearchTask) SetTs(ts TimeStamp) {
func (st SearchTask) SetTs(ts Timestamp) {
st.Timestamp = uint64(ts)
}
func (st SearchTask) Ts() TimeStamp {
return TimeStamp(st.Timestamp)
func (st SearchTask) BeginTs() Timestamp {
return Timestamp(st.Timestamp)
}
func (st SearchTask) EndTs() Timestamp {
return Timestamp(st.Timestamp)
}
func (st SearchTask) Type() MsgType {
if st.ReqType == internalPb.ReqType_kNone {
return kTimeTick
if st.ReqType == internalPb.ReqType_kTimeTick {
return kTimeSync
}
return kSearch
}
func (st SearchTask) HashKeys() []int32 {
return st.HashValues
}
/////////////////////////////////////////SearchResult//////////////////////////////////////////
type SearchResultTask struct {
HashValues []int32
internalPb.SearchResult
}
func (srt SearchResultTask) SetTs(ts TimeStamp) {
func (srt SearchResultTask) SetTs(ts Timestamp) {
srt.Timestamp = uint64(ts)
}
func (srt SearchResultTask) Ts() TimeStamp {
return TimeStamp(srt.Timestamp)
func (srt SearchResultTask) BeginTs() Timestamp {
return Timestamp(srt.Timestamp)
}
func (srt SearchResultTask) EndTs() Timestamp {
return Timestamp(srt.Timestamp)
}
func (srt SearchResultTask) Type() MsgType {
return kSearchResult
}
func (srt SearchResultTask) HashKeys() []int32 {
return srt.HashValues
}
/////////////////////////////////////////TimeSync//////////////////////////////////////////
type TimeSyncTask struct {
HashValues []int32
internalPb.TimeSyncMsg
}
func (tst TimeSyncTask) SetTs(ts TimeStamp) {
func (tst TimeSyncTask) SetTs(ts Timestamp) {
tst.Timestamp = uint64(ts)
}
func (tst TimeSyncTask) Ts() TimeStamp {
return TimeStamp(tst.Timestamp)
func (tst TimeSyncTask) BeginTs() Timestamp {
return Timestamp(tst.Timestamp)
}
func (tst TimeSyncTask) EndTs() Timestamp {
return Timestamp(tst.Timestamp)
}
func (tst TimeSyncTask) Type() MsgType {
return kTimeSync
}
func (tst TimeSyncTask) HashKeys() []int32 {
return tst.HashValues
}
///////////////////////////////////////////Key2Seg//////////////////////////////////////////
//type Key2SegTask struct {
// internalPb.Key2SegMsg
//}
//
////TODO::Key2SegMsg don't have timestamp
//func (k2st Key2SegTask) SetTs(ts TimeStamp) {}
//func (k2st Key2SegTask) SetTs(ts Timestamp) {}
//
//func (k2st Key2SegTask) Ts() TimeStamp {
// return TimeStamp(0)
//func (k2st Key2SegTask) Ts() Timestamp {
// return Timestamp(0)
//}
//
//func (k2st Key2SegTask) Type() MsgType {

View File

@ -167,7 +167,7 @@ message DeleteRequest {
string collection_name = 3;
int64 channel_id = 4;
int64 proxy_id = 5;
repeated uint64 timestamp = 6;
repeated uint64 timestamps = 6;
repeated int64 primary_keys = 7;
}

View File

@ -1051,7 +1051,7 @@ type DeleteRequest struct {
CollectionName string `protobuf:"bytes,3,opt,name=collection_name,json=collectionName,proto3" json:"collection_name,omitempty"`
ChannelId int64 `protobuf:"varint,4,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"`
ProxyId int64 `protobuf:"varint,5,opt,name=proxy_id,json=proxyId,proto3" json:"proxy_id,omitempty"`
Timestamp []uint64 `protobuf:"varint,6,rep,packed,name=timestamp,proto3" json:"timestamp,omitempty"`
Timestamps []uint64 `protobuf:"varint,6,rep,packed,name=timestamps,proto3" json:"timestamps,omitempty"`
PrimaryKeys []int64 `protobuf:"varint,7,rep,packed,name=primary_keys,json=primaryKeys,proto3" json:"primary_keys,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@ -1118,9 +1118,9 @@ func (m *DeleteRequest) GetProxyId() int64 {
return 0
}
func (m *DeleteRequest) GetTimestamp() []uint64 {
func (m *DeleteRequest) GetTimestamps() []uint64 {
if m != nil {
return m.Timestamp
return m.Timestamps
}
return nil
}
@ -1546,77 +1546,77 @@ func init() {
func init() { proto.RegisterFile("internal_msg.proto", fileDescriptor_7eb37f6b80b23116) }
var fileDescriptor_7eb37f6b80b23116 = []byte{
// 1150 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x4b, 0x6f, 0x23, 0x45,
0x10, 0xde, 0xf1, 0xdb, 0xe5, 0xd8, 0x99, 0x74, 0x62, 0xe2, 0x5d, 0x60, 0xd7, 0xcc, 0x22, 0x11,
0xad, 0x84, 0x23, 0xbc, 0x1c, 0xd8, 0xeb, 0xc6, 0x87, 0x98, 0x55, 0xa2, 0x68, 0x1c, 0x81, 0x84,
0x84, 0x46, 0xe3, 0x99, 0xc2, 0x6e, 0xcd, 0x33, 0xdd, 0xed, 0x04, 0xe7, 0xce, 0x1d, 0xc4, 0x91,
0x1b, 0x67, 0x0e, 0xfc, 0x0c, 0x5e, 0x77, 0xfe, 0x04, 0x08, 0x56, 0x02, 0xed, 0x15, 0x75, 0xcf,
0xf8, 0x31, 0xce, 0x83, 0x87, 0x58, 0x29, 0x52, 0x6e, 0x53, 0xd5, 0xd5, 0xdd, 0xf5, 0x7d, 0x55,
0x5d, 0xae, 0x32, 0x10, 0x1a, 0x0a, 0x64, 0xa1, 0xed, 0x5b, 0x01, 0x1f, 0x75, 0x62, 0x16, 0x89,
0x88, 0x34, 0x03, 0xea, 0x9f, 0x4e, 0x78, 0x22, 0x75, 0x66, 0x06, 0xf7, 0xd6, 0x9c, 0x28, 0x08,
0xa2, 0x30, 0x51, 0xdf, 0xdb, 0xe0, 0xc8, 0x4e, 0xa9, 0x83, 0x8b, 0x7d, 0x46, 0x0c, 0x70, 0xcc,
0x23, 0x13, 0x4f, 0x26, 0xc8, 0x05, 0xd9, 0x86, 0x72, 0x8c, 0xc8, 0x2c, 0xea, 0xb6, 0xb4, 0xb6,
0xb6, 0x93, 0x37, 0x4b, 0x52, 0xec, 0xbb, 0xe4, 0x31, 0x14, 0x58, 0xe4, 0x63, 0x2b, 0xd7, 0xd6,
0x76, 0x1a, 0xdd, 0x07, 0x9d, 0x4b, 0x6f, 0xeb, 0x1c, 0x21, 0x32, 0x33, 0xf2, 0xd1, 0x54, 0xc6,
0x64, 0x0b, 0x8a, 0x4e, 0x34, 0x09, 0x45, 0x2b, 0xdf, 0xd6, 0x76, 0xea, 0x66, 0x22, 0x18, 0xa7,
0x50, 0x53, 0x37, 0xf2, 0x38, 0x0a, 0x39, 0x92, 0xc7, 0x50, 0xe2, 0xc2, 0x16, 0x13, 0xae, 0x6e,
0xac, 0x75, 0x5f, 0xcd, 0x9e, 0x9d, 0xfa, 0x3f, 0x50, 0x26, 0x66, 0x6a, 0x4a, 0x5e, 0x83, 0xaa,
0xa0, 0x01, 0x72, 0x61, 0x07, 0xb1, 0xf2, 0xa9, 0x60, 0x2e, 0x14, 0x57, 0xdc, 0xfb, 0xb3, 0x06,
0xdb, 0x7b, 0x0c, 0x6d, 0x81, 0x7b, 0x91, 0xef, 0xa3, 0x23, 0x68, 0x14, 0xce, 0x70, 0x3f, 0x81,
0x0a, 0xc3, 0x13, 0x4b, 0x4c, 0x63, 0x54, 0x6e, 0x34, 0xba, 0xf7, 0xaf, 0x80, 0x68, 0xe2, 0xc9,
0xf1, 0x34, 0x46, 0xb3, 0xcc, 0x92, 0x0f, 0xd2, 0x84, 0x92, 0xdc, 0x4a, 0x5d, 0xe5, 0x47, 0xde,
0x2c, 0x32, 0x3c, 0xe9, 0xbb, 0x59, 0x0f, 0xf3, 0xab, 0x1e, 0xde, 0x85, 0x4a, 0xcc, 0xa2, 0x4f,
0xa7, 0x72, 0x5b, 0x41, 0x6d, 0x2b, 0x2b, 0xb9, 0xef, 0x92, 0x77, 0xa0, 0xc4, 0x9d, 0x31, 0x06,
0x76, 0xab, 0xa8, 0xf8, 0xb8, 0x7b, 0x29, 0x1f, 0x4f, 0xfd, 0x68, 0x68, 0xa6, 0x86, 0xc6, 0x73,
0x0d, 0x9a, 0x3d, 0x16, 0xc5, 0x37, 0x1a, 0xd7, 0x01, 0xac, 0x3b, 0x73, 0xff, 0xac, 0xd0, 0x0e,
0x30, 0x05, 0xf8, 0x66, 0xd6, 0xa3, 0x34, 0x45, 0x3b, 0x0b, 0x30, 0x87, 0x76, 0x80, 0x66, 0xc3,
0xc9, 0xc8, 0xc6, 0xef, 0x1a, 0x6c, 0xed, 0xdb, 0xfc, 0x36, 0x41, 0xfe, 0x53, 0x83, 0xbb, 0x3d,
0xe4, 0x0e, 0xa3, 0x43, 0xbc, 0x4d, 0xb8, 0xbf, 0xd6, 0xa0, 0x39, 0x18, 0x47, 0x67, 0x37, 0x19,
0xb3, 0xf1, 0x9b, 0x06, 0xaf, 0x24, 0xd5, 0xe5, 0xc8, 0x66, 0x82, 0xde, 0xd0, 0xc8, 0xbc, 0x0f,
0x8d, 0x78, 0xe6, 0xde, 0x72, 0x60, 0x1e, 0x5e, 0x1e, 0x98, 0x39, 0x14, 0x15, 0x97, 0x7a, 0xbc,
0x2c, 0x1a, 0xbf, 0x6a, 0xb0, 0x25, 0xab, 0xce, 0x6d, 0xc1, 0xfb, 0x8b, 0x06, 0x9b, 0xfb, 0x36,
0xbf, 0x2d, 0x70, 0x9f, 0x6b, 0xd0, 0x9a, 0x55, 0x9b, 0xdb, 0x82, 0x59, 0xfe, 0xa8, 0xc8, 0x4a,
0x73, 0x93, 0xf1, 0xfe, 0xcf, 0xc5, 0xf5, 0x45, 0x0e, 0xea, 0xfd, 0x90, 0x23, 0x13, 0x2f, 0x0f,
0xeb, 0x5b, 0x17, 0x5d, 0x96, 0x88, 0xab, 0xab, 0xce, 0x90, 0x87, 0xb0, 0x08, 0x88, 0x25, 0xec,
0x91, 0xc2, 0x5e, 0x35, 0xd7, 0xe6, 0xca, 0x63, 0x7b, 0x44, 0x5e, 0x07, 0xe0, 0x38, 0x0a, 0x30,
0x14, 0xf2, 0xa2, 0xa2, 0xba, 0xa8, 0x9a, 0x6a, 0xfa, 0xae, 0x5c, 0x76, 0xc6, 0x76, 0x18, 0xa2,
0x2f, 0x97, 0x4b, 0xc9, 0x72, 0xaa, 0xe9, 0xbb, 0x19, 0x66, 0xcb, 0x59, 0x66, 0xef, 0x03, 0xcc,
0x23, 0xc0, 0x5b, 0x95, 0x76, 0x7e, 0xa7, 0x60, 0x2e, 0x69, 0x64, 0x73, 0xcc, 0xa2, 0x33, 0x8b,
0xba, 0xbc, 0x55, 0x6d, 0xe7, 0x65, 0x73, 0xcc, 0xa2, 0xb3, 0xbe, 0xcb, 0xc9, 0xbb, 0x50, 0x91,
0x0b, 0xae, 0x2d, 0xec, 0x16, 0xb4, 0xf3, 0xd7, 0x37, 0x6d, 0xf2, 0x8c, 0x9e, 0x2d, 0x6c, 0xe3,
0xb3, 0x1c, 0xd4, 0x7b, 0xe8, 0xa3, 0xc0, 0x1b, 0xc0, 0x7c, 0x96, 0xb5, 0xc2, 0x75, 0xac, 0x15,
0xb3, 0xac, 0x65, 0x12, 0xb9, 0xa4, 0x48, 0x5b, 0x4a, 0xe4, 0x37, 0x60, 0x2d, 0x66, 0x34, 0xb0,
0xd9, 0xd4, 0xf2, 0x70, 0xca, 0x5b, 0x65, 0x45, 0x5c, 0x2d, 0xd5, 0x3d, 0xc3, 0x29, 0x37, 0x5e,
0x68, 0x50, 0x1f, 0xa0, 0xcd, 0x9c, 0xf1, 0xcb, 0xe3, 0x61, 0xd9, 0xff, 0xfc, 0x35, 0xfe, 0x17,
0x56, 0x1f, 0xe2, 0x23, 0xd8, 0x60, 0xc8, 0x27, 0xbe, 0xb0, 0x96, 0xe8, 0x49, 0x18, 0x58, 0x4f,
0x16, 0xf6, 0xe6, 0x24, 0xed, 0x42, 0xf1, 0x64, 0x82, 0x6c, 0xaa, 0x92, 0xee, 0xda, 0x1c, 0x48,
0xec, 0x8c, 0x2f, 0x73, 0xb0, 0x36, 0x43, 0x2e, 0x8f, 0xfa, 0x6f, 0xb3, 0xd0, 0xbf, 0x87, 0x6c,
0x40, 0x5d, 0x39, 0x60, 0x85, 0x91, 0x8b, 0x8b, 0x78, 0xd7, 0x94, 0xf2, 0x30, 0x72, 0x71, 0x95,
0x96, 0xe2, 0x3f, 0xa2, 0xa5, 0x74, 0x39, 0x2d, 0x1d, 0x28, 0x8c, 0xa9, 0x48, 0x42, 0x5f, 0xeb,
0xde, 0xbb, 0xbc, 0x4a, 0xed, 0x53, 0xc1, 0x4d, 0x65, 0x67, 0xf4, 0xa0, 0x76, 0x4c, 0x03, 0x1c,
0x4c, 0x43, 0xe7, 0x80, 0x8f, 0xae, 0x1e, 0x49, 0xaf, 0x9d, 0x01, 0x8d, 0xaf, 0x34, 0x28, 0x3f,
0xc3, 0x69, 0x77, 0x80, 0x23, 0xc5, 0x90, 0x7a, 0xb8, 0xe9, 0x09, 0x45, 0xf5, 0x6e, 0xc9, 0x03,
0xa8, 0x2d, 0xe5, 0x66, 0xca, 0x1e, 0x2c, 0x52, 0xf3, 0xef, 0x6b, 0x34, 0xe5, 0xd6, 0xa9, 0xed,
0xa7, 0x04, 0x56, 0xcc, 0x32, 0xe5, 0x1f, 0x48, 0x51, 0x9e, 0xbc, 0x28, 0x51, 0xbc, 0x55, 0x54,
0x49, 0x0f, 0xf3, 0x1a, 0xc5, 0x8d, 0x8f, 0x01, 0x52, 0xe7, 0x24, 0xc4, 0x45, 0x04, 0xb5, 0xe5,
0x08, 0xbe, 0x07, 0x65, 0x0f, 0xa7, 0x5d, 0x8e, 0xa3, 0x56, 0x4e, 0x71, 0x77, 0xd5, 0x2b, 0x48,
0x8f, 0x32, 0x67, 0xe6, 0x46, 0x08, 0x1b, 0x83, 0xe4, 0x32, 0x99, 0x2b, 0x94, 0x0b, 0xea, 0xf0,
0x95, 0xba, 0xa9, 0xad, 0xd6, 0xcd, 0x07, 0x50, 0x0b, 0x30, 0x88, 0xd8, 0xd4, 0xe2, 0xf4, 0x1c,
0x67, 0x6c, 0x24, 0xaa, 0x01, 0x3d, 0x47, 0x89, 0x37, 0x9c, 0x04, 0x16, 0x8b, 0xce, 0xf8, 0x2c,
0xa1, 0xc2, 0x49, 0x60, 0x46, 0x67, 0xfc, 0xd1, 0x37, 0x39, 0x28, 0xa7, 0x4f, 0x91, 0x54, 0xa1,
0xe8, 0x1d, 0x46, 0x21, 0xea, 0x77, 0x48, 0x13, 0x36, 0xbc, 0xd5, 0x89, 0x5b, 0x77, 0xc9, 0x26,
0xac, 0x7b, 0xd9, 0x71, 0x55, 0x47, 0x42, 0xa0, 0xe1, 0x65, 0xe6, 0x39, 0xfd, 0x13, 0xb2, 0x0d,
0x9b, 0xde, 0xc5, 0x81, 0x47, 0x1f, 0x91, 0x2d, 0xd0, 0xbd, 0xec, 0x44, 0xc0, 0xf5, 0x31, 0x69,
0x82, 0xee, 0xad, 0xb4, 0xe0, 0xfa, 0x77, 0x1a, 0xd9, 0x84, 0x86, 0x97, 0xe9, 0x53, 0xf5, 0xef,
0x35, 0x42, 0xa0, 0xee, 0x2d, 0x37, 0x73, 0xfa, 0x0f, 0x1a, 0xd9, 0x06, 0xe2, 0x5d, 0xe8, 0x78,
0xf4, 0x1f, 0x35, 0xb2, 0x05, 0xeb, 0x5e, 0xa6, 0x2d, 0xe0, 0xfa, 0x4f, 0x1a, 0x59, 0x83, 0xb2,
0x97, 0xfc, 0x72, 0xea, 0x9f, 0xe7, 0x95, 0x94, 0x54, 0x73, 0xfd, 0x8b, 0x44, 0x4a, 0x5e, 0xb6,
0xfe, 0x47, 0x9e, 0x34, 0xa0, 0xea, 0xc9, 0x94, 0x3e, 0xa6, 0x8e, 0xa7, 0x7f, 0x5b, 0x7d, 0xf4,
0x04, 0x2a, 0xb3, 0x7f, 0x4a, 0x08, 0x40, 0xe9, 0xc0, 0xe6, 0x02, 0x99, 0x7e, 0x47, 0x7e, 0x9b,
0x68, 0xbb, 0xc8, 0x74, 0x4d, 0x7e, 0x7f, 0xc8, 0xa8, 0xd4, 0xe7, 0x24, 0xa5, 0x47, 0xf2, 0xe9,
0xea, 0xf9, 0xa7, 0xbd, 0x8f, 0x9e, 0x8e, 0xa8, 0x18, 0x4f, 0x86, 0xb2, 0x18, 0xec, 0x9e, 0x53,
0xdf, 0xa7, 0xe7, 0x02, 0x9d, 0xf1, 0x6e, 0x92, 0x19, 0x6f, 0xbb, 0x94, 0x0b, 0x46, 0x87, 0x13,
0x81, 0xee, 0xee, 0x2c, 0x3f, 0x76, 0x55, 0xba, 0xcc, 0xc5, 0x78, 0x38, 0x2c, 0x29, 0xcd, 0xe3,
0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x88, 0x67, 0xba, 0x49, 0x12, 0x00, 0x00,
// 1147 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x58, 0x49, 0x6f, 0x23, 0x45,
0x14, 0x9e, 0xf6, 0xee, 0xe7, 0xd8, 0xe9, 0x54, 0x62, 0xe2, 0x19, 0x60, 0xc6, 0xf4, 0x20, 0x11,
0x8d, 0x84, 0x23, 0x3c, 0x1c, 0x98, 0xeb, 0xc4, 0x87, 0x98, 0x51, 0xa2, 0xa8, 0x1d, 0x81, 0x84,
0x84, 0x5a, 0xed, 0xee, 0x87, 0x5d, 0xea, 0x35, 0x55, 0xe5, 0x04, 0xe7, 0x0f, 0x70, 0x05, 0x71,
0xe4, 0xc6, 0x99, 0x03, 0x3f, 0x83, 0xed, 0xce, 0x9f, 0x00, 0xc1, 0x48, 0xa0, 0xb9, 0xa2, 0xaa,
0x6e, 0x2f, 0xed, 0x2c, 0x2c, 0x62, 0xa4, 0x48, 0xb9, 0xf5, 0x7b, 0xb5, 0xbd, 0xef, 0x7b, 0x8b,
0xdf, 0x33, 0x10, 0x1a, 0x0a, 0x64, 0xa1, 0xed, 0x5b, 0x01, 0x1f, 0x75, 0x62, 0x16, 0x89, 0x88,
0x34, 0x03, 0xea, 0x9f, 0x4e, 0x78, 0x22, 0x75, 0x66, 0x1b, 0xee, 0xad, 0x39, 0x51, 0x10, 0x44,
0x61, 0xa2, 0xbe, 0xb7, 0xc1, 0x91, 0x9d, 0x52, 0x07, 0x17, 0xe7, 0x8c, 0x18, 0xe0, 0x98, 0x47,
0x26, 0x9e, 0x4c, 0x90, 0x0b, 0xb2, 0x0d, 0xe5, 0x18, 0x91, 0x59, 0xd4, 0x6d, 0x69, 0x6d, 0x6d,
0x27, 0x6f, 0x96, 0xa4, 0xd8, 0x77, 0xc9, 0x63, 0x28, 0xb0, 0xc8, 0xc7, 0x56, 0xae, 0xad, 0xed,
0x34, 0xba, 0x0f, 0x3a, 0x97, 0xbe, 0xd6, 0x39, 0x42, 0x64, 0x66, 0xe4, 0xa3, 0xa9, 0x36, 0x93,
0x2d, 0x28, 0x3a, 0xd1, 0x24, 0x14, 0xad, 0x7c, 0x5b, 0xdb, 0xa9, 0x9b, 0x89, 0x60, 0x9c, 0x42,
0x4d, 0xbd, 0xc8, 0xe3, 0x28, 0xe4, 0x48, 0x1e, 0x43, 0x89, 0x0b, 0x5b, 0x4c, 0xb8, 0x7a, 0xb1,
0xd6, 0x7d, 0x35, 0x7b, 0x77, 0x6a, 0xff, 0x40, 0x6d, 0x31, 0xd3, 0xad, 0xe4, 0x35, 0xa8, 0x0a,
0x1a, 0x20, 0x17, 0x76, 0x10, 0x2b, 0x9b, 0x0a, 0xe6, 0x42, 0x71, 0xc5, 0xbb, 0x3f, 0x6b, 0xb0,
0xbd, 0xc7, 0xd0, 0x16, 0xb8, 0x17, 0xf9, 0x3e, 0x3a, 0x82, 0x46, 0xe1, 0x0c, 0xf7, 0x13, 0xa8,
0x30, 0x3c, 0xb1, 0xc4, 0x34, 0x46, 0x65, 0x46, 0xa3, 0x7b, 0xff, 0x0a, 0x88, 0x26, 0x9e, 0x1c,
0x4f, 0x63, 0x34, 0xcb, 0x2c, 0xf9, 0x20, 0x4d, 0x28, 0xc9, 0xa3, 0xd4, 0x55, 0x76, 0xe4, 0xcd,
0x22, 0xc3, 0x93, 0xbe, 0x9b, 0xb5, 0x30, 0xbf, 0x6a, 0xe1, 0x5d, 0xa8, 0xc4, 0x2c, 0xfa, 0x74,
0x2a, 0x8f, 0x15, 0xd4, 0xb1, 0xb2, 0x92, 0xfb, 0x2e, 0x79, 0x07, 0x4a, 0xdc, 0x19, 0x63, 0x60,
0xb7, 0x8a, 0x8a, 0x8f, 0xbb, 0x97, 0xf2, 0xf1, 0xd4, 0x8f, 0x86, 0x66, 0xba, 0xd1, 0x78, 0xae,
0x41, 0xb3, 0xc7, 0xa2, 0xf8, 0x46, 0xe3, 0x3a, 0x80, 0x75, 0x67, 0x6e, 0x9f, 0x15, 0xda, 0x01,
0xa6, 0x00, 0xdf, 0xcc, 0x5a, 0x94, 0x86, 0x68, 0x67, 0x01, 0xe6, 0xd0, 0x0e, 0xd0, 0x6c, 0x38,
0x19, 0xd9, 0xf8, 0x5d, 0x83, 0xad, 0x7d, 0x9b, 0xdf, 0x26, 0xc8, 0x7f, 0x6a, 0x70, 0xb7, 0x87,
0xdc, 0x61, 0x74, 0x88, 0xb7, 0x09, 0xf7, 0xd7, 0x1a, 0x34, 0x07, 0xe3, 0xe8, 0xec, 0x26, 0x63,
0x36, 0x7e, 0xd3, 0xe0, 0x95, 0xa4, 0xba, 0x1c, 0xd9, 0x4c, 0xd0, 0x1b, 0xea, 0x99, 0xf7, 0xa1,
0x11, 0xcf, 0xcc, 0x5b, 0x76, 0xcc, 0xc3, 0xcb, 0x1d, 0x33, 0x87, 0xa2, 0xfc, 0x52, 0x8f, 0x97,
0x45, 0xe3, 0x57, 0x0d, 0xb6, 0x64, 0xd5, 0xb9, 0x2d, 0x78, 0x7f, 0xd1, 0x60, 0x73, 0xdf, 0xe6,
0xb7, 0x05, 0xee, 0x73, 0x0d, 0x5a, 0xb3, 0x6a, 0x73, 0x5b, 0x30, 0xcb, 0x1f, 0x15, 0x59, 0x69,
0x6e, 0x32, 0xde, 0xff, 0xb9, 0xb8, 0xbe, 0xc8, 0x41, 0xbd, 0x1f, 0x72, 0x64, 0xe2, 0xe5, 0x61,
0x7d, 0xeb, 0xa2, 0xc9, 0x12, 0x71, 0x75, 0xd5, 0x18, 0xf2, 0x10, 0x16, 0x0e, 0xb1, 0x84, 0x3d,
0x52, 0xd8, 0xab, 0xe6, 0xda, 0x5c, 0x79, 0x6c, 0x8f, 0xc8, 0xeb, 0x00, 0x1c, 0x47, 0x01, 0x86,
0x42, 0x3e, 0x54, 0x54, 0x0f, 0x55, 0x53, 0x4d, 0xdf, 0x95, 0xcb, 0xce, 0xd8, 0x0e, 0x43, 0xf4,
0xe5, 0x72, 0x29, 0x59, 0x4e, 0x35, 0x7d, 0x37, 0xc3, 0x6c, 0x39, 0xcb, 0xec, 0x7d, 0x80, 0xb9,
0x07, 0x78, 0xab, 0xd2, 0xce, 0xef, 0x14, 0xcc, 0x25, 0x8d, 0x6c, 0x8e, 0x59, 0x74, 0x66, 0x51,
0x97, 0xb7, 0xaa, 0xed, 0xbc, 0x6c, 0x8e, 0x59, 0x74, 0xd6, 0x77, 0x39, 0x79, 0x17, 0x2a, 0x72,
0xc1, 0xb5, 0x85, 0xdd, 0x82, 0x76, 0xfe, 0xfa, 0xa6, 0x4d, 0xde, 0xd1, 0xb3, 0x85, 0x6d, 0x7c,
0x96, 0x83, 0x7a, 0x0f, 0x7d, 0x14, 0x78, 0x03, 0x98, 0xcf, 0xb2, 0x56, 0xb8, 0x8e, 0xb5, 0xe2,
0x75, 0xac, 0x95, 0x2e, 0xb0, 0xf6, 0x06, 0xac, 0xc5, 0x8c, 0x06, 0x36, 0x9b, 0x5a, 0x1e, 0x4e,
0x79, 0xab, 0xac, 0xa8, 0xab, 0xa5, 0xba, 0x67, 0x38, 0xe5, 0xc6, 0x0b, 0x0d, 0xea, 0x03, 0xb4,
0x99, 0x33, 0x7e, 0x79, 0x4c, 0x2c, 0x23, 0xc8, 0x67, 0x11, 0x64, 0x52, 0xb1, 0xb0, 0x9a, 0x8a,
0x8f, 0x60, 0x83, 0x21, 0x9f, 0xf8, 0xc2, 0x5a, 0x22, 0x28, 0xe1, 0x60, 0x3d, 0x59, 0xd8, 0x9b,
0xd3, 0xb4, 0x0b, 0xc5, 0x93, 0x09, 0xb2, 0xa9, 0x0a, 0xbb, 0x6b, 0xa3, 0x20, 0xd9, 0x67, 0x7c,
0x99, 0x83, 0xb5, 0x19, 0x72, 0x79, 0xd5, 0x7f, 0x9b, 0x86, 0xfe, 0x3d, 0x64, 0x03, 0xea, 0xca,
0x00, 0x2b, 0x8c, 0x5c, 0x5c, 0x78, 0xbc, 0xa6, 0x94, 0x87, 0x91, 0x8b, 0xab, 0xb4, 0x14, 0xff,
0x11, 0x2d, 0xa5, 0xcb, 0x69, 0xe9, 0x40, 0x61, 0x4c, 0x45, 0xe2, 0xfa, 0x5a, 0xf7, 0xde, 0xe5,
0x75, 0x6a, 0x9f, 0x0a, 0x6e, 0xaa, 0x7d, 0x46, 0x0f, 0x6a, 0xc7, 0x34, 0xc0, 0xc1, 0x34, 0x74,
0x0e, 0xf8, 0xe8, 0xea, 0xa1, 0xf4, 0xda, 0x29, 0xd0, 0xf8, 0x4a, 0x83, 0xf2, 0x33, 0x9c, 0x76,
0x07, 0x38, 0x52, 0x0c, 0xa9, 0xd4, 0x4d, 0x6f, 0x28, 0xaa, 0xcc, 0x25, 0x0f, 0xa0, 0xb6, 0x14,
0x9b, 0x29, 0x7b, 0xb0, 0x08, 0xcd, 0xbf, 0xaf, 0xd2, 0x94, 0x5b, 0xa7, 0xb6, 0x9f, 0x12, 0x58,
0x31, 0xcb, 0x94, 0x7f, 0x20, 0x45, 0x79, 0xf3, 0xa2, 0x48, 0xf1, 0x56, 0x51, 0x05, 0x3d, 0xcc,
0xab, 0x14, 0x37, 0x3e, 0x06, 0x48, 0x8d, 0x93, 0x10, 0x17, 0x1e, 0xd4, 0x96, 0x3d, 0xf8, 0x1e,
0x94, 0x3d, 0x9c, 0x76, 0x39, 0x8e, 0x5a, 0x39, 0xc5, 0xdd, 0x55, 0x59, 0x90, 0x5e, 0x65, 0xce,
0xb6, 0x1b, 0x21, 0x6c, 0x0c, 0x92, 0xc7, 0x64, 0xac, 0x50, 0x2e, 0xa8, 0xc3, 0x57, 0x2a, 0xa7,
0xb6, 0x5a, 0x39, 0x1f, 0x40, 0x2d, 0xc0, 0x20, 0x62, 0x53, 0x8b, 0xd3, 0x73, 0x9c, 0xb1, 0x91,
0xa8, 0x06, 0xf4, 0x1c, 0x25, 0xde, 0x70, 0x12, 0x58, 0x2c, 0x3a, 0xe3, 0xb3, 0x80, 0x0a, 0x27,
0x81, 0x19, 0x9d, 0xf1, 0x47, 0xdf, 0xe4, 0xa0, 0x9c, 0xa6, 0x22, 0xa9, 0x42, 0xd1, 0x3b, 0x8c,
0x42, 0xd4, 0xef, 0x90, 0x26, 0x6c, 0x78, 0xab, 0x33, 0xb7, 0xee, 0x92, 0x4d, 0x58, 0xf7, 0xb2,
0x03, 0xab, 0x8e, 0x84, 0x40, 0xc3, 0xcb, 0x4c, 0x74, 0xfa, 0x27, 0x64, 0x1b, 0x36, 0xbd, 0x8b,
0x23, 0x8f, 0x3e, 0x22, 0x5b, 0xa0, 0x7b, 0xd9, 0x99, 0x80, 0xeb, 0x63, 0xd2, 0x04, 0xdd, 0x5b,
0x69, 0xc2, 0xf5, 0xef, 0x34, 0xb2, 0x09, 0x0d, 0x2f, 0xd3, 0xa9, 0xea, 0xdf, 0x6b, 0x84, 0x40,
0xdd, 0x5b, 0x6e, 0xe7, 0xf4, 0x1f, 0x34, 0xb2, 0x0d, 0xc4, 0xbb, 0xd0, 0xf3, 0xe8, 0x3f, 0x6a,
0x64, 0x0b, 0xd6, 0xbd, 0x4c, 0x63, 0xc0, 0xf5, 0x9f, 0x34, 0xb2, 0x06, 0x65, 0x2f, 0xf9, 0xed,
0xd4, 0x3f, 0xcf, 0x2b, 0x29, 0xa9, 0xe7, 0xfa, 0x17, 0x89, 0x94, 0x64, 0xb6, 0xfe, 0x47, 0x9e,
0x34, 0xa0, 0xea, 0xc9, 0x90, 0x3e, 0xa6, 0x8e, 0xa7, 0x7f, 0x5b, 0x7d, 0xf4, 0x04, 0x2a, 0xb3,
0xff, 0x4a, 0x08, 0x40, 0xe9, 0xc0, 0xe6, 0x02, 0x99, 0x7e, 0x47, 0x7e, 0x9b, 0x68, 0xbb, 0xc8,
0x74, 0x4d, 0x7e, 0x7f, 0xc8, 0xa8, 0xd4, 0xe7, 0x24, 0xa5, 0x47, 0x32, 0x75, 0xf5, 0xfc, 0xd3,
0xde, 0x47, 0x4f, 0x47, 0x54, 0x8c, 0x27, 0x43, 0x59, 0x0c, 0x76, 0xcf, 0xa9, 0xef, 0xd3, 0x73,
0x81, 0xce, 0x78, 0x37, 0x89, 0x8c, 0xb7, 0x5d, 0xca, 0x05, 0xa3, 0xc3, 0x89, 0x40, 0x77, 0x77,
0x16, 0x1f, 0xbb, 0x2a, 0x5c, 0xe6, 0x62, 0x3c, 0x1c, 0x96, 0x94, 0xe6, 0xf1, 0x5f, 0x01, 0x00,
0x00, 0xff, 0xff, 0x7a, 0xb3, 0x5a, 0xe2, 0x4b, 0x12, 0x00, 0x00,
}

View File

@ -33,13 +33,29 @@ message RowBatch {
repeated int32 hash_keys = 4;
}
/**
* @brief Placeholder value types
*/
enum PlaceholderType {
NONE = 0;
VECTOR_BINARY = 100;
VECTOR_FLOAT = 101;
}
message VectorValues {
repeated common.Blob value = 1;
}
/**
* @brief Placeholder value in DSL
*/
* @brief Placeholder value in DSL
*/
message PlaceholderValue {
string tag = 1;
common.Blob value = 2;
PlaceholderType type = 2;
// value contains the serialized VectorValues
common.Blob value = 3;
}

View File

@ -22,6 +22,36 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
//*
// @brief Placeholder value types
type PlaceholderType int32
const (
PlaceholderType_NONE PlaceholderType = 0
PlaceholderType_VECTOR_BINARY PlaceholderType = 100
PlaceholderType_VECTOR_FLOAT PlaceholderType = 101
)
var PlaceholderType_name = map[int32]string{
0: "NONE",
100: "VECTOR_BINARY",
101: "VECTOR_FLOAT",
}
var PlaceholderType_value = map[string]int32{
"NONE": 0,
"VECTOR_BINARY": 100,
"VECTOR_FLOAT": 101,
}
func (x PlaceholderType) String() string {
return proto.EnumName(PlaceholderType_name, int32(x))
}
func (PlaceholderType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{0}
}
//*
// @brief Collection name
type CollectionName struct {
@ -177,11 +207,52 @@ func (m *RowBatch) GetHashKeys() []int32 {
return nil
}
type VectorValues struct {
Value []*commonpb.Blob `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *VectorValues) Reset() { *m = VectorValues{} }
func (m *VectorValues) String() string { return proto.CompactTextString(m) }
func (*VectorValues) ProtoMessage() {}
func (*VectorValues) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{3}
}
func (m *VectorValues) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VectorValues.Unmarshal(m, b)
}
func (m *VectorValues) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_VectorValues.Marshal(b, m, deterministic)
}
func (m *VectorValues) XXX_Merge(src proto.Message) {
xxx_messageInfo_VectorValues.Merge(m, src)
}
func (m *VectorValues) XXX_Size() int {
return xxx_messageInfo_VectorValues.Size(m)
}
func (m *VectorValues) XXX_DiscardUnknown() {
xxx_messageInfo_VectorValues.DiscardUnknown(m)
}
var xxx_messageInfo_VectorValues proto.InternalMessageInfo
func (m *VectorValues) GetValue() []*commonpb.Blob {
if m != nil {
return m.Value
}
return nil
}
//*
// @brief Placeholder value in DSL
type PlaceholderValue struct {
Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
Value *commonpb.Blob `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
Type PlaceholderType `protobuf:"varint,2,opt,name=type,proto3,enum=milvus.proto.service.PlaceholderType" json:"type,omitempty"`
// value contains the serialized VectorValues
Value *commonpb.Blob `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -191,7 +262,7 @@ func (m *PlaceholderValue) Reset() { *m = PlaceholderValue{} }
func (m *PlaceholderValue) String() string { return proto.CompactTextString(m) }
func (*PlaceholderValue) ProtoMessage() {}
func (*PlaceholderValue) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{3}
return fileDescriptor_b4b40b84dd2f74cb, []int{4}
}
func (m *PlaceholderValue) XXX_Unmarshal(b []byte) error {
@ -219,6 +290,13 @@ func (m *PlaceholderValue) GetTag() string {
return ""
}
func (m *PlaceholderValue) GetType() PlaceholderType {
if m != nil {
return m.Type
}
return PlaceholderType_NONE
}
func (m *PlaceholderValue) GetValue() *commonpb.Blob {
if m != nil {
return m.Value
@ -242,7 +320,7 @@ func (m *Query) Reset() { *m = Query{} }
func (m *Query) String() string { return proto.CompactTextString(m) }
func (*Query) ProtoMessage() {}
func (*Query) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{4}
return fileDescriptor_b4b40b84dd2f74cb, []int{5}
}
func (m *Query) XXX_Unmarshal(b []byte) error {
@ -305,7 +383,7 @@ func (m *StringResponse) Reset() { *m = StringResponse{} }
func (m *StringResponse) String() string { return proto.CompactTextString(m) }
func (*StringResponse) ProtoMessage() {}
func (*StringResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{5}
return fileDescriptor_b4b40b84dd2f74cb, []int{6}
}
func (m *StringResponse) XXX_Unmarshal(b []byte) error {
@ -354,7 +432,7 @@ func (m *BoolResponse) Reset() { *m = BoolResponse{} }
func (m *BoolResponse) String() string { return proto.CompactTextString(m) }
func (*BoolResponse) ProtoMessage() {}
func (*BoolResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{6}
return fileDescriptor_b4b40b84dd2f74cb, []int{7}
}
func (m *BoolResponse) XXX_Unmarshal(b []byte) error {
@ -403,7 +481,7 @@ func (m *StringListResponse) Reset() { *m = StringListResponse{} }
func (m *StringListResponse) String() string { return proto.CompactTextString(m) }
func (*StringListResponse) ProtoMessage() {}
func (*StringListResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{7}
return fileDescriptor_b4b40b84dd2f74cb, []int{8}
}
func (m *StringListResponse) XXX_Unmarshal(b []byte) error {
@ -452,7 +530,7 @@ func (m *IntegerListResponse) Reset() { *m = IntegerListResponse{} }
func (m *IntegerListResponse) String() string { return proto.CompactTextString(m) }
func (*IntegerListResponse) ProtoMessage() {}
func (*IntegerListResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{8}
return fileDescriptor_b4b40b84dd2f74cb, []int{9}
}
func (m *IntegerListResponse) XXX_Unmarshal(b []byte) error {
@ -502,7 +580,7 @@ func (m *IntegerRangeResponse) Reset() { *m = IntegerRangeResponse{} }
func (m *IntegerRangeResponse) String() string { return proto.CompactTextString(m) }
func (*IntegerRangeResponse) ProtoMessage() {}
func (*IntegerRangeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{9}
return fileDescriptor_b4b40b84dd2f74cb, []int{10}
}
func (m *IntegerRangeResponse) XXX_Unmarshal(b []byte) error {
@ -559,7 +637,7 @@ func (m *CollectionDescription) Reset() { *m = CollectionDescription{} }
func (m *CollectionDescription) String() string { return proto.CompactTextString(m) }
func (*CollectionDescription) ProtoMessage() {}
func (*CollectionDescription) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{10}
return fileDescriptor_b4b40b84dd2f74cb, []int{11}
}
func (m *CollectionDescription) XXX_Unmarshal(b []byte) error {
@ -616,7 +694,7 @@ func (m *PartitionDescription) Reset() { *m = PartitionDescription{} }
func (m *PartitionDescription) String() string { return proto.CompactTextString(m) }
func (*PartitionDescription) ProtoMessage() {}
func (*PartitionDescription) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{11}
return fileDescriptor_b4b40b84dd2f74cb, []int{12}
}
func (m *PartitionDescription) XXX_Unmarshal(b []byte) error {
@ -674,7 +752,7 @@ func (m *Score) Reset() { *m = Score{} }
func (m *Score) String() string { return proto.CompactTextString(m) }
func (*Score) ProtoMessage() {}
func (*Score) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{12}
return fileDescriptor_b4b40b84dd2f74cb, []int{13}
}
func (m *Score) XXX_Unmarshal(b []byte) error {
@ -724,7 +802,7 @@ func (m *Hits) Reset() { *m = Hits{} }
func (m *Hits) String() string { return proto.CompactTextString(m) }
func (*Hits) ProtoMessage() {}
func (*Hits) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{13}
return fileDescriptor_b4b40b84dd2f74cb, []int{14}
}
func (m *Hits) XXX_Unmarshal(b []byte) error {
@ -780,7 +858,7 @@ func (m *QueryResult) Reset() { *m = QueryResult{} }
func (m *QueryResult) String() string { return proto.CompactTextString(m) }
func (*QueryResult) ProtoMessage() {}
func (*QueryResult) Descriptor() ([]byte, []int) {
return fileDescriptor_b4b40b84dd2f74cb, []int{14}
return fileDescriptor_b4b40b84dd2f74cb, []int{15}
}
func (m *QueryResult) XXX_Unmarshal(b []byte) error {
@ -816,9 +894,11 @@ func (m *QueryResult) GetHits() []*Hits {
}
func init() {
proto.RegisterEnum("milvus.proto.service.PlaceholderType", PlaceholderType_name, PlaceholderType_value)
proto.RegisterType((*CollectionName)(nil), "milvus.proto.service.CollectionName")
proto.RegisterType((*PartitionName)(nil), "milvus.proto.service.PartitionName")
proto.RegisterType((*RowBatch)(nil), "milvus.proto.service.RowBatch")
proto.RegisterType((*VectorValues)(nil), "milvus.proto.service.VectorValues")
proto.RegisterType((*PlaceholderValue)(nil), "milvus.proto.service.PlaceholderValue")
proto.RegisterType((*Query)(nil), "milvus.proto.service.Query")
proto.RegisterType((*StringResponse)(nil), "milvus.proto.service.StringResponse")
@ -836,47 +916,53 @@ func init() {
func init() { proto.RegisterFile("service_msg.proto", fileDescriptor_b4b40b84dd2f74cb) }
var fileDescriptor_b4b40b84dd2f74cb = []byte{
// 665 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x6f, 0xd3, 0x3e,
0x18, 0x56, 0x9a, 0xb6, 0xbf, 0xf6, 0x6d, 0xd7, 0xdf, 0x08, 0x05, 0x95, 0xed, 0x52, 0x32, 0x0d,
0x7a, 0xa1, 0x15, 0x1b, 0x12, 0xe2, 0xc0, 0x61, 0xdd, 0x0e, 0xb0, 0x21, 0x34, 0x5c, 0x40, 0x02,
0x0e, 0x95, 0x93, 0x58, 0x89, 0x85, 0x13, 0x57, 0xb6, 0xb3, 0xa9, 0xbb, 0xf2, 0x71, 0x38, 0xf3,
0x19, 0xb8, 0xf1, 0x99, 0x90, 0x9d, 0x34, 0x6d, 0xa7, 0x80, 0xc6, 0xb6, 0x9b, 0xfd, 0xfa, 0xfd,
0xf3, 0x3c, 0x8f, 0x5e, 0x3f, 0x70, 0x47, 0x12, 0x71, 0x46, 0x7d, 0x32, 0x8d, 0x65, 0x38, 0x9c,
0x09, 0xae, 0xb8, 0xd3, 0x8d, 0x29, 0x3b, 0x4b, 0x65, 0x76, 0x1b, 0xe6, 0xef, 0x5b, 0x6d, 0x9f,
0xc7, 0x31, 0x4f, 0xb2, 0xe8, 0x56, 0x5b, 0xfa, 0x11, 0x89, 0x71, 0x76, 0x73, 0x5f, 0x40, 0xe7,
0x90, 0x33, 0x46, 0x7c, 0x45, 0x79, 0xf2, 0x16, 0xc7, 0xc4, 0x79, 0x0c, 0xff, 0xfb, 0x45, 0x64,
0x9a, 0xe0, 0x98, 0xf4, 0xac, 0xbe, 0x35, 0x68, 0xa2, 0x8e, 0xbf, 0x96, 0xe8, 0x1e, 0xc3, 0xc6,
0x29, 0x16, 0x8a, 0xfe, 0x73, 0xa5, 0xb3, 0x09, 0xb6, 0xc2, 0x61, 0xaf, 0x62, 0x1e, 0xf5, 0xd1,
0xfd, 0x6e, 0x41, 0x03, 0xf1, 0xf3, 0x31, 0x56, 0x7e, 0x74, 0xf5, 0x3e, 0x3b, 0xb0, 0x31, 0x5b,
0x20, 0x98, 0x2e, 0x3b, 0xb6, 0x8b, 0xe0, 0x7b, 0x1c, 0x3a, 0xcf, 0xa0, 0x21, 0xf8, 0xf9, 0x34,
0xc0, 0x0a, 0xf7, 0xec, 0xbe, 0x3d, 0x68, 0xed, 0x3d, 0x18, 0xae, 0xc9, 0x94, 0xab, 0x33, 0x66,
0xdc, 0x43, 0xff, 0x09, 0x7e, 0x7e, 0x84, 0x15, 0x76, 0xb6, 0xa1, 0x19, 0x61, 0x19, 0x4d, 0xbf,
0x92, 0xb9, 0xec, 0x55, 0xfb, 0xf6, 0xa0, 0x86, 0x1a, 0x3a, 0x70, 0x42, 0xe6, 0xd2, 0xfd, 0x00,
0x9b, 0xa7, 0x0c, 0xfb, 0x24, 0xe2, 0x2c, 0x20, 0xe2, 0x23, 0x66, 0x69, 0xc1, 0xc9, 0x2a, 0x38,
0x39, 0x23, 0xa8, 0x9d, 0xe9, 0x27, 0x83, 0xea, 0xaf, 0x53, 0xb3, 0x3c, 0xf7, 0x87, 0x05, 0xb5,
0x77, 0x29, 0x11, 0xf3, 0xab, 0x2b, 0xb0, 0x0b, 0x9d, 0x35, 0x05, 0x64, 0xaf, 0xd2, 0xb7, 0x07,
0x4d, 0xb4, 0xb1, 0x2a, 0x81, 0xd4, 0xe0, 0x02, 0xc9, 0x7a, 0x76, 0x06, 0x2e, 0x90, 0xcc, 0x39,
0x86, 0xf6, 0x6c, 0x49, 0x21, 0xa3, 0xd8, 0xda, 0x7b, 0x34, 0x2c, 0x5b, 0xa0, 0xe1, 0x65, 0xb2,
0x68, 0xad, 0xd6, 0xfd, 0x02, 0x9d, 0x89, 0x12, 0x34, 0x09, 0x11, 0x91, 0x33, 0x9e, 0x48, 0xe2,
0xec, 0x43, 0x5d, 0x2a, 0xac, 0x52, 0x69, 0x60, 0xb7, 0xf6, 0xb6, 0x4b, 0xb9, 0x4f, 0x4c, 0x0a,
0xca, 0x53, 0x9d, 0xee, 0xaa, 0x5e, 0xcd, 0x85, 0x28, 0x9f, 0xa0, 0x3d, 0xe6, 0x9c, 0xdd, 0x62,
0xeb, 0xc6, 0xa2, 0x35, 0x06, 0x27, 0xc3, 0xfd, 0x86, 0x4a, 0x75, 0xb3, 0x01, 0xf7, 0xa1, 0x6e,
0x7a, 0x2e, 0xf4, 0xcf, 0x6f, 0xae, 0x07, 0x77, 0x5f, 0x27, 0x8a, 0x84, 0x44, 0xdc, 0xf6, 0x0c,
0xbb, 0x98, 0x21, 0xa1, 0x9b, 0xcf, 0x40, 0x38, 0x09, 0xc9, 0x8d, 0x95, 0xf2, 0x48, 0x48, 0x13,
0xa3, 0x94, 0x8d, 0xb2, 0x8b, 0xde, 0x1f, 0x92, 0x04, 0x66, 0x7f, 0x6c, 0xa4, 0x8f, 0xee, 0x2f,
0x0b, 0xee, 0x2d, 0x8d, 0xe3, 0x88, 0x48, 0x5f, 0xd0, 0x99, 0x3e, 0x5e, 0x6f, 0xec, 0x4b, 0xa8,
0x67, 0xb6, 0x94, 0x7f, 0x96, 0xdd, 0x4b, 0x8b, 0x98, 0x59, 0xd6, 0x72, 0xe0, 0xc4, 0x04, 0x50,
0x5e, 0xe4, 0x1c, 0x00, 0xe8, 0x46, 0x54, 0x2a, 0xea, 0xcb, 0xfc, 0x97, 0x3f, 0x2c, 0x9d, 0x7b,
0x42, 0xe6, 0x66, 0x85, 0x4f, 0x31, 0x15, 0x68, 0xa5, 0xc8, 0xfd, 0x69, 0x41, 0xb7, 0xb0, 0xb3,
0x1b, 0xf3, 0x79, 0x0e, 0x55, 0xf3, 0x6b, 0x33, 0x36, 0x3b, 0x7f, 0xf8, 0x56, 0xab, 0xee, 0x89,
0x4c, 0xc1, 0x6d, 0x30, 0x79, 0x0a, 0xb5, 0x89, 0xcf, 0x45, 0x99, 0x25, 0xad, 0xaf, 0x50, 0xa5,
0x58, 0xa1, 0x6f, 0x16, 0x54, 0x5f, 0x51, 0x65, 0x8c, 0x82, 0x06, 0x9a, 0xa9, 0x5e, 0x30, 0x7d,
0x5c, 0xb3, 0xcf, 0xca, 0x95, 0xed, 0x53, 0x8b, 0xa6, 0x31, 0x2c, 0x28, 0x6c, 0x97, 0x2b, 0x60,
0x70, 0xa2, 0x3c, 0xd5, 0x15, 0xd0, 0x32, 0xf6, 0x87, 0x88, 0x4c, 0x99, 0xba, 0x9e, 0xf0, 0x43,
0xa8, 0x46, 0x54, 0xc9, 0x1c, 0xea, 0x56, 0xf9, 0x58, 0x4d, 0x15, 0x99, 0xbc, 0xf1, 0xe1, 0xe7,
0x83, 0x90, 0xaa, 0x28, 0xf5, 0x74, 0xbf, 0xd1, 0x05, 0x65, 0x8c, 0x5e, 0x28, 0xe2, 0x47, 0xa3,
0xac, 0xf0, 0x49, 0x40, 0xa5, 0x12, 0xd4, 0x4b, 0x15, 0x09, 0x46, 0x34, 0x51, 0x44, 0x24, 0x98,
0x8d, 0x4c, 0xb7, 0x51, 0xde, 0x6d, 0xe6, 0x79, 0x75, 0x13, 0xd8, 0xff, 0x1d, 0x00, 0x00, 0xff,
0xff, 0x49, 0xd7, 0x76, 0xe4, 0x92, 0x07, 0x00, 0x00,
// 753 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xdd, 0x6e, 0xd3, 0x4a,
0x10, 0x3e, 0x8e, 0x93, 0x9c, 0x64, 0xf2, 0xd3, 0xd4, 0x27, 0x07, 0x85, 0xf6, 0x26, 0xb8, 0x2a,
0x44, 0x48, 0x24, 0x22, 0x45, 0x42, 0xbd, 0x40, 0x90, 0xb4, 0x45, 0xf4, 0x47, 0x69, 0xd9, 0x44,
0x95, 0x0a, 0x17, 0xd1, 0xc6, 0x5e, 0xd9, 0x2b, 0x1c, 0xaf, 0xb5, 0xbb, 0x69, 0x95, 0xde, 0xf2,
0x02, 0xbc, 0x07, 0xd7, 0x3c, 0x03, 0x77, 0x3c, 0x13, 0xf2, 0xda, 0xf9, 0x83, 0xa0, 0x86, 0xb6,
0x77, 0xb3, 0x93, 0x99, 0xf9, 0xbe, 0xf9, 0x32, 0xfe, 0x60, 0x5d, 0x10, 0x7e, 0x49, 0x2d, 0xd2,
0x1f, 0x0a, 0xa7, 0x1e, 0x70, 0x26, 0x99, 0x51, 0x1e, 0x52, 0xef, 0x72, 0x24, 0xa2, 0x57, 0x3d,
0xfe, 0x7d, 0x23, 0x6f, 0xb1, 0xe1, 0x90, 0xf9, 0x51, 0x76, 0x23, 0x2f, 0x2c, 0x97, 0x0c, 0x71,
0xf4, 0x32, 0x77, 0xa1, 0xb8, 0xc7, 0x3c, 0x8f, 0x58, 0x92, 0x32, 0xbf, 0x83, 0x87, 0xc4, 0x78,
0x02, 0x6b, 0xd6, 0x34, 0xd3, 0xf7, 0xf1, 0x90, 0x54, 0xb4, 0xaa, 0x56, 0xcb, 0xa2, 0xa2, 0xb5,
0x50, 0x68, 0x1e, 0x41, 0xe1, 0x0c, 0x73, 0x49, 0xff, 0xba, 0xd3, 0x28, 0x81, 0x2e, 0xb1, 0x53,
0x49, 0xa8, 0x1f, 0xc3, 0xd0, 0xfc, 0xaa, 0x41, 0x06, 0xb1, 0xab, 0x36, 0x96, 0x96, 0xbb, 0xfa,
0x9c, 0x2d, 0x28, 0x04, 0x13, 0x06, 0xfd, 0xd9, 0xc4, 0xfc, 0x34, 0xd9, 0xc3, 0x8e, 0xf1, 0x02,
0x32, 0x9c, 0x5d, 0xf5, 0x6d, 0x2c, 0x71, 0x45, 0xaf, 0xea, 0xb5, 0x5c, 0xf3, 0x61, 0x7d, 0x41,
0xa6, 0x58, 0x9d, 0xb6, 0xc7, 0x06, 0xe8, 0x5f, 0xce, 0xae, 0xf6, 0xb1, 0xc4, 0xc6, 0x26, 0x64,
0x5d, 0x2c, 0xdc, 0xfe, 0x27, 0x32, 0x16, 0x95, 0x64, 0x55, 0xaf, 0xa5, 0x50, 0x26, 0x4c, 0x1c,
0x93, 0xb1, 0x30, 0x5f, 0x43, 0xfe, 0x9c, 0x58, 0x92, 0xf1, 0x73, 0xec, 0x8d, 0x88, 0x30, 0x1a,
0x90, 0xba, 0x0c, 0xa3, 0x8a, 0x76, 0xd3, 0xfc, 0xa8, 0xce, 0xfc, 0xa2, 0x41, 0xe9, 0xcc, 0xc3,
0x16, 0x71, 0x99, 0x67, 0x93, 0x68, 0xcc, 0x44, 0x15, 0x6d, 0xaa, 0x8a, 0xb1, 0x0b, 0x49, 0x39,
0x0e, 0x88, 0x5a, 0xab, 0xd8, 0xdc, 0xae, 0x2f, 0xfb, 0x77, 0xeb, 0x73, 0x73, 0x7a, 0xe3, 0x80,
0x20, 0xd5, 0x32, 0xa3, 0xa4, 0x57, 0xb5, 0x95, 0x28, 0x7d, 0xd3, 0x20, 0xf5, 0x7e, 0x44, 0xf8,
0x78, 0x75, 0xf9, 0xb7, 0xa1, 0xb8, 0x20, 0xbf, 0xa8, 0x24, 0xaa, 0x7a, 0x2d, 0x8b, 0x0a, 0xf3,
0xfa, 0x8b, 0x70, 0x2f, 0x5b, 0x78, 0x8a, 0x48, 0x16, 0x85, 0xa1, 0x71, 0x04, 0xf9, 0x60, 0xc6,
0x3a, 0xd2, 0x37, 0xd7, 0x7c, 0x7c, 0xe3, 0x7e, 0x4a, 0x27, 0xb4, 0xd0, 0x6b, 0x7e, 0x84, 0x62,
0x57, 0x72, 0xea, 0x3b, 0x88, 0x88, 0x80, 0xf9, 0x82, 0x18, 0x3b, 0x90, 0x16, 0x12, 0xcb, 0x91,
0x50, 0xb4, 0x73, 0xcd, 0xcd, 0xa5, 0xbb, 0x77, 0x55, 0x09, 0x8a, 0x4b, 0x8d, 0xf2, 0x44, 0xaf,
0xe8, 0x84, 0x62, 0x51, 0x2e, 0x20, 0xdf, 0x66, 0xcc, 0xbb, 0xc7, 0xd1, 0x99, 0xc9, 0x68, 0x0c,
0x46, 0xc4, 0xfb, 0x84, 0x0a, 0x79, 0x37, 0x80, 0x07, 0x90, 0x56, 0x33, 0x27, 0xfa, 0xc7, 0x2f,
0x73, 0x00, 0xff, 0x1d, 0xfa, 0x92, 0x38, 0x84, 0xdf, 0x37, 0x86, 0x3e, 0xc5, 0x10, 0x50, 0x8e,
0x31, 0x10, 0xf6, 0x1d, 0x72, 0x67, 0xa5, 0x06, 0xc4, 0xa1, 0xbe, 0x52, 0x4a, 0x47, 0xd1, 0x23,
0xbc, 0x1f, 0xe2, 0xdb, 0xea, 0x7e, 0x74, 0x14, 0x86, 0xe6, 0x0f, 0x0d, 0xfe, 0x9f, 0xb9, 0xd6,
0x3e, 0x11, 0x16, 0xa7, 0x41, 0x18, 0xde, 0x0e, 0xf6, 0x15, 0xa4, 0x23, 0x4f, 0x54, 0xb8, 0xb9,
0xdf, 0x3e, 0xb4, 0xc8, 0x2f, 0x67, 0x80, 0x5d, 0x95, 0x40, 0x71, 0x93, 0xd1, 0x02, 0x08, 0x07,
0x51, 0x21, 0xa9, 0x25, 0x62, 0x8b, 0x79, 0xb4, 0x14, 0xf7, 0x98, 0x8c, 0xd5, 0x09, 0x9f, 0x61,
0xca, 0xd1, 0x5c, 0x93, 0xf9, 0x5d, 0x83, 0xf2, 0xd4, 0x4b, 0xef, 0xbc, 0xcf, 0x4b, 0x48, 0xaa,
0xaf, 0x36, 0xda, 0x66, 0xeb, 0x0f, 0x9f, 0xd5, 0xbc, 0x75, 0x23, 0xd5, 0x70, 0x1f, 0x9b, 0x3c,
0x87, 0x54, 0xd7, 0x62, 0x7c, 0x99, 0x9b, 0x2d, 0x9e, 0x50, 0x62, 0x7a, 0x42, 0x9f, 0x35, 0x48,
0xbe, 0xa3, 0x52, 0x19, 0x05, 0xb5, 0x85, 0x32, 0x51, 0x1d, 0x85, 0xe1, 0x82, 0x77, 0x27, 0x56,
0xf6, 0xee, 0x50, 0xb4, 0x90, 0xc3, 0x64, 0x85, 0xcd, 0xe5, 0x0a, 0x28, 0x9e, 0x28, 0x2e, 0x35,
0x39, 0xe4, 0x94, 0xfd, 0x21, 0x22, 0x46, 0x9e, 0xbc, 0x9d, 0xf0, 0x75, 0x48, 0xba, 0x54, 0x8a,
0x98, 0xea, 0xc6, 0x72, 0xd8, 0x70, 0x55, 0xa4, 0xea, 0x9e, 0xbe, 0x81, 0xb5, 0x5f, 0xdc, 0xdb,
0xc8, 0x40, 0xb2, 0x73, 0xda, 0x39, 0x28, 0xfd, 0x63, 0xac, 0x43, 0xe1, 0xfc, 0x60, 0xaf, 0x77,
0x8a, 0xfa, 0xed, 0xc3, 0x4e, 0x0b, 0x5d, 0x94, 0x6c, 0xa3, 0x04, 0xf9, 0x38, 0xf5, 0xf6, 0xe4,
0xb4, 0xd5, 0x2b, 0x91, 0xf6, 0xde, 0x87, 0x96, 0x43, 0xa5, 0x3b, 0x1a, 0x84, 0x8c, 0x1a, 0xd7,
0xd4, 0xf3, 0xe8, 0xb5, 0x24, 0x96, 0xdb, 0x88, 0xa0, 0x9f, 0xd9, 0x54, 0x48, 0x4e, 0x07, 0x23,
0x49, 0xec, 0x06, 0xf5, 0x25, 0xe1, 0x3e, 0xf6, 0x1a, 0x8a, 0x4f, 0x23, 0xe6, 0x13, 0x0c, 0x06,
0x69, 0x95, 0xd8, 0xf9, 0x19, 0x00, 0x00, 0xff, 0xff, 0xce, 0x69, 0xc1, 0x30, 0x51, 0x08, 0x00,
0x00,
}