From 125191557ccb9cdb1bb140cac91d27e0634f4a11 Mon Sep 17 00:00:00 2001 From: kun yu Date: Mon, 29 Jul 2019 10:58:07 +0800 Subject: [PATCH] add empty and dim check Former-commit-id: 319232d98f8c22d600ef31001a3798fff4dc18dc --- cpp/src/sdk/examples/grpcsimple/src/ClientTest.cpp | 7 ++++++- cpp/src/server/grpc_impl/RequestTask.cpp | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/cpp/src/sdk/examples/grpcsimple/src/ClientTest.cpp b/cpp/src/sdk/examples/grpcsimple/src/ClientTest.cpp index ca8feeef..b2fe7bcd 100644 --- a/cpp/src/sdk/examples/grpcsimple/src/ClientTest.cpp +++ b/cpp/src/sdk/examples/grpcsimple/src/ClientTest.cpp @@ -243,7 +243,12 @@ ClientTest::Test(const std::string& address, const std::string& port) { std::vector record_ids; auto start = std::chrono::high_resolution_clock::now(); - Status stat = conn->InsertVector(TABLE_NAME, record_array, record_ids); + + std::vector null_record; + RowRecord rowRecord; + rowRecord.data.resize(0); + null_record.push_back(rowRecord); + Status stat = conn->InsertVector(TABLE_NAME, null_record, record_ids); auto finish = std::chrono::high_resolution_clock::now(); std::cout << "InsertVector cost: " << std::chrono::duration_cast>(finish - start).count() << "s\n"; diff --git a/cpp/src/server/grpc_impl/RequestTask.cpp b/cpp/src/server/grpc_impl/RequestTask.cpp index 44a9495a..e0374d70 100644 --- a/cpp/src/server/grpc_impl/RequestTask.cpp +++ b/cpp/src/server/grpc_impl/RequestTask.cpp @@ -405,6 +405,16 @@ ServerError InsertVectorTask::OnExecute() { // TODO: change to one dimension array in protobuf or use multiple-thread to copy the data for (size_t i = 0; i < insert_infos_.row_record_array_size(); i++) { for (size_t j = 0; j < table_info.dimension_; j++) { + if (insert_infos_.row_record_array(i).vector_data().empty()) { + return SetError(SERVER_INVALID_ROWRECORD_ARRAY, "Row record float array is empty"); + } + uint64_t vec_dim = insert_infos_.row_record_array(i).vector_data().size(); + if (vec_dim != table_info.dimension_) { + ServerError error_code = SERVER_INVALID_VECTOR_DIMENSION; + std::string error_msg = "Invalid rowrecord dimension: " + std::to_string(vec_dim) + + " vs. table dimension:" + std::to_string(table_info.dimension_); + return SetError(error_code, error_msg); + } vec_f[i * table_info.dimension_ + j] = insert_infos_.row_record_array(i).vector_data(j); } } -- GitLab