diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/common/src/json_common.cpp b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/common/src/json_common.cpp index 1ffc62831da4ed00391caa0074a3216b4162a8cd..6382a49ad4d6e57c15b3ca9eb2811b0d201fffe8 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/common/src/json_common.cpp +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/common/src/json_common.cpp @@ -205,7 +205,8 @@ int JsonCommon::ParseNode(JsonObject &node, std::vector singlePath, tempParseName += priFieldName[j]; } if (priFieldName[j] == '.' || j == priFieldName.size() - 1) { - if (j > 0 && priFieldName[j] == '.' && priFieldName[j - 1] == '.') { + if ((j > 0 && priFieldName[j] == '.' && priFieldName[j - 1] == '.') || + (priFieldName[j] == '.' && j == priFieldName.size() - 1)) { return -E_INVALID_ARGS; } allFiledsName.emplace_back(tempParseName); @@ -625,7 +626,7 @@ bool JsonCommon::JsonEqualJudge(JsonFieldPath &itemPath, const JsonObject &src, isMatchFlag = isEqual; } isAlreadyMatched = isMatchFlag; - return false; // Both leaf node, no need iterate + return false; // Both leaf node, no need iterate } else if (srcItem.GetType() != item.GetType()) { if (srcItem.GetType() == JsonObject::Type::JSON_ARRAY) { // srcItem Type is ARRAY, item Type is not ARRAY bool isEqual = IsArrayMatch(srcItem, item, isAlreadyMatched); @@ -637,7 +638,7 @@ bool JsonCommon::JsonEqualJudge(JsonFieldPath &itemPath, const JsonObject &src, isMatchFlag = false; return false; // Different node types, overwrite directly, skip child node } - return true; // Both array or object + return true; // Both array or object } bool JsonCommon::IsJsonNodeMatch(const JsonObject &src, const JsonObject &target, int &errCode) diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_data_test.cpp b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_data_test.cpp index 87061275866c369688707735b8d6b4155d12f06a..faa10174431cf5db058bb3b64c9217a6eb8ec32f 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_data_test.cpp +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_data_test.cpp @@ -351,4 +351,10 @@ HWTEST_F(DocumentDBDataTest, UpdateDataTest013, TestSize.Level0) int result = GRD_UpdateDoc(g_db, "GM_Sys", R""({})"", R""({})"", 0); EXPECT_EQ(result, GRD_INVALID_FORMAT); } + +HWTEST_F(DocumentDBDataTest, UpdateDataTest014, TestSize.Level0) +{ + int result = GRD_UpdateDoc(g_db, g_coll, R""({"abc.":1})"", R""({})"", 0); + EXPECT_EQ(result, GRD_INVALID_ARGS); +} } // namespace 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 c1995432459de98356ca08c93f54f674ca7bd38c..05efa28edd17f0afb011897b9a5aac3d8b180e41 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 @@ -1561,4 +1561,13 @@ HWTEST_F(DocumentFindApiTest, DocumentFindApiTest061, TestSize.Level1) EXPECT_EQ(GRD_FreeValue(value), GRD_OK); EXPECT_EQ(GRD_FreeResultSet(resultSet), GRD_OK); } -} // namespace \ No newline at end of file + +HWTEST_F(DocumentFindApiTest, DocumentFindApiTest062, TestSize.Level1) +{ + const char *filter = R"({"abc123_.":1})"; + GRD_ResultSet *resultSet = nullptr; + const char *projection = R"({"abc123_":1})"; + Query query = { filter, projection }; + EXPECT_EQ(GRD_FindDoc(g_db, COLLECTION_NAME, query, 1, &resultSet), GRD_INVALID_ARGS); +} +} // namespace diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_insert_test.cpp b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_insert_test.cpp index 957d29062d8809de60762fc6b403bc488c95573a..91cb510c126334a7272d21e9fa3e2be55c274a97 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_insert_test.cpp +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_insert_test.cpp @@ -812,4 +812,10 @@ HWTEST_F(DocumentInsertApiTest, DocumentInsertApiTest044, TestSize.Level1) EXPECT_EQ(GRD_InsertDoc(g_db, RIGHT_COLLECTION_NAME, document1, 0), GRD_OK); EXPECT_EQ(GRD_InsertDoc(g_db, RIGHT_COLLECTION_NAME, document2, 0), GRD_DATA_CONFLICT); } -} // namespace \ No newline at end of file + +HWTEST_F(DocumentInsertApiTest, DocumentInsertApiTest045, TestSize.Level1) +{ + const char *document1 = R""({"_id":"0123", "num.":"num"})""; + EXPECT_EQ(GRD_InsertDoc(g_db, RIGHT_COLLECTION_NAME, document1, 0), GRD_INVALID_ARGS); +} +} // namespace