From 5bea14ae153e7726bd76ad19d48d06645ea1c721 Mon Sep 17 00:00:00 2001 From: yangliu Date: Fri, 25 Jul 2025 15:10:16 +0800 Subject: [PATCH] update Signed-off-by: yangliu --- .../service/kvdb/kvdb_service_impl.cpp | 2 +- .../service/test/meta_data_test.cpp | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp index 7c628c8d4..6c2a9b7ab 100644 --- a/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp +++ b/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp @@ -788,7 +788,7 @@ Status KVDBServiceImpl::AfterCreate( StoreMetaMapping oldMeta(metaData); auto isCreated = MetaDataManager::GetInstance().LoadMeta(oldMeta.GetKey(), oldMeta, true); Status status = SUCCESS; - if (isCreated && oldMeta != metaData) { + if (isCreated && (oldMeta != metaData || oldMeta.schema != metaData.schema)) { auto dbStatus = Upgrade::GetInstance().UpdateStore(oldMeta, metaData, password); ZLOGI("update status:%{public}d appId:%{public}s storeId:%{public}s inst:%{public}d " "type:%{public}d->%{public}d dir:%{public}s dataType:%{public}d->%{public}d", diff --git a/services/distributeddataservice/service/test/meta_data_test.cpp b/services/distributeddataservice/service/test/meta_data_test.cpp index 714fd0b53..b03d715c9 100644 --- a/services/distributeddataservice/service/test/meta_data_test.cpp +++ b/services/distributeddataservice/service/test/meta_data_test.cpp @@ -164,5 +164,36 @@ HWTEST_F(MetaDataTest, MateDataChanged, TestSize.Level0) ASSERT_FALSE(metaData.isNeedCompress); ASSERT_TRUE(MetaDataManager::GetInstance().DelMeta(metaData_.GetKeyWithoutPath())); } + +/** +* @tc.name: SchemaChanged +* @tc.desc: schema data changed +* @tc.type: FUNC +* @tc.require: +* @tc.author: yl +*/ +HWTEST_F(MetaDataTest, SchemaChanged, TestSize.Level0) +{ + ZLOGI("SchemaChanged start"); + options_.schema = ""; + StoreMetaData metaData; + std::vector password {}; + auto status = kvdbServiceImpl_->AfterCreate(appId, storeId, options_, password); + ASSERT_EQ(status, Status::SUCCESS); + StoreMetaMapping meta(metaData_); + ASSERT_TRUE(MetaDataManager::GetInstance().DelMeta(meta.GetKey(), true)); + status = kvdbServiceImpl_->AfterCreate(appId, storeId, options_, password); + ASSERT_EQ(status, Status::SUCCESS); + + options_.schema = "schema_data"; + status = kvdbServiceImpl_->AfterCreate(appId, storeId, options_, password); + ASSERT_EQ(status, Status::SUCCESS); + meta = metaData_; + ASSERT_TRUE(MetaDataManager::GetInstance().DelMeta(meta.GetKey(), true)); + status = kvdbServiceImpl_->AfterCreate(appId, storeId, options_, password); + ASSERT_EQ(status, Status::SUCCESS); + ASSERT_TRUE(MetaDataManager::GetInstance().LoadMeta(meta.GetKey(), metaData, true)); + ASSERT_EQ(metaData.schema, "schema_data"); +} } // namespace DistributedDataTest } // namespace OHOS::Test -- Gitee