From 0d2ab91d01777282a91d55503f16036ecfd6128a Mon Sep 17 00:00:00 2001 From: gecheng Date: Sun, 4 May 2025 17:06:24 +0800 Subject: [PATCH] return errorcode Signed-off-by: gecheng --- .../distributeddataservice/framework/cloud/cloud_db.cpp | 8 ++++---- .../framework/include/cloud/cloud_db.h | 4 ++-- .../distributeddataservice/framework/test/cloud_test.cpp | 4 ++-- .../rust/extension/cloud_db_impl.cpp | 8 ++++++-- .../rust/extension/cloud_db_impl.h | 2 +- .../distributeddataservice/service/rdb/rdb_cloud.cpp | 9 +++++---- 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/services/distributeddataservice/framework/cloud/cloud_db.cpp b/services/distributeddataservice/framework/cloud/cloud_db.cpp index 863475888..3d916243e 100644 --- a/services/distributeddataservice/framework/cloud/cloud_db.cpp +++ b/services/distributeddataservice/framework/cloud/cloud_db.cpp @@ -40,14 +40,14 @@ int32_t CloudDB::BatchDelete(const std::string &table, VBuckets &extends) return E_NOT_SUPPORT; } -std::shared_ptr CloudDB::Query(const std::string &table, const VBucket &extend) +std::pair> CloudDB::Query(const std::string &table, const VBucket &extend) { - return nullptr; + return { E_NOT_SUPPORT, nullptr }; } -std::shared_ptr CloudDB::Query(GenQuery &query, const VBucket &extend) +std::pair> CloudDB::Query(GenQuery &query, const VBucket &extend) { - return nullptr; + return { E_NOT_SUPPORT, nullptr }; } int32_t CloudDB::PreSharing(const std::string &table, VBuckets &extend) diff --git a/services/distributeddataservice/framework/include/cloud/cloud_db.h b/services/distributeddataservice/framework/include/cloud/cloud_db.h index fcf7cfca5..589335632 100644 --- a/services/distributeddataservice/framework/include/cloud/cloud_db.h +++ b/services/distributeddataservice/framework/include/cloud/cloud_db.h @@ -40,9 +40,9 @@ public: virtual int32_t BatchDelete(const std::string &table, VBuckets &extends); - virtual std::shared_ptr Query(const std::string &table, const VBucket &extend); + virtual std::pair> Query(const std::string &table, const VBucket &extend); - virtual std::shared_ptr Query(GenQuery &query, const VBucket &extend); + virtual std::pair> Query(GenQuery &query, const VBucket &extend); virtual int32_t PreSharing(const std::string &table, VBuckets &extend); diff --git a/services/distributeddataservice/framework/test/cloud_test.cpp b/services/distributeddataservice/framework/test/cloud_test.cpp index 1940f95fc..5179ef017 100644 --- a/services/distributeddataservice/framework/test/cloud_test.cpp +++ b/services/distributeddataservice/framework/test/cloud_test.cpp @@ -502,9 +502,9 @@ HWTEST_F(ServicesCloudDBTest, CloudDB, TestSize.Level0) EXPECT_EQ(result1, GeneralError::E_NOT_SUPPORT); auto result2 = cloudDB.Query(table, extend); - EXPECT_EQ(result2, nullptr); + EXPECT_EQ(result2.second, nullptr); result2 = cloudDB.Query(query, extend); - EXPECT_EQ(result2, nullptr); + EXPECT_EQ(result2.second, nullptr); auto result3 = cloudDB.AliveTime(); EXPECT_EQ(result3, -1); diff --git a/services/distributeddataservice/rust/extension/cloud_db_impl.cpp b/services/distributeddataservice/rust/extension/cloud_db_impl.cpp index da137619b..3b042ba24 100644 --- a/services/distributeddataservice/rust/extension/cloud_db_impl.cpp +++ b/services/distributeddataservice/rust/extension/cloud_db_impl.cpp @@ -119,7 +119,7 @@ int32_t CloudDbImpl::BatchDelete(const std::string &table, DBVBuckets &extends) return ExtensionUtil::ConvertStatus(status); } -std::shared_ptr CloudDbImpl::Query(const std::string &table, const DBVBucket &extend) +std::pair> CloudDbImpl::Query(const std::string &table, const DBVBucket &extend) { std::string cursor; auto it = extend.find(DistributedData::SchemaMeta::CURSOR_FIELD); @@ -134,7 +134,11 @@ std::shared_ptr CloudDbImpl::Query(const std::string &table, const DBV }; OhCloudExtCloudDbData *cloudData = nullptr; auto status = OhCloudExtCloudDbBatchQuery(database_, &info, &cloudData); - return (status == ERRNO_SUCCESS && cloudData != nullptr) ? std::make_shared(cloudData) : nullptr; + if (status == ERRNO_SUCCESS && cloudData != nullptr) { + return std::make_pair(DBErr::E_OK, std::make_shared(cloudData)); + } + return status != ERRNO_SUCCESS ? std::make_pair(ExtensionUtil::ConvertStatus(status), nullptr) + : std::make_pair(DBErr::E_ERROR, nullptr); } int32_t CloudDbImpl::Lock() diff --git a/services/distributeddataservice/rust/extension/cloud_db_impl.h b/services/distributeddataservice/rust/extension/cloud_db_impl.h index 099bfaad0..5351ebbb9 100644 --- a/services/distributeddataservice/rust/extension/cloud_db_impl.h +++ b/services/distributeddataservice/rust/extension/cloud_db_impl.h @@ -36,7 +36,7 @@ public: int32_t BatchUpdate(const std::string &table, DBVBuckets &&values, DBVBuckets &extends) override; int32_t BatchUpdate(const std::string &table, DBVBuckets &&values, const DBVBuckets &extends) override; int32_t BatchDelete(const std::string &table, DBVBuckets &extends) override; - std::shared_ptr Query(const std::string &table, const DBVBucket &extend) override; + std::pair> Query(const std::string &table, const DBVBucket &extend) override; int32_t Lock() override; int32_t Heartbeat() override; int32_t Unlock() override; diff --git a/services/distributeddataservice/service/rdb/rdb_cloud.cpp b/services/distributeddataservice/service/rdb/rdb_cloud.cpp index 0a0726079..2043f3d02 100644 --- a/services/distributeddataservice/service/rdb/rdb_cloud.cpp +++ b/services/distributeddataservice/service/rdb/rdb_cloud.cpp @@ -76,17 +76,18 @@ DBStatus RdbCloud::Query(const std::string &tableName, DBVBucket &extend, std::v { auto [nodes, status] = ConvertQuery(extend); std::shared_ptr cursor = nullptr; + int32_t code = E_OK; if (status == GeneralError::E_OK && !nodes.empty()) { RdbQuery query; query.SetQueryNodes(tableName, std::move(nodes)); - cursor = cloudDB_->Query(query, ValueProxy::Convert(std::move(extend))); + std::tie(code, cursor) = cloudDB_->Query(query, ValueProxy::Convert(std::move(extend))); } else { - cursor = cloudDB_->Query(tableName, ValueProxy::Convert(std::move(extend))); + std::tie(code, cursor) = cloudDB_->Query(tableName, ValueProxy::Convert(std::move(extend))); } - if (cursor == nullptr) { + if (cursor == nullptr || code != E_OK) { ZLOGE("cursor is null, table:%{public}s, extend:%{public}zu", Anonymous::Change(tableName).c_str(), extend.size()); - return ConvertStatus(static_cast(E_ERROR)); + return ConvertStatus(static_cast(code != E_OK ? code : E_ERROR)); } int32_t count = cursor->GetCount(); data.reserve(count); -- Gitee