File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # WIP
2+
3+ - Fixed empty non-queried relation not affecting results #385
4+
15# 1.0.4
26
37- Implement nav/datafy for entities #325 thx @IamDrowsy
Original file line number Diff line number Diff line change 22
33cd " ` dirname $0 ` /.."
44
5- clojure -A:test -m kaocha.runner --watch " $@ "
5+ clojure -A:test -M - m kaocha.runner --watch " $@ "
Original file line number Diff line number Diff line change 861861 (let [rels (:rels context)]
862862 (-collect [(da/make-array (count symbols))] rels symbols)))
863863 ([acc rels symbols]
864- (if-some [rel (first rels)]
865- (let [keep-attrs (select-keys (:attrs rel) symbols)]
866- (if (empty? keep-attrs)
867- (recur acc (next rels) symbols)
868- (let [copy-map (to-array (map #(get keep-attrs %) symbols))
869- len (count symbols)]
870- (recur (for [#?(:cljs t1
871- :clj ^{:tag " [[Ljava.lang.Object;" } t1) acc
872- t2 (:tuples rel)]
873- (let [res (aclone t1)]
874- (dotimes [i len]
875- (when-some [idx (aget copy-map i)]
876- (aset res i (#?(:cljs da/aget :clj get) t2 idx))))
877- res))
878- (next rels)
879- symbols))))
880- acc)))
864+ (cond+
865+ :let [rel (first rels)]
866+
867+ (nil? rel) acc
868+
869+ ; ; one empty rel means final set has to be empty
870+ (empty? (:tuples rel)) []
871+
872+ :let [keep-attrs (select-keys (:attrs rel) symbols)]
873+
874+ (empty? keep-attrs) (recur acc (next rels) symbols)
875+
876+ :let [copy-map (to-array (map #(get keep-attrs %) symbols))
877+ len (count symbols)]
878+
879+ :else
880+ (recur
881+ (for [#?(:cljs t1
882+ :clj ^{:tag " [[Ljava.lang.Object;" } t1) acc
883+ t2 (:tuples rel)]
884+ (let [res (aclone t1)]
885+ (dotimes [i len]
886+ (when-some [idx (aget copy-map i)]
887+ (aset res i (#?(:cljs da/aget :clj get) t2 idx))))
888+ res))
889+ (next rels)
890+ symbols))))
881891
882892(defn collect [context symbols]
883893 (->> (-collect context symbols)
Original file line number Diff line number Diff line change 99 (:import [clojure.lang ExceptionInfo])))
1010
1111
12-
1312(deftest test-joins
1413 (let [db (-> (d/empty-db )
1514 (d/db-with [ { :db/id 1 , :name " Ivan" , :age 15 }
231230 " X" )
232231 #{[" abcX" ] [" aXb" ]})))
233232
233+
234+ (deftest ^{:doc " issue-385" } test-join-unrelated
235+ (is (= #{}
236+ (d/q '[:find ?name
237+ :in $ ?my-fn
238+ :where [?e :person/name ?name]
239+ [(?my-fn ) ?result]
240+ [(< ?result 3 )]]
241+ (d/db-with (d/empty-db ) [{:person/name " Joe" }])
242+ (fn [] 5 )))))
243+
234244#_(require 'datascript.test.query :reload )
235245#_(clojure.test/test-ns 'datascript.test.query)
You can’t perform that action at this time.
0 commit comments