Procházet zdrojové kódy

enhance: disable deleting addrs until ref-counted delete

Tienson Qin před 6 měsíci
rodič
revize
6051be610f
1 změnil soubory, kde provedl 21 přidání a 35 odebrání
  1. 21 35
      src/main/frontend/worker/db_worker.cljs

+ 21 - 35
src/main/frontend/worker/db_worker.cljs

@@ -190,44 +190,30 @@
                                                :db-schema-version (str version-in-db)}}))))
     missing-addresses))
 
-(def get-to-delete-unused-addresses-sql
-  "WITH to_delete(addr) AS (
-     SELECT value
-     FROM json_each(?)
-   ),
-  referenced(addr) AS (
-    SELECT json_each.value
-    FROM kvs
-    JOIN json_each(kvs.addresses)
-    WHERE kvs.addr NOT IN (SELECT addr FROM to_delete)
-      AND json_each.value IN (SELECT addr FROM to_delete)
-  )
-  SELECT addr FROM to_delete
-  WHERE addr NOT IN (SELECT addr FROM referenced)")
-
 (defn upsert-addr-content!
   "Upsert addr+data-seq. Update sqlite-cli/upsert-addr-content! when making changes"
   [db data delete-addrs*]
-  (let [delete-addrs (clojure.set/difference (set delete-addrs*) #{0 1})]
+  (let [_delete-addrs (clojure.set/difference (set delete-addrs*) #{0 1})]
     (assert (some? db) "sqlite db not exists")
     (.transaction db (fn [tx]
                        (doseq [item data]
                          (.exec tx #js {:sql "INSERT INTO kvs (addr, content, addresses) values ($addr, $content, $addresses) on conflict(addr) do update set content = $content, addresses = $addresses"
                                         :bind item}))))
-    (when (seq delete-addrs)
-      (let [result (.exec db #js {:sql get-to-delete-unused-addresses-sql
-                                  :bind (js/JSON.stringify (clj->js delete-addrs))
-                                  :rowMode "array"})
-            non-refed-addrs (map #(aget % 0) result)]
-        (when (seq non-refed-addrs)
-          (.transaction db (fn [tx]
-                             (doseq [addr non-refed-addrs]
-                               (.exec tx #js {:sql "Delete from kvs where addr = ?"
-                                              :bind #js [addr]}))))))
-      (let [missing-addrs (when worker-util/dev?
-                            (seq (find-missing-addresses nil db {:delete-addrs delete-addrs})))]
-        (when (seq missing-addrs)
-          (worker-util/post-message :notification [(str "Bug!! Missing addresses: " missing-addrs) :error false]))))))
+    ;; (when (seq delete-addrs)
+    ;;   (let [result (.exec db #js {:sql get-to-delete-unused-addresses-sql
+    ;;                               :bind (js/JSON.stringify (clj->js delete-addrs))
+    ;;                               :rowMode "array"})
+    ;;         non-refed-addrs (map #(aget % 0) result)]
+    ;;     (when (seq non-refed-addrs)
+    ;;       (.transaction db (fn [tx]
+    ;;                          (doseq [addr non-refed-addrs]
+    ;;                            (.exec tx #js {:sql "Delete from kvs where addr = ?"
+    ;;                                           :bind #js [addr]})))))
+    ;;     (let [missing-addrs (when worker-util/dev?
+    ;;                           (seq (find-missing-addresses nil db {:delete-addrs non-refed-addrs})))]
+    ;;       (when (seq missing-addrs)
+    ;;         (worker-util/post-message :notification [(str "Bug!! Missing addresses: " missing-addrs) :error false])))))
+    ))
 
 (defn restore-data-from-addr
   "Update sqlite-cli/restore-data-from-addr when making changes"
@@ -849,11 +835,11 @@
   [repo start-opts]
   (js/Promise.
    (m/sp
-    (c.m/<? (init-sqlite-module!))
-    (when-not (:import-type start-opts)
-      (c.m/<? (start-db! repo start-opts))
-      (assert (some? (worker-state/get-datascript-conn repo))))
-    (m/? (rtc.core/new-task--rtc-start true)))))
+     (c.m/<? (init-sqlite-module!))
+     (when-not (:import-type start-opts)
+       (c.m/<? (start-db! repo start-opts))
+       (assert (some? (worker-state/get-datascript-conn repo))))
+     (m/? (rtc.core/new-task--rtc-start true)))))
 
 (def broadcast-data-types
   (set (map