From 146b98bc3605190b0b47aad0e0907f378936049b Mon Sep 17 00:00:00 2001 From: Jeremyzz Date: Tue, 9 May 2023 20:56:53 +0800 Subject: [PATCH] Modify the order of GetNext Signed-off-by: Jeremyzz --- .../src/sqlite_store_executor_impl.cpp | 2 +- .../unittest/api/documentdb_find_test.cpp | 41 ++++++++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/oh_adapter/src/sqlite_store_executor_impl.cpp b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/oh_adapter/src/sqlite_store_executor_impl.cpp index a296965a..67d569e2 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/oh_adapter/src/sqlite_store_executor_impl.cpp +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/oh_adapter/src/sqlite_store_executor_impl.cpp @@ -163,7 +163,7 @@ int SqliteStoreExecutor::GetFilededData(const std::string &collName, const JsonO Value valueResult; bool isFindMatch = false; int innerErrorCode = -E_NOT_FOUND; - std::string sql = "SELECT key, value FROM '" + collName + "';"; + std::string sql = "SELECT key, value FROM '" + collName + "'ORDER BY KEY;"; int errCode = SQLiteUtils::ExecSql( dbHandle_, sql, [](sqlite3_stmt *stmt) { diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_find_test.cpp b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_find_test.cpp index 807cc4bf..b915991e 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_find_test.cpp +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_find_test.cpp @@ -1481,7 +1481,7 @@ HWTEST_F(DocumentFindApiTest, DocumentFindApiTest056, TestSize.Level1) EXPECT_EQ(GRD_Next(resultSet), GRD_OK); char *value = NULL; EXPECT_EQ(GRD_GetValue(resultSet, &value), GRD_OK); - CompareValue(value, g_document6); + CompareValue(value, g_document5); EXPECT_EQ(GRD_FreeValue(value), GRD_OK); /** * @tc.steps: step2. Invoke GRD_Next to get the next matching value. Release resultSet. @@ -1543,3 +1543,42 @@ HWTEST_F(DocumentFindApiTest, DocumentFindApiTest059, TestSize.Level1) Query query = { filter, projection }; EXPECT_EQ(GRD_FindDoc(g_db, COLLECTION_NAME, query, 1, &resultSet), GRD_INVALID_FORMAT); } + +HWTEST_F(DocumentFindApiTest, DocumentFindApiTest060, TestSize.Level1) +{ + /** + * @tc.steps: step1. Create filter with _id and get the record according to filter condition. + * @tc.expected: step1. Succeed to get the record, the matching record is g_document6. + */ + const char *document064 = "{\"_id\" : \"64\", \"a\":1, \"doc64\" : 2}"; + const char *document063 = "{\"_id\" : \"63\", \"a\":1, \"doc63\" : 2}"; + const char *document062 = "{\"_id\" : \"62\", \"a\":1, \"doc62\" : 2}"; + const char *document061 = "{\"_id\" : \"61\", \"a\":1, \"doc61\" : 2}"; + EXPECT_EQ(GRD_InsertDoc(g_db, COLLECTION_NAME, document064, 0), GRD_OK); + EXPECT_EQ(GRD_InsertDoc(g_db, COLLECTION_NAME, document063, 0), GRD_OK); + EXPECT_EQ(GRD_InsertDoc(g_db, COLLECTION_NAME, document062, 0), GRD_OK); + EXPECT_EQ(GRD_InsertDoc(g_db, COLLECTION_NAME, document061, 0), GRD_OK); + const char *filter = "{\"a\":1}"; + GRD_ResultSet *resultSet = nullptr; + const char *projection = R"({})"; + Query query = { filter, projection }; + EXPECT_EQ(GRD_FindDoc(g_db, COLLECTION_NAME, query, 1, &resultSet), GRD_OK); + EXPECT_EQ(GRD_Next(resultSet), GRD_OK); + char *value = NULL; + EXPECT_EQ(GRD_GetValue(resultSet, &value), GRD_OK); + CompareValue(value, document061); + + EXPECT_EQ(GRD_Next(resultSet), GRD_OK); + EXPECT_EQ(GRD_GetValue(resultSet, &value), GRD_OK); + CompareValue(value, document062); + + EXPECT_EQ(GRD_Next(resultSet), GRD_OK); + EXPECT_EQ(GRD_GetValue(resultSet, &value), GRD_OK); + CompareValue(value, document063); + + EXPECT_EQ(GRD_Next(resultSet), GRD_OK); + EXPECT_EQ(GRD_GetValue(resultSet, &value), GRD_OK); + CompareValue(value, document064); + EXPECT_EQ(GRD_FreeValue(value), GRD_OK); + EXPECT_EQ(GRD_FreeResultSet(resultSet), GRD_OK); +} \ No newline at end of file -- Gitee