Skip to content

Commit d00e126

Browse files
authored
Align CreateRoleRequest/CreateUserRequest/SearchResponse/QueryResponse (#529)
with other SDKs Signed-off-by: yhmo <yihua.mo@zilliz.com>
1 parent fca38f3 commit d00e126

21 files changed

Lines changed: 626 additions & 19 deletions

src/impl/MilvusClientV2Impl.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1627,6 +1627,8 @@ MilvusClientV2Impl::Search(const SearchRequest& request, SearchResponse& respons
16271627
}
16281628
auto status = ConvertSearchResults(rpc_response, pk_name, results);
16291629
response.SetResults(std::move(results));
1630+
response.SetSessionTs(rpc_response.session_ts());
1631+
FillSearchResponseExtraInfo(rpc_response.status(), response);
16301632
return status;
16311633
};
16321634

@@ -1730,6 +1732,8 @@ MilvusClientV2Impl::HybridSearch(const HybridSearchRequest& request, HybridSearc
17301732
}
17311733
auto status = ConvertSearchResults(rpc_response, pk_name, results);
17321734
response.SetResults(std::move(results));
1735+
response.SetSessionTs(rpc_response.session_ts());
1736+
FillSearchResponseExtraInfo(rpc_response.status(), response);
17331737
return status;
17341738
};
17351739

@@ -1748,6 +1752,7 @@ MilvusClientV2Impl::Query(const QueryRequest& request, QueryResponse& response)
17481752
QueryResults results;
17491753
auto status = ConvertQueryResults(rpc_response, results);
17501754
response.SetResults(std::move(results));
1755+
response.SetSessionTs(rpc_response.session_ts());
17511756
return status;
17521757
};
17531758

@@ -2677,6 +2682,7 @@ MilvusClientV2Impl::CreateUser(const CreateUserRequest& request) {
26772682
auto pre = [&request](proto::milvus::CreateCredentialRequest& rpc_request) {
26782683
rpc_request.set_username(request.UserName());
26792684
rpc_request.set_password(milvus::Base64Encode(request.Password()));
2685+
rpc_request.set_description(request.Description());
26802686
return Status::OK();
26812687
};
26822688

@@ -2767,6 +2773,7 @@ Status
27672773
MilvusClientV2Impl::CreateRole(const CreateRoleRequest& request) {
27682774
auto pre = [&request](proto::milvus::CreateRoleRequest& rpc_request) {
27692775
rpc_request.mutable_entity()->set_name(request.RoleName());
2776+
rpc_request.mutable_entity()->set_description(request.Description());
27702777
return Status::OK();
27712778
};
27722779

src/impl/request/rbac/CreateRoleRequest.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,23 @@ CreateRoleRequest::SetRoleName(const std::string& name) {
3030

3131
CreateRoleRequest&
3232
CreateRoleRequest::WithRoleName(const std::string& name) {
33-
role_name_ = name;
33+
SetRoleName(name);
34+
return *this;
35+
}
36+
37+
const std::string&
38+
CreateRoleRequest::Description() const {
39+
return description_;
40+
}
41+
42+
void
43+
CreateRoleRequest::SetDescription(const std::string& description) {
44+
description_ = description;
45+
}
46+
47+
CreateRoleRequest&
48+
CreateRoleRequest::WithDescription(const std::string& description) {
49+
SetDescription(description);
3450
return *this;
3551
}
3652

src/impl/request/rbac/CreateUserRequest.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,20 @@ CreateUserRequest::WithPassword(const std::string& password) {
5050
return *this;
5151
}
5252

53+
const std::string&
54+
CreateUserRequest::Description() const {
55+
return description_;
56+
}
57+
58+
void
59+
CreateUserRequest::SetDescription(const std::string& description) {
60+
description_ = description;
61+
}
62+
63+
CreateUserRequest&
64+
CreateUserRequest::WithDescription(const std::string& description) {
65+
SetDescription(description);
66+
return *this;
67+
}
68+
5369
} // namespace milvus

src/impl/response/dql/QueryResponse.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,14 @@ QueryResponse::SetResults(QueryResults&& results) {
3030
results_ = std::move(results);
3131
}
3232

33+
uint64_t
34+
QueryResponse::SessionTs() const {
35+
return session_ts_;
36+
}
37+
38+
void
39+
QueryResponse::SetSessionTs(uint64_t session_ts) {
40+
session_ts_ = session_ts;
41+
}
42+
3343
} // namespace milvus

src/impl/response/dql/SearchResponse.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,54 @@ SearchResponse::SetResults(SearchResults&& results) {
3030
results_ = std::move(results);
3131
}
3232

33+
uint64_t
34+
SearchResponse::SessionTs() const {
35+
return session_ts_;
36+
}
37+
38+
void
39+
SearchResponse::SetSessionTs(uint64_t session_ts) {
40+
session_ts_ = session_ts;
41+
}
42+
43+
int64_t
44+
SearchResponse::Cost() const {
45+
return cost_;
46+
}
47+
48+
void
49+
SearchResponse::SetCost(int64_t cost) {
50+
cost_ = cost;
51+
}
52+
53+
int64_t
54+
SearchResponse::ScannedRemoteBytes() const {
55+
return scanned_remote_bytes_;
56+
}
57+
58+
void
59+
SearchResponse::SetScannedRemoteBytes(int64_t scanned_remote_bytes) {
60+
scanned_remote_bytes_ = scanned_remote_bytes;
61+
}
62+
63+
int64_t
64+
SearchResponse::ScannedTotalBytes() const {
65+
return scanned_total_bytes_;
66+
}
67+
68+
void
69+
SearchResponse::SetScannedTotalBytes(int64_t scanned_total_bytes) {
70+
scanned_total_bytes_ = scanned_total_bytes;
71+
}
72+
73+
float
74+
SearchResponse::CacheHitRatio() const {
75+
return cache_hit_ratio_;
76+
}
77+
78+
void
79+
SearchResponse::SetCacheHitRatio(float cache_hit_ratio) {
80+
cache_hit_ratio_ = cache_hit_ratio;
81+
}
82+
3383
} // namespace milvus

