datalevin 2026-08-26

Are tuples required to be non-empty? I'm using datalevin embedded 1.0.2 I have a field with schema such as :sf/emails {:db/valueType :db.type/tuple :db/tupleType :db.type/string} If I transact data that looks like {:sf/foo "hi" :sf/emails []} I get an error. Works fine if the tuple is non-empty.

1. Unhandled java.lang.IndexOutOfBoundsException
   (No message)
     PersistentVector.java:  162  clojure.lang.PersistentVector/arrayFor
     PersistentVector.java:  166  clojure.lang.PersistentVector/nth
                   RT.java:  916  clojure.lang.RT/nth
                  bits.clj:  636  datalevin.bits/put-homo-tuple
                  bits.clj:  632  datalevin.bits/put-homo-tuple
                  bits.clj:  784  datalevin.bits/tuple-bytes
                  bits.clj:  777  datalevin.bits/tuple-bytes
                  bits.clj:  805  datalevin.bits/val-bytes
                  bits.clj:  791  datalevin.bits/val-bytes
                  bits.clj:  886  datalevin.bits/indexable
                  bits.clj:  880  datalevin.bits/indexable
               storage.clj: 2711  datalevin.storage/insert-datom
               storage.clj: 2696  datalevin.storage/insert-datom
               storage.clj: 2873  datalevin.storage/prepare-datoms-kv-plan/fn
               storage.clj: 2870  datalevin.storage/prepare-datoms-kv-plan
               storage.clj: 2841  datalevin.storage/prepare-datoms-kv-plan
               storage.clj: 2659  datalevin.storage/load-datoms-with-plan!/fn
               storage.clj: 2658  datalevin.storage/load-datoms-with-plan!
               storage.clj: 2653  datalevin.storage/load-datoms-with-plan!
                    db.clj: 1386  datalevin.db/commit-prepared-tx-data!
                    db.clj: 1351  datalevin.db/commit-prepared-tx-data!
                    db.clj: 1312  datalevin.db/local-transact-tx-data
                    db.clj: 1302  datalevin.db/local-transact-tx-data
                    db.clj: 1623  datalevin.db/transact-tx-data
                    db.clj: 1588  datalevin.db/transact-tx-data
                  conn.clj:  364  datalevin.conn/with
                  conn.clj:  360  datalevin.conn/with
                  conn.clj:  362  datalevin.conn/with
                  conn.clj:  360  datalevin.conn/with
                  conn.clj:  392  datalevin.conn/direct-local-transact!/helper24936
                  conn.clj:   -1  datalevin.conn/direct-local-transact!/helper24936
                  conn.clj:  389  datalevin.conn/direct-local-transact!
                  conn.clj:  381  datalevin.conn/direct-local-transact!
                  conn.clj:  472  datalevin.conn/-transact!
                  conn.clj:  469  datalevin.conn/-transact!
                  conn.clj:  487  datalevin.conn/run-transact-now!
                  conn.clj:  485  datalevin.conn/run-transact-now!
                  conn.clj:  617  datalevin.conn/transact!

Indeed, tuples need to be non-empty.

I can improve the error message to be more clear

that would be great. Should I create an issue?

It's ok. I am changing the code right now. Will be available in the next version.

🙏 1