ribelo / doxa

The Unlicense
232 stars 8 forks source link

join queries returning too many rows i.e. not joining correctly #39

Closed stevebuik closed 2 years ago

stevebuik commented 2 years ago

2 examples. seems to be incorrect in both directions

(let [db (dx/create-dx {} [{:id   1
                              :name "Olympics"}
                             {:id   2
                              :name "Boardercross"
                              :event [:id 1]}
                             {:id   3
                              :name "Curling"
                              :event [:id 1]}])]
    (dx/q '[:find ?event ?sport
            :where
            [?sport :event ?event]
            [?event :id ?id]]
          db))

(let [db (dx/create-dx {} [{:id     1
                              :name   "Olympics"
                              :sports [{:id   2
                                        :name "Boardercross"}
                                       {:id   3
                                        :name "Curling"}]}])]
    (dx/q '[:find ?event ?sport
            :where
            [?event :sports ?sport]
            [?sport :id ?id]]
          db))

In both cases it returns correct results if you omit the second clause.

am I doing this wrong or is it a bug?

stevebuik commented 2 years ago

confirmed fix in my production app