src/impl/utils/DqlUtils.cpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,14 @@
1717
#include "DqlUtils.h"
1818

1919
#include <set>
20+
#include <string>
2021

2122
#include "./Constants.h"
2223
#include "./DmlUtils.h"
2324
#include "./GtsDict.h"
25+
#include "./MiscUtils.h"
2426
#include "./TypeUtils.h"
27+
#include "milvus/response/dql/SearchResponse.h"
2528
#include "milvus/types/Constants.h"
2629
#include "milvus/utils/FP16.h"
2730

@@ -61,6 +64,48 @@ SetSearchHighlighter(const T&, proto::milvus::SearchRequest&) {
6164

6265
} // namespace
6366

67+
void
68+
FillSearchResponseExtraInfo(const proto::common::Status& status, SearchResponse& response) {
69+
response.SetCost(-1);
70+
response.SetScannedRemoteBytes(-1);
71+
response.SetScannedTotalBytes(-1);
72+
response.SetCacheHitRatio(-1.0f);
73+
74+
const auto& extra_info = status.extra_info();
75+
76+
const auto cost_it = extra_info.find("report_value");
77+
if (cost_it != extra_info.end()) {
78+
try {
79+
response.SetCost(std::stoll(cost_it->second));
80+
} catch (...) {
81+
}
82+
}
83+
84+
const auto remote_bytes_it = extra_info.find("scanned_remote_bytes");
85+
if (remote_bytes_it != extra_info.end()) {
86+
try {
87+
response.SetScannedRemoteBytes(std::stoll(remote_bytes_it->second));
88+
} catch (...) {
89+
}
90+
}
91+
92+
const auto total_bytes_it = extra_info.find("scanned_total_bytes");
93+
if (total_bytes_it != extra_info.end()) {
94+
try {
95+
response.SetScannedTotalBytes(std::stoll(total_bytes_it->second));
96+
} catch (...) {
97+
}
98+
}
99+
100+
const auto cache_hit_ratio_it = extra_info.find("cache_hit_ratio");
101+
if (cache_hit_ratio_it != extra_info.end()) {
102+
float cache_hit_ratio = 0.0f;
103+
if (ParseFloatWithLocale(cache_hit_ratio_it->second, cache_hit_ratio, std::locale::classic())) {
104+
response.SetCacheHitRatio(cache_hit_ratio);
105+
}
106+
}
107+
}
108+
64109
SparseFloatVecFieldData::ElementT
65110
DecodeSparseFloatVector(const std::string& bytes) {
66111
if (bytes.size() % 8 != 0) {

src/impl/utils/DqlUtils.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
#include "schema.pb.h"
3434

3535
namespace milvus {
36+
class SearchResponse;
37+
3638
Status
3739
CreateMilvusFieldData(const proto::schema::FieldData& proto_data, size_t offset, size_t count,
3840
FieldDataPtr& field_data);
@@ -87,6 +89,9 @@ Status
8789
ConvertSearchResults(const proto::milvus::SearchResults& rpc_results, const std::string& pk_name,
8890
SearchResults& results);
8991

92+
void
93+
FillSearchResponseExtraInfo(const proto::common::Status& status, SearchResponse& response);
94+
9095
template <typename T>
9196
Status
9297
ConvertHybridSearchRequest(const T& request, const std::string& current_db,

src/impl/utils/MiscUtils.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
#include <cctype>
2020
#include <cmath>
2121
#include <limits>
22+
#include <locale>
23+
#include <sstream>
2224

2325
namespace {
2426

@@ -114,6 +116,14 @@ UpperWithoutSpaces(const std::string& value) {
114116
return result;
115117
}
116118

119+
bool
120+
ParseFloatWithLocale(const std::string& text, float& value, const std::locale& locale) {
121+
std::istringstream stream(text);
122+
stream.imbue(locale);
123+
stream >> std::noskipws >> value;
124+
return stream && stream.eof();
125+
}
126+
117127
Status
118128
ParseTargetSizeMB(const std::string& target_size, int64_t& target_size_mb, std::string& normalized) {
119129
target_size_mb = 0;

src/impl/utils/MiscUtils.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,8 @@ UpperWithoutSpaces(const std::string& value);
3232
Status
3333
ParseTargetSizeMB(const std::string& target_size, int64_t& target_size_mb, std::string& normalized);
3434

35+
// Protocol and other machine-readable float text should not depend on the process locale.
36+
bool
37+
ParseFloatWithLocale(const std::string& text, float& value, const std::locale& locale);
38+
3539
} // namespace milvus

src/include/milvus/request/rbac/CreateRoleRequest.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,27 @@ class MILVUS_SDK_API CreateRoleRequest {
5050
CreateRoleRequest&
5151
WithRoleName(const std::string& name);
5252

53+
/**
54+
* @brief Description of the role.
55+
*/
56+
const std::string&
57+
Description() const;
58+
59+
/**
60+
* @brief Set description of the role.
61+
*/
62+
void
63+
SetDescription(const std::string& description);
64+
65+
/**
66+
* @brief Set description of the role.
67+
*/
68+
CreateRoleRequest&
69+
WithDescription(const std::string& description);
70+
5371
protected:
5472
std::string role_name_;
73+
std::string description_;
5574
};
5675

5776
} // namespace milvus

0 commit comments

Comments
 (0)