From 60df37abac03c64cc5059b0836ad4b2f1b01b6d1 Mon Sep 17 00:00:00 2001 From: Sven Wang Date: Mon, 11 Jul 2022 11:14:09 +0800 Subject: [PATCH 1/2] fixed limit bugs Signed-off-by: Sven Wang --- .../test/unittest/device_kvstore_test.cpp | 1 + .../unittest/single_kvstore_client_test.cpp | 51 +++++++++++++++++++ .../common/src/query_expression.cpp | 2 +- 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/device_kvstore_test.cpp b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/device_kvstore_test.cpp index 973190501..2f5cc19c8 100644 --- a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/device_kvstore_test.cpp +++ b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/device_kvstore_test.cpp @@ -301,6 +301,7 @@ HWTEST_F(DeviceKvStoreTest, GetPrefixQueryEntriesAndResultSet, TestSize.Level1) DataQuery dataQuery; dataQuery.KeyPrefix(GetKey(prefix)); + dataQuery.Limit(10, 0); kvStore_->GetCount(dataQuery, sumGet); EXPECT_EQ(sumGet, sum) << "count is not equal 10."; diff --git a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_test.cpp b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_test.cpp index 1d21b432b..4232eef9d 100644 --- a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_test.cpp +++ b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_test.cpp @@ -255,6 +255,57 @@ HWTEST_F(SingleKvStoreClientTest, GetEntriesAndResultSet001, TestSize.Level1) EXPECT_EQ(closeResultSetStatus, Status::SUCCESS) << "close resultSet failed."; } +/** +* @tc.name: GetEntriesByDataQuery +* @tc.desc: Batch put values and get values. +* @tc.type: FUNC +* @tc.require: I5GFGR +* @tc.author: Sven Wang +*/ +HWTEST_F(SingleKvStoreClientTest, GetEntriesByDataQuery, TestSize.Level1) +{ + EXPECT_NE(singleKvStorePtr, nullptr) << "kvStorePtr is null."; + + // prepare 10 + size_t sum = 10; + int sum_1 = 10; + std::string prefix = "prefix_"; + for (size_t i = 0; i < sum; i++) { + singleKvStorePtr->Put({prefix + std::to_string(i)}, {std::to_string(i)}); + } + + std::vector results; + singleKvStorePtr->GetEntries({prefix}, results); + EXPECT_EQ(results.size(), sum) << "entries size is not equal 10."; + DataQuery dataQuery; + dataQuery.KeyPrefix(prefix); + dataQuery.Limit(10, 0); + std::shared_ptr resultSet; + Status status = singleKvStorePtr->GetResultSet(dataQuery, resultSet); + EXPECT_EQ(status, Status::SUCCESS); + EXPECT_EQ(resultSet->GetCount(), sum_1) << "resultSet size is not equal 10."; + resultSet->IsFirst(); + resultSet->IsAfterLast(); + resultSet->IsBeforeFirst(); + resultSet->MoveToPosition(1); + resultSet->IsLast(); + resultSet->MoveToPrevious(); + resultSet->MoveToNext(); + resultSet->MoveToLast(); + resultSet->MoveToFirst(); + resultSet->GetPosition(); + Entry entry; + resultSet->GetEntry(entry); + + for (size_t i = 0; i < sum; i++) { + singleKvStorePtr->Delete({prefix + std::to_string(i)}); + } + + auto closeResultSetStatus = singleKvStorePtr->CloseResultSet(resultSet); + EXPECT_EQ(closeResultSetStatus, Status::SUCCESS) << "close resultSet failed."; +} + + /** * @tc.name: GetEmptyEntries * @tc.desc: Batch get empty values. diff --git a/services/distributeddataservice/libs/distributeddb/common/src/query_expression.cpp b/services/distributeddataservice/libs/distributeddb/common/src/query_expression.cpp index 6de2914ea..3085a1e1e 100644 --- a/services/distributeddataservice/libs/distributeddb/common/src/query_expression.cpp +++ b/services/distributeddataservice/libs/distributeddb/common/src/query_expression.cpp @@ -184,7 +184,7 @@ void QueryExpression::Or() void QueryExpression::QueryByPrefixKey(const std::vector &key) { - queryInfo_.emplace_back(QueryObjNode{QueryObjType::QUERY_BY_KEY_PREFIX, std::string(), + queryInfo_.emplace_front(QueryObjNode{QueryObjType::QUERY_BY_KEY_PREFIX, std::string(), QueryValueType::VALUE_TYPE_NULL, std::vector()}); prefixKey_ = key; } -- Gitee From 8c4256712ba47b1f068e5298ba0e4a145530b373 Mon Sep 17 00:00:00 2001 From: Sven Wang Date: Mon, 11 Jul 2022 12:16:43 +0800 Subject: [PATCH 2/2] update Signed-off-by: Sven Wang --- .../test/unittest/single_kvstore_client_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_test.cpp b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_test.cpp index 4232eef9d..4badb313e 100644 --- a/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_test.cpp +++ b/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/single_kvstore_client_test.cpp @@ -275,7 +275,7 @@ HWTEST_F(SingleKvStoreClientTest, GetEntriesByDataQuery, TestSize.Level1) } std::vector results; - singleKvStorePtr->GetEntries({prefix}, results); + singleKvStorePtr->GetEntries({ prefix }, results); EXPECT_EQ(results.size(), sum) << "entries size is not equal 10."; DataQuery dataQuery; dataQuery.KeyPrefix(prefix); -- Gitee