-
Notifications
You must be signed in to change notification settings - Fork 29
Open
Description
It seems that a transaction using the + append annotation will fail when a map is supplied. For reference, I'm using Asami 2.2.1 and Clojure 1.10.3.855.
(def conn (d/connect "asami:local://demo"))
#'hue.server.core/conn
(d/transact conn [{:title "Demo"
:description "This is a demonstration of the append annotation failing on maps."
:contents [{:statement "Wow"}]}])
#object[java.util.concurrent.CompletableFuture 0x4e0964bb "java.util.concurrent.CompletableFuture@4e0964bb[Completed normally]"]
(d/entity (d/db conn) (asami.graph/new-node 1))
{:title "Demo",
:description "This is a demonstration of the append annotation failing on maps.",
:contents [{:statement "Wow"}]}
(d/transact conn [{:db/id (asami.graph/new-node 1)
:contents+ {:statement "What?"}}])
; Execution error (IllegalArgumentException) at asami.durable.encoder/eval22954$fn$G (encoder.clj:107).
; No implementation of method: :encapsulate-id of protocol: #'asami.durable.encoder/FlatFile found for class: clojure.lang.PersistentArrayMapAs FlatFile does not implement the encapsulate-id function for IPersistentMap, this error seems like expected behavior (or temporary).
asami/src/asami/durable/encoder.clj
Lines 333 to 341 in d3b6752
| IPersistentMap | |
| (header [this len] | |
| (general-header (type->code IPersistentMap) len)) | |
| (body [this] | |
| ;; If this is an identified object, then save it's location | |
| (doseq [id-attr [:db/id :db/ident :id]] | |
| (when-let [id (id-attr this)] | |
| (vswap! *entity-offsets* assoc id @*current-offset*))) | |
| (body (apply concat (seq this)))) |
If it's the case, how can I append a map to a vector? I could use the ' replacement annotation and set the vector as its previous items with the new one appended, but it seems inefficient and unintended.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels