I’m writing a git bisect
-like utility, and as part of this I’m looking to query for the transaction midway between two databases. Here is what I have so far:
(d/q '[:find (median ?t)
:in $earlier $later
:where [$later ?t :db/txInstant _]
[(q '[:find (max ?et)
:where [?et :db/txInstant _]]
$earlier) [[?min-t]]]
[(<= ?min-t ?t)]]
earlier-db
later-db)
It seems to be correct, but I’m wondering if there are ways to simplify the query. Could it be re-written without the sub-query?