datahike

whilo 2026-01-20T11:28:57.052179Z

;; Instead of sequential:                                                                                                                                                                                                                                   
[(attr-graph ?attr) ?g]                                                                                                                                                                                                                                     
[(bfs-reachable ?g $ ?p) ?r]                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                              
;; Can write nested:                                                                                                                                                                                                                                        
[(bfs-reachable (attr-graph ?attr) $ ?p) ?r]                                                                                                                                                                                                                
                                                                                                                                                                                                                                                              
;; Or deeply nested:                                                                                                                                                                                                                                        
[(out-neighbors (reverse-graph (attr-graph ?attr)) $ ?p) ?incoming]
I am experimenting with graph algorithms a bit atm. and I was wondering whether it would be better to allow nested expressions in function calls. I am not convinced this is a good idea per se, but I tripped over this a few times when I started using Datomic, and it can be annoying to first bind each nested variable to a logic var. I am curious to hear others opinions on this? Also on which kind of graph algorithms people would be interested in. I have hierarchical Louvain for instance.

2026-01-20T18:11:07.113599Z

LMDB backend fails:

Caused by: java.lang.IllegalArgumentException: No implementation of method: :-assoc-serializers of protocol: #'konserve.protocols/PAssocSerializers found for class: konserve_lmdb.store.LMDBStore
org.replikativ/datahike "0.7.1631" io.replikativ/datahike-lmdb

whilo 2026-01-20T19:18:57.627929Z

Weird. What konserve version do you use according to your dependency tree?

2026-01-20T19:22:11.837149Z

My database component deps.edn:

{:paths ["src" "resources"]
 :deps {mount/mount {:mvn/version "0.1.23"}
        org.replikativ/datahike {:mvn/version "0.7.1633"
                                 :exclusions [org.replikativ/konserve]}
        org.replikativ/konserve-jdbc {:mvn/version "0.2.92"
                                      :exclusions [org.replikativ/konserve]}
        io.replikativ/datahike-lmdb {:git/url ""
                                     :git/sha "77e75b3c3e151984309e78a3f23db8fe20cb44fb"
                                     :exclusions [org.replikativ/konserve]}
        org.replikativ/konserve {:mvn/version "0.9.344"}
        org.postgresql/postgresql {:mvn/version "42.7.8"}
        missionary/missionary {:mvn/version "b.46"}
        ch.qos.logback/logback-classic {:mvn/version "1.4.14"}}
 :aliases {:test {:extra-paths ["test"]
                  :extra-deps {}}}}

alekcz 2026-01-20T19:26:12.511279Z

Why would I get an error like this. I thought homogenous tuples can be of any length. It's stopping me from retracting the entity.

clojure.lang.ExceptionInfo: Bad format for value in pattern, must be a scalar, nil or a vector of two elements. {:error :search/pattern, :v ["" "tag139878778372080000" "tag139879675144920000"], :pattern [10484919 :taglist ["" "tag139878778372080000" "tag139879675144920000"]]}
This is the schema definition:
{:db/ident :taglist
 :db/valueType :db.type/tuple
 :db/cardinality :db.cardinality/one
 :db/tupleType :db.type/string}

whilo 2026-01-30T06:21:48.409799Z

This is fixed with 0.7.1642 now.

2026-01-31T23:13:47.234519Z

It will be hard ti me to check because i decided to move from tuple data types to several common types because that workd. But is case Ill come to you with feedbacj

👍 1
2026-01-21T15:06:56.632249Z

Can you show the function call that throws it?

alekcz 2026-01-21T15:23:24.005149Z

(d/transact conn [[:db.fn/retractEntity [:expense/id (:id expense)]]])
But this expense has a property called :taglist with those 3 values ["" "tag139878778372080000" "tag139879675144920000"]

2026-01-21T15:25:51.787269Z

Looks similar to https://clojurians.slack.com/archives/CB7GJAN0L/p1765777790990609

whilo 2026-01-25T01:26:45.865569Z

I hope I can get to this soon, feel free to open an issue to keep track of it.