replikativ/datahike

Zeros in pattern clauses ignored for hitchhiker-tree index

Closed this issue · 0 comments

Patterns like [?e :version/id 0] result in all datoms with attribute :version/id being pulled from database. Only happens for hitchhiker-tree index, not for persistent set.

(def cfg {:store {:backend :mem
                          :id "sandbox"}
          :index :datahike.index/hitchhiker-tree
          :keep-history? true
          :schema-flexibility :write
          :attribute-refs? false})

(def conn (do
            (d/delete-database cfg)
            (d/create-database cfg)
            (d/connect cfg)))

(do
  (d/transact conn [{:db/ident :version/id
                     :db/valueType :db.type/long
                     :db/cardinality :db.cardinality/one
                     :db/unique :db.unique/identity}])
  (d/transact conn [{:version/id 0}{:version/id 1}])
  nil)

(d/q '[:find ?t :in $ :where
       [?t :version/id 0]]
     @conn) ;; returns #{[2][3]}, should be #{[2]}