提交 78065d48 编写于 作者: K kun yu

Merge branch 'branch-0.3.1' into branch-0.4.0


Former-commit-id: 2d08c473e8771df45dc7de46d99d026466920fd9
......@@ -174,7 +174,7 @@ namespace {
std::vector<TopKQueryResult> topk_query_result_array;
{
TimeRecorder rc(phase_name);
Status stat = conn->SearchVector(TABLE_NAME, record_array, query_range_array, TOP_K, topk_query_result_array);
Status stat = conn->SearchVector("qqq", record_array, query_range_array, TOP_K, topk_query_result_array);
std::cout << "SearchVector function call status: " << stat.ToString() << std::endl;
}
......@@ -244,11 +244,7 @@ ClientTest::Test(const std::string& address, const std::string& port) {
auto start = std::chrono::high_resolution_clock::now();
std::vector<RowRecord> null_record;
RowRecord rowRecord;
rowRecord.data.resize(0);
null_record.push_back(rowRecord);
Status stat = conn->InsertVector(TABLE_NAME, null_record, record_ids);
Status stat = conn->InsertVector(TABLE_NAME, record_array, record_ids);
auto finish = std::chrono::high_resolution_clock::now();
std::cout << "InsertVector cost: " << std::chrono::duration_cast<std::chrono::duration<double>>(finish - start).count() << "s\n";
......
......@@ -115,7 +115,8 @@ GrpcClient::SearchVector(std::vector<::milvus::grpc::TopKQueryResult>& result_ar
::grpc::Status status = reader->Finish();
if (!status.ok()) {
std::cerr << "SearchVector rpc failed!\n";
std::cerr << "SearchVector rpc failed!" << std::endl;
std::cerr << status.error_message() << std::endl;
}
if (query_result.status().error_code() != grpc::SUCCESS) {
......@@ -131,7 +132,8 @@ GrpcClient::DescribeTable(::milvus::grpc::TableSchema& grpc_schema, const std::s
::grpc::Status status = stub_->DescribeTable(&context, grpc_tablename, &grpc_schema);
if (!status.ok()) {
std::cerr << "DescribeTable rpc failed!\n";
std::cerr << "DescribeTable rpc failed!" << std::endl;
std::cerr << status.error_message() << std::endl;
}
if (grpc_schema.table_name().status().error_code() != grpc::SUCCESS) {
......@@ -174,6 +176,7 @@ GrpcClient::ShowTables(std::vector<std::string> &table_array) {
if (!status.ok()) {
std::cerr << "ShowTables gRPC failed!" << std::endl;
std::cerr << status.error_message() << std::endl;
}
if (table_name.status().error_code() != grpc::SUCCESS) {
......
......@@ -59,16 +59,28 @@ RequestHandler::InsertVector(::grpc::ServerContext* context, const ::milvus::grp
RequestHandler::SearchVector(::grpc::ServerContext* context, const ::milvus::grpc::SearchVectorInfos* request, ::grpc::ServerWriter<::milvus::grpc::TopKQueryResult>* writer) {
std::vector<std::string> file_id_array;
BaseTaskPtr task_ptr = SearchVectorTask::Create(*request, file_id_array, *writer);
RequestScheduler::ExecTask(task_ptr, nullptr);
return ::grpc::Status::OK;
::milvus::grpc::Status grpc_status;
RequestScheduler::ExecTask(task_ptr, &grpc_status);
if (grpc_status.error_code() != SERVER_SUCCESS) {
::grpc::Status status(::grpc::INVALID_ARGUMENT, grpc_status.reason());
return status;
} else {
return ::grpc::Status::OK;
}
}
::grpc::Status
RequestHandler::SearchVectorInFiles(::grpc::ServerContext* context, const ::milvus::grpc::SearchVectorInFilesInfos* request, ::grpc::ServerWriter<::milvus::grpc::TopKQueryResult>* writer) {
std::vector<std::string> file_id_array;
BaseTaskPtr task_ptr = SearchVectorTask::Create(request->search_vector_infos(), file_id_array, *writer);
RequestScheduler::ExecTask(task_ptr, nullptr);
return ::grpc::Status::OK;
::milvus::grpc::Status grpc_status;
RequestScheduler::ExecTask(task_ptr, &grpc_status);
if (grpc_status.error_code() != SERVER_SUCCESS) {
::grpc::Status status(::grpc::INVALID_ARGUMENT, grpc_status.reason());
return status;
} else {
return ::grpc::Status::OK;
}
}
::grpc::Status
......@@ -96,8 +108,14 @@ RequestHandler::GetTableRowCount(::grpc::ServerContext* context, const ::milvus:
::grpc::Status
RequestHandler::ShowTables(::grpc::ServerContext* context, const ::milvus::grpc::Command* request, ::grpc::ServerWriter< ::milvus::grpc::TableName>* writer) {
BaseTaskPtr task_ptr = ShowTablesTask::Create(*writer);
RequestScheduler::ExecTask(task_ptr, nullptr);
return ::grpc::Status::OK;
::milvus::grpc::Status grpc_status;
RequestScheduler::ExecTask(task_ptr, &grpc_status);
if (grpc_status.error_code() != SERVER_SUCCESS) {
::grpc::Status status(::grpc::UNKNOWN, grpc_status.reason());
return status;
} else {
return ::grpc::Status::OK;
}
}
::grpc::Status
......
......@@ -486,7 +486,7 @@ ServerError SearchVectorTask::OnExecute() {
int top_k_ = search_vector_infos_.topk();
if(top_k_ <= 0) {
if(top_k_ <= 0 || top_k_ > 1024) {
return SetError(SERVER_INVALID_TOPK, "Invalid topk: " + std::to_string(
top_k_));
}
......@@ -535,6 +535,16 @@ ServerError SearchVectorTask::OnExecute() {
//TODO
for (size_t i = 0; i < record_array_size; i++) {
for (size_t j = 0; j < table_info.dimension_; j++) {
if (search_vector_infos_.query_record_array(i).vector_data().empty()) {
return SetError(SERVER_INVALID_ROWRECORD_ARRAY, "Query record float array is empty");
}
uint64_t query_vec_dim = search_vector_infos_.query_record_array(i).vector_data().size();
if (query_vec_dim != table_info.dimension_) {
ServerError error_code = SERVER_INVALID_VECTOR_DIMENSION;
std::string error_msg = "Invalid rowrecord dimension: " + std::to_string(query_vec_dim)
+ " vs. table dimension:" + std::to_string(table_info.dimension_);
return SetError(error_code, error_msg);
}
vec_f[i * table_info.dimension_ + j] = search_vector_infos_.query_record_array(i).vector_data(j);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册