datalog: dl-magic-query handles mixed EDB+IDB relations (225/225)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 51s

Bug: dl-magic-query was skipping EDB facts for relations that had
rules ("rule-headed"). When a single relation has both EDB facts
and rules deriving more (mixed EDB+IDB), the rewritten run would
miss the EDB portion entirely, producing too few or zero results.

Fix: copy ALL existing facts to the internal mdb regardless of
whether the relation has rules. EDB-only relations bring their
tuples; mixed relations bring both EDB and any pre-saturated IDB
(which the rewritten rules would re-derive anyway).

1 new test: link relation seeded with 3 EDB tuples plus a
recursive rule via via/2. dl-magic-query rooted at `a` returns
2 results (a→b direct, a→c via via(a,e), link(e,c)).
This commit is contained in:
2026-05-08 10:41:36 +00:00
parent 254052a43b
commit 96f66d3596
4 changed files with 28 additions and 12 deletions

View File

@@ -1,8 +1,8 @@
{
"lang": "datalog",
"total_passed": 224,
"total_passed": 225,
"total_failed": 0,
"total": 224,
"total": 225,
"suites": [
{"name":"tokenize","passed":26,"failed":0,"total":26},
{"name":"parse","passed":18,"failed":0,"total":18},
@@ -13,8 +13,8 @@
{"name":"negation","passed":10,"failed":0,"total":10},
{"name":"aggregates","passed":19,"failed":0,"total":19},
{"name":"api","passed":20,"failed":0,"total":20},
{"name":"magic","passed":24,"failed":0,"total":24},
{"name":"magic","passed":25,"failed":0,"total":25},
{"name":"demo","passed":21,"failed":0,"total":21}
],
"generated": "2026-05-08T10:36:02+00:00"
"generated": "2026-05-08T10:40:13+00:00"
}