diff --git a/src/context/QueryContext.h b/src/context/QueryContext.h index 21f61dfd487f6c051442b4f17c148b7771de097b..a5cd1b5f56c20b1a9742ef86edd183ea46b0bb7d 100644 --- a/src/context/QueryContext.h +++ b/src/context/QueryContext.h @@ -125,6 +125,11 @@ public: return symTable_.get(); } + void setPartialSuccess() { + DCHECK(rctx_ != nullptr); + rctx_->resp().errorCode = ErrorCode::E_PARTIAL_SUCCEEDED; + } + private: void init(); diff --git a/src/executor/StorageAccessExecutor.h b/src/executor/StorageAccessExecutor.h index 687fdb46897f36c3c90b856e56f10415e3a647e1..5cd1ccd37c6bbfb24972822d28e2ac68ddc8c85a 100644 --- a/src/executor/StorageAccessExecutor.h +++ b/src/executor/StorageAccessExecutor.h @@ -7,8 +7,9 @@ #ifndef EXECUTOR_STORAGEACCESSEXECUTOR_H_ #define EXECUTOR_STORAGEACCESSEXECUTOR_H_ -#include "executor/Executor.h" #include "common/clients/storage/StorageClientBase.h" +#include "context/QueryContext.h" +#include "executor/Executor.h" namespace nebula { namespace graph { @@ -44,6 +45,7 @@ protected: return Status::Error("Request to storage failed, without failedCodes."); } // partial success is accepted + qctx()->setPartialSuccess(); return Result::State::kPartialSuccess; } return Result::State::kSuccess; diff --git a/src/service/GraphService.cpp b/src/service/GraphService.cpp index 99b93c388f718ad0def0ae390a0a7796bd8c8405..f1259de9bc8de8b5bcac6238fe48897f98575d8c 100644 --- a/src/service/GraphService.cpp +++ b/src/service/GraphService.cpp @@ -125,6 +125,8 @@ const char* GraphService::getErrorStr(ErrorCode result) { return "User not found"; case ErrorCode::E_TOO_MANY_CONNECTIONS: return "Too many connections"; + case ErrorCode::E_PARTIAL_SUCCEEDED: + return "Partial results"; } /********************** * Unknown error