datascript icon indicating copy to clipboard operation
datascript copied to clipboard

Cannot query for symbols

Open stathissideris opened this issue 9 years ago • 1 comments

With datascript 0.15.2 in Clojure

(require '[datascript.core :as d])

(let [conn (d/create-conn {})]
  (d/transact! conn [{:db/id -1
                      :name  "Maksim"
                      :age   45
                      :sym   'foo}])
  (d/q '[:find  ?n ?a
         :where [?e :sym foo]
                [?e :name ?n]
                [?e :age  ?a]]
       @conn))

You get:

1. Unhandled clojure.lang.ExceptionInfo
   Cannot parse clause, expected (data-pattern | pred-expr | fn-expr |
   rule-expr | not-clause | not-join-clause | or-clause |
   or-join-clause)
   {:error :parser/where, :form [?e :sym foo]}

                  core.clj: 4617  clojure.core/ex-info
                  core.clj: 4617  clojure.core/ex-info
               parser.cljc:  608  datascript.parser$parse_clause/invokeStatic
               parser.cljc:  598  datascript.parser$parse_clause/invoke

stathissideris avatar Jul 24 '16 14:07 stathissideris

How about this way

(let [conn (d/create-conn {})]
    (d/transact! conn [{:db/id -1
                        :name  "Maksim"
                        :age   45
                        :sym   'foo}])
    (prn
     (d/q '[:find  ?n ?a
            :in $ ?sym
            :where
            [?e :sym ?sym]
            [?e :name ?n]
            [?e :age  ?a]]
          @conn 'foo)))

spagreeks avatar Jul 26 '16 17:07 spagreeks

The original example shared above appears to now work fine with the latest version - I guess it got fixed at some point :slightly_smiling_face: likely by https://github.com/tonsky/datascript/pull/426

refset avatar Mar 20 '23 23:03 refset