From: Sangyoon Jang Date: Thu, 18 Jan 2024 09:23:23 +0000 (+0900) Subject: Fix setting certinfo X-Git-Tag: accepted/tizen/unified/20240129.163402~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=459a004eec55cb17d3b9b585095ac6cc136733fa;hp=4540fbe332a38456ae47e8614a58d2d04e8abf4d;p=platform%2Fcore%2Fappfw%2Fpkgmgr-info.git Fix setting certinfo package_count is no longer used. Use insert or replace statement for setting certinfo. Change-Id: Id3e37d61dbff1ecaa72f58581c7de91428c174da Signed-off-by: Sangyoon Jang --- diff --git a/parser/include/pkgmgr_parser_db_queries.h b/parser/include/pkgmgr_parser_db_queries.h index 649bd64..6b7762f 100644 --- a/parser/include/pkgmgr_parser_db_queries.h +++ b/parser/include/pkgmgr_parser_db_queries.h @@ -319,32 +319,6 @@ " dist2_im_cert INTEGER,\n" \ " dist2_signer_cert INTEGER)" -#define QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO \ - "CREATE TRIGGER IF NOT EXISTS update_cert_info\n" \ - "AFTER UPDATE ON package_cert_info\n" \ - "WHEN (NEW.package_count = 0)\n" \ - "BEGIN\n" \ - " DELETE FROM package_cert_info WHERE package=OLD.package;\n" \ - "END" - -#define QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO2 \ - "CREATE TRIGGER IF NOT EXISTS update_cert_info2\n" \ - "AFTER UPDATE ON package_cert_info\n" \ - "WHEN (NEW.package_count = OLD.package_count + 1)\n" \ - "BEGIN\n" \ - " UPDATE package_cert_index_info SET\n" \ - " cert_ref_count = cert_ref_count - 1\n" \ - " WHERE cert_id = OLD.author_root_cert\n" \ - " OR cert_id = OLD.author_im_cert\n" \ - " OR cert_id = OLD.author_signer_cert\n" \ - " OR cert_id = OLD.dist_root_cert\n" \ - " OR cert_id = OLD.dist_im_cert\n" \ - " OR cert_id = OLD.dist_signer_cert\n" \ - " OR cert_id = OLD.dist2_root_cert\n" \ - " OR cert_id = OLD.dist2_im_cert\n" \ - " OR cert_id = OLD.dist2_signer_cert;\n" \ - "END" - #define QUERY_CREATE_TRIGGER_DELETE_CERT_INFO \ "CREATE TRIGGER IF NOT EXISTS delete_cert_info\n" \ "AFTER DELETE ON package_cert_info\n" \ @@ -436,8 +410,6 @@ const char *PARSER_INIT_QUERIES[] = { const char *CERT_INIT_QUERIES[] = { QUERY_CREATE_TABLE_PACKAGE_CERT_INFO, QUERY_CREATE_TABLE_PACKAGE_CERT_INDEX_INFO, - QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO, - QUERY_CREATE_TRIGGER_UPDATE_CERT_INFO2, QUERY_CREATE_TRIGGER_DELETE_CERT_INFO, QUERY_CREATE_TRIGGER_UPDATE_CERT_INDEX_INFO, NULL diff --git a/src/server/certinfo_internal.cc b/src/server/certinfo_internal.cc index 833e126..0de80e1 100644 --- a/src/server/certinfo_internal.cc +++ b/src/server/certinfo_internal.cc @@ -147,11 +147,11 @@ int SaveCertIndex(const tizen_base::Database& db, int SaveCertInfo(const tizen_base::Database& db, std::string_view pkgid, char* cert_info[]) { auto q_insert = tizen_base::Database::Sql( - "INSERT INTO package_cert_info (package, package_count," + "INSERT OR REPLACE INTO package_cert_info (package," " author_root_cert, author_im_cert, author_signer_cert," " dist_root_cert, dist_im_cert, dist_signer_cert," " dist2_root_cert, dist2_im_cert, dist2_signer_cert) " - "VALUES(?, 1," + "VALUES(?," " (SELECT cert_id FROM package_cert_index_info" " WHERE cert_info=?)," " (SELECT cert_id FROM package_cert_index_info" @@ -175,19 +175,9 @@ int SaveCertInfo(const tizen_base::Database& db, for (int i = 0; i < MAX_CERT_TYPE; i++) q_insert.Bind(cert_info[i]); - int code = static_cast(db.Exec(q_insert)); - if (code == SQLITE_CONSTRAINT) { - auto q_update = tizen_base::Database::Sql( - "UPDATE package_cert_info " - "SET package_count = package_count + 1 " - "WHERE package=?") - .Bind(std::string(pkgid)); - auto r = db.Exec(q_update); - if (!r) { - _LOGE("error: %s", static_cast(r)); - return PMINFO_R_ERROR; - } - } else if (code != SQLITE_DONE) { + auto r = db.Exec(q_insert); + if (static_cast(r) != SQLITE_DONE) { + _LOGE("error: %s", static_cast(r)); return PMINFO_R_ERROR; } diff --git a/src/server/database/abstract_db_handler.cc b/src/server/database/abstract_db_handler.cc index e67aac7..e580d96 100644 --- a/src/server/database/abstract_db_handler.cc +++ b/src/server/database/abstract_db_handler.cc @@ -76,6 +76,7 @@ tizen_base::Database OpenWriteDb(uid_t uid, const std::string& path) { tizen_base::Database db(path.c_str(), SQLITE_OPEN_READWRITE, WriteDbBusyHandler); db.OneStepExec({ "PRAGMA foreign_keys=ON" }); + db.OneStepExec({ "PRAGMA recursive_triggers=ON" }); return db; } diff --git a/src/server/database/query_handler.cc b/src/server/database/query_handler.cc index 1d481e3..13a0e08 100644 --- a/src/server/database/query_handler.cc +++ b/src/server/database/query_handler.cc @@ -86,8 +86,7 @@ constexpr const char query_certinfo_compare_app_certinfo[] = "package_app_info WHERE app_id IN (?, ?)"; constexpr const char query_pkginfo_delete_certinfo[] = - "UPDATE package_cert_info SET " - "package_count = package_count - 1 WHERE package=?"; + "DELETE FROM package_cert_info WHERE package=?"; // For pkgmgr_parser constexpr const char query_insert_package_plugin_execution_info[] =