diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/include/doc_errno.h b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/include/doc_errno.h index 3189dccbb8d93dcbd8b1f848b23a8784682f98e7..274bc84148347b069bcf4b0ff3e0552420db7715 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/include/doc_errno.h +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/include/doc_errno.h @@ -39,6 +39,7 @@ constexpr int E_JSON_PATH_NOT_EXISTS = E_BASE + 41; constexpr int E_RESOURCE_BUSY = E_BASE + 50; constexpr int E_FAILED_MEMORY_ALLOCATE = E_BASE + 51; constexpr int E_INNER_ERROR = E_BASE + 52; +constexpr int E_INVALID_FILE_FORMAT = E_BASE + 53; int TransferDocErr(int err); } // namespace DocumentDB diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/src/doc_errno.cpp b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/src/doc_errno.cpp index 533c540439d5dd679db09670962c9fa0c1394ba4..46be82ab77d195b6c2a77565cfceecc49bc619ad 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/src/doc_errno.cpp +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/src/doc_errno.cpp @@ -77,6 +77,9 @@ int TransferDocErr(int err) case -E_INNER_ERROR: outErr = GRD_INNER_ERR; break; + case -E_INVALID_FILE_FORMAT: + outErr = GRD_INVALID_FILE_FORMAT; + break; default: outErr = GRD_INNER_ERR; break; diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/src/document_store_manager.cpp b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/src/document_store_manager.cpp index 42afc2fc51843a394c103610a412347d0a61bc70..138c86ab99caf2062b166fd4350508b56684b05e 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/src/document_store_manager.cpp +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/interface/src/document_store_manager.cpp @@ -69,7 +69,6 @@ int DocumentStoreManager::GetDocumentStore(const std::string &path, const std::s GLOGE("Check document db open flags failed."); return -E_INVALID_ARGS; } - if (!CheckDBCreate(flags, path)) { GLOGE("Open db failed, file no exists."); return -E_INVALID_ARGS; diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/oh_adapter/src/sqlite_utils.cpp b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/oh_adapter/src/sqlite_utils.cpp index 76f2f887bc876eda719fba1b594dd2f7a8f6c514..328c87ec42ef3118459ccb097def620b3aed027d 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/oh_adapter/src/sqlite_utils.cpp +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/src/oh_adapter/src/sqlite_utils.cpp @@ -38,6 +38,10 @@ int MapSqliteError(int errCode) case SQLITE_CANTOPEN: case SQLITE_READONLY: return -E_FILE_OPERATION; + case SQLITE_NOTADB: + return -E_INVALID_FILE_FORMAT; + case SQLITE_BUSY: + return -E_RESOURCE_BUSY; default: return -E_ERROR; } diff --git a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_api_test.cpp b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_api_test.cpp index 4671347bf242d312e43286b54b7bfd47354feeb8..ab4c1dfaa7856304b702e1bb01c61ceb2dac898d 100644 --- a/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_api_test.cpp +++ b/services/distributeddataservice/service/data_share/gaussdb_rd_simple/test/unittest/api/documentdb_api_test.cpp @@ -125,6 +125,27 @@ HWTEST_F(DocumentDBApiTest, OpenDBTest003, TestSize.Level0) EXPECT_EQ(status, GRD_OK); } +/** + * @tc.name: OpenDBTest004 + * @tc.desc: Test open document db while db is not db file + * @tc.type: FUNC + * @tc.require: + * @tc.author: zhuwentao + */ +HWTEST_F(DocumentDBApiTest, OpenDBTest004, TestSize.Level0) +{ + std::string path = "./test.txt"; + FILE *fp; + fp = fopen("./test.txt", "w"); + fwrite("hello", 5, 5, fp); + fclose(fp); + GRD_DB *db = nullptr; + int status = GRD_DBOpen(path.c_str(), nullptr, GRD_DB_OPEN_ONLY, &db); + EXPECT_EQ(status, GRD_INVALID_FILE_FORMAT); + + DocumentDBTestUtils::RemoveTestDbFiles(path); +} + /** * @tc.name: OpenDBPathTest001 * @tc.desc: Test open document db with NULL path