From b5fa6960ef4a51d3ade83d53bb1cd8aed9bf52b0 Mon Sep 17 00:00:00 2001 From: CismonX Date: Thu, 5 Jun 2025 08:27:59 +0800 Subject: [PATCH] backend_firefox: hide dangling keywords When a bookmark associated with a keyword is deleted, there may still be dangling references (e.g., tags) to the corresponding `moz_places` entry. By filtering out NULL titles, `bookmark_lookup()` and `bookmark_list()` now only give keywords associated with valid bookmarks. --- src/backend_firefox.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/backend_firefox.c b/src/backend_firefox.c index 5666d86..3e44516 100644 --- a/src/backend_firefox.c +++ b/src/backend_firefox.c @@ -2175,7 +2175,8 @@ bookmark_do_list ( "SELECT min(`b`.`id`), `k`.`id`, `k`.`keyword`" cols " " \ "FROM `moz_keywords` `k` " join \ "JOIN `moz_bookmarks` `b` ON `k`.`place_id` = `b`.`fk` " \ - "WHERE `k`.`id` >= ?2 GROUP BY `k`.`place_id` ORDER BY `k`.`id`" + "WHERE `k`.`id` >= ?2 AND `b`.`title` IS NOT NULL " \ + "GROUP BY `k`.`place_id` ORDER BY `k`.`id`" #define BOOKMARK_LIST_KEYWORD BOOKMARK_LIST_KEYWORD_(,) #define BOOKMARK_LIST_KEYWORD_EX \ BOOKMARK_LIST_KEYWORD_(", " BOOKMARK_LIST_EX_COLS_, \ @@ -2267,7 +2268,8 @@ bookmark_do_lookup ( #define PLACE_ID_BY_KEYWORD(val) \ "SELECT `place_id` FROM `moz_keywords` WHERE `keyword` = " val #define BOOKMARK_LOOKUP_PLACE_ID_(val) \ - BOOKMARK_LOOKUP_(, "`b`.`fk` = " val " ORDER BY `b`.`id` LIMIT 1") + BOOKMARK_LOOKUP_(, "`b`.`fk` = " val " AND `b`.`title` IS NOT NULL " \ + "ORDER BY `b`.`id` LIMIT 1") #define BOOKMARK_LOOKUP_KEYWORD_(val) \ BOOKMARK_LOOKUP_PLACE_ID_("(" PLACE_ID_BY_KEYWORD(val) ")") #define BOOKMARK_LOOKUP_KEYWORD BOOKMARK_LOOKUP_KEYWORD_("?2")