rules aren't correctly unifying
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
El issue no menciona archivos fuente ni tests. Reproduce ambos ejemplos de reglas recursivas mediante db/q y, a continuación, sigue la evaluación de reglas y la unificación desde ese punto de entrada; se considera terminado cuando la primera consulta devuelve la raíz esperada y la segunda deja de devolver la entidad no relacionada o de lanzar un error.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The problem: walk references until finding the root reference.
This example returns {:id :a :root 1} in the results as expected for datomic, but fails in datascript:
(let [c (db/empty-db {:id {:db/unique :db.unique/identity}})]
(db/q '[:find (pull ?root [*]) :in $ ?id % :where [?e :id ?id] (root ?id ?root)]
(db/db-with c [{:id :a :root 1} {:id :b :parent [:id :a]} {:id :c :parent [:id :b]} {:id :d :root 2}])
:b
'[[(root ?e ?e) (not [?e :parent _])]
[(root ?e ?r) [?e :parent ?p] (root ?p ?r)]]))
;; => ExceptionInfo Insufficient bindings: none of #{?root} is bound in (not [?root :parent _]) clojure.core/ex-info (core.clj:4739)
This example throws an ArrayIndexOutOfBoundsException in datomic 🤷♂️ while in datascript returns too many results (however did it reach {:id :d}?):
(let [c (db/empty-db {:id {:db/unique :db.unique/identity}})]
(db/q '[:find (pull ?root [*]) :in $ ?id % :where [?e :id ?id] (root ?id ?root)]
(db/db-with c [{:id :a :root 1} {:id :b :parent [:id :a]} {:id :c :parent [:id :b]} {:id :d :root 2}])
:b
'[[(root ?e ?e) [?e :root _]]
[(root ?e ?r) [?e :parent ?p] (root ?p ?r)]]))
;; => ([{:db/id 4, :id :d, :root 2}] [{:db/id 1, :id :a, :root 1}])
- Lenguaje dominante
- Clojure
- Estrellas
- 5.8k
- Forks
- 318
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de tonsky/datascript
-
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
tonsky/datascript#498 · 1 comentario ·
-
Datascript MCP Server Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 10/100
tonsky/datascript#489 ·
-
Stack overflow when transacting :db.type/tupleAttrs with a :db.type/ref attr through :db.fn/call Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
tonsky/datascript#483 · 2 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
tonsky/datascript#470 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
tonsky/datascript#441 · 1 comentario · 3 reacciones ·
Todos los issues de tonsky/datascript
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
-
.Team/Metabot Priority:P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
needs triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
scalar-labs/scalar-jepsen#222 · 1 comentario ·