diff --git a/cpp/src/sdk/examples/simple/src/ClientTest.cpp b/cpp/src/sdk/examples/simple/src/ClientTest.cpp index 664be42126..713f58fc2f 100644 --- a/cpp/src/sdk/examples/simple/src/ClientTest.cpp +++ b/cpp/src/sdk/examples/simple/src/ClientTest.cpp @@ -40,9 +40,12 @@ namespace { BLOCK_SPLITER std::cout << "Returned result count: " << topk_query_result_array.size() << std::endl; - int32_t index = 1; + int32_t index = 0; for(auto& result : topk_query_result_array) { - std::cout << "No. " << std::to_string(index) << " vector top k search result:" << std::endl; + index++; + std::cout << "No." << std::to_string(index) << " vector top " + << std::to_string(result.query_result_arrays.size()) + << " search result:" << std::endl; for(auto& item : result.query_result_arrays) { std::cout << "\t" << std::to_string(item.id) << "\tscore:" << std::to_string(item.score); for(auto& attri : item.column_map) { @@ -158,6 +161,11 @@ ClientTest::Test(const std::string& address, const std::string& port) { ConnectParam param = { address, port }; conn->Connect(param); + {//get server version + std::string version = conn->ServerVersion(); + std::cout << "MegaSearch server version: " << version << std::endl; + } + { std::cout << "ShowTables" << std::endl; std::vector tables; @@ -196,6 +204,7 @@ ClientTest::Test(const std::string& address, const std::string& port) { } {//search vectors + std::cout << "Waiting data persist. Sleep 10 seconds ..." << std::endl; sleep(10); std::vector record_array; BuildVectors(500, 510, nullptr, &record_array); @@ -212,5 +221,13 @@ ClientTest::Test(const std::string& address, const std::string& port) { // std::cout << "Delete table result: " << stat.ToString() << std::endl; // } + {//server status + std::string status = conn->ServerStatus(); + std::cout << "Server status before disconnect: " << status << std::endl; + } Connection::Destroy(conn); + {//server status + std::string status = conn->ServerStatus(); + std::cout << "Server status after disconnect: " << status << std::endl; + } } \ No newline at end of file diff --git a/cpp/src/server/MegasearchHandler.cpp b/cpp/src/server/MegasearchHandler.cpp index 62a9153241..4e7c575606 100644 --- a/cpp/src/server/MegasearchHandler.cpp +++ b/cpp/src/server/MegasearchHandler.cpp @@ -32,14 +32,14 @@ MegasearchServiceHandler::DeleteTable(const std::string &table_name) { void MegasearchServiceHandler::CreateTablePartition(const thrift::CreateTablePartitionParam ¶m) { - // Your implementation goes here - printf("CreateTablePartition\n"); + BaseTaskPtr task_ptr = CreateTablePartitionTask::Create(param); + MegasearchScheduler::ExecTask(task_ptr); } void MegasearchServiceHandler::DeleteTablePartition(const thrift::DeleteTablePartitionParam ¶m) { - // Your implementation goes here - printf("DeleteTablePartition\n"); + BaseTaskPtr task_ptr = DeleteTablePartitionTask::Create(param); + MegasearchScheduler::ExecTask(task_ptr); } void @@ -73,9 +73,8 @@ MegasearchServiceHandler::ShowTables(std::vector &_return) { void MegasearchServiceHandler::Ping(std::string& _return, const std::string& cmd) { - if(cmd == "version") { - _return = "v1.2.0"; - } + BaseTaskPtr task_ptr = PingTask::Create(cmd, _return); + MegasearchScheduler::ExecTask(task_ptr); } } diff --git a/cpp/src/server/MegasearchTask.cpp b/cpp/src/server/MegasearchTask.cpp index b55ce174a4..a1df83bcb3 100644 --- a/cpp/src/server/MegasearchTask.cpp +++ b/cpp/src/server/MegasearchTask.cpp @@ -173,6 +173,44 @@ ServerError DeleteTableTask::OnExecute() { return SERVER_NOT_IMPLEMENT; } +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +CreateTablePartitionTask::CreateTablePartitionTask(const thrift::CreateTablePartitionParam ¶m) + : BaseTask(DDL_DML_TASK_GROUP), + param_(param) { + +} + +BaseTaskPtr CreateTablePartitionTask::Create(const thrift::CreateTablePartitionParam ¶m) { + return std::shared_ptr(new CreateTablePartitionTask(param)); +} + +ServerError CreateTablePartitionTask::OnExecute() { + error_code_ = SERVER_NOT_IMPLEMENT; + error_msg_ = "create table partition not implemented"; + SERVER_LOG_ERROR << error_msg_; + + return SERVER_NOT_IMPLEMENT; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +DeleteTablePartitionTask::DeleteTablePartitionTask(const thrift::DeleteTablePartitionParam ¶m) + : BaseTask(DDL_DML_TASK_GROUP), + param_(param) { + +} + +BaseTaskPtr DeleteTablePartitionTask::Create(const thrift::DeleteTablePartitionParam ¶m) { + return std::shared_ptr(new DeleteTablePartitionTask(param)); +} + +ServerError DeleteTablePartitionTask::OnExecute() { + error_code_ = SERVER_NOT_IMPLEMENT; + error_msg_ = "delete table partition not implemented"; + SERVER_LOG_ERROR << error_msg_; + + return SERVER_NOT_IMPLEMENT; +} + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ShowTablesTask::ShowTablesTask(std::vector& tables) : BaseTask(PING_TASK_GROUP), @@ -408,8 +446,8 @@ ServerError SearchVectorTask::OnExecute() { AttribMap attrib_map; AttributeSerializer::Decode(attrib_str, attrib_map); - for(auto& attri : record.selected_column_array) { - thrift_result.column_map[attri] = attrib_map[attri]; + for(auto& attribute : record.selected_column_array) { + thrift_result.column_map[attribute] = attrib_map[attribute]; } thrift_topk_result.query_result_arrays.emplace_back(thrift_result); @@ -429,6 +467,26 @@ ServerError SearchVectorTask::OnExecute() { return SERVER_SUCCESS; } +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +PingTask::PingTask(const std::string& cmd, std::string& result) + : BaseTask(PING_TASK_GROUP), + cmd_(cmd), + result_(result) { + +} + +BaseTaskPtr PingTask::Create(const std::string& cmd, std::string& result) { + return std::shared_ptr(new PingTask(cmd, result)); +} + +ServerError PingTask::OnExecute() { + if(cmd_ == "version") { + result_ = "v1.2.0";//currently hardcode + } + + return SERVER_SUCCESS; +} + } } } diff --git a/cpp/src/server/MegasearchTask.h b/cpp/src/server/MegasearchTask.h index b60351de64..af4178eb21 100644 --- a/cpp/src/server/MegasearchTask.h +++ b/cpp/src/server/MegasearchTask.h @@ -65,6 +65,36 @@ private: std::string table_name_; }; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +class CreateTablePartitionTask : public BaseTask { +public: + static BaseTaskPtr Create(const thrift::CreateTablePartitionParam ¶m); + +protected: + CreateTablePartitionTask(const thrift::CreateTablePartitionParam ¶m); + + ServerError OnExecute() override; + + +private: + const thrift::CreateTablePartitionParam ¶m_; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +class DeleteTablePartitionTask : public BaseTask { +public: + static BaseTaskPtr Create(const thrift::DeleteTablePartitionParam ¶m); + +protected: + DeleteTablePartitionTask(const thrift::DeleteTablePartitionParam ¶m); + + ServerError OnExecute() override; + + +private: + const thrift::DeleteTablePartitionParam ¶m_; +}; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// class ShowTablesTask : public BaseTask { public: @@ -122,6 +152,21 @@ private: std::vector& result_array_; }; +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +class PingTask : public BaseTask { +public: + static BaseTaskPtr Create(const std::string& cmd, std::string& result); + +protected: + PingTask(const std::string& cmd, std::string& result); + + ServerError OnExecute() override; + +private: + std::string cmd_; + std::string& result_; +}; + } } } \ No newline at end of file