From 13a5c313121e967db569d61568cf0fd25fe60eb3 Mon Sep 17 00:00:00 2001 From: Nikita Prokopov Date: Mon, 22 Jul 2024 16:36:18 +0200 Subject: [PATCH] Fixed `find-datom` on empty DB (closes #477) --- CHANGELOG.md | 4 ++++ src/datascript/db.cljc | 2 +- test/datascript/test/index.cljc | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20428e90..c6d9842e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# WIP + +- Fixed `find-datom` on empty DB #477 thx @RCmerci + # 1.7.2 - Jul 4, 2024 - Regression: transacting many ref value as a set of inline maps #476 diff --git a/src/datascript/db.cljc b/src/datascript/db.cljc index fc5e2cae..3ee5941a 100644 --- a/src/datascript/db.cljc +++ b/src/datascript/db.cljc @@ -1149,7 +1149,7 @@ cmp #?(:clj (.comparator ^clojure.lang.Sorted set) :cljs (.-comparator set)) from (components->pattern db index c0 c1 c2 c3 e0 tx0) to (components->pattern db index c0 c1 c2 c3 emax txmax) - datom (when-let [set* (seq set)] (first (set/seek set* from)))] + datom (some-> set seq (set/seek from) first)] (when (and (some? datom) (<= 0 (cmp to datom))) datom))) diff --git a/test/datascript/test/index.cljc b/test/datascript/test/index.cljc index 2845e6fb..094c30f4 100644 --- a/test/datascript/test/index.cljc +++ b/test/datascript/test/index.cljc @@ -102,7 +102,11 @@ (is (= [2 :name "Ivan"] (dvec (d/find-datom db :eavt 2 :name)))) (is (= nil (dvec (d/find-datom db :eavt 1 :name "Ivan")))) - (is (= nil (dvec (d/find-datom db :eavt 4)))))) + (is (= nil (dvec (d/find-datom db :eavt 4)))) + + ;; issue-477 + (is (= nil (d/find-datom (d/empty-db) :eavt))) + (is (= nil (d/find-datom (d/empty-db {:age {:db/index true}}) :eavt))))) (deftest test-seek-datoms (let [dvec #(vector (:e %) (:a %) (:v %))