• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

thanos / ex_datalog / 3d2674b51d6d4ed8ab43df2e967314f3b89c7bc6-PR-161
93%
main: 93%

Build:
Build:
LAST BUILD BRANCH: v0.5.0/code_review_fixes
DEFAULT BRANCH: main
Ran 22 Jun 2026 06:57PM UTC
Jobs 1
Files 45
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Jun 2026 06:52PM UTC coverage: 93.31% (-0.7%) from 93.998%
3d2674b51d6d4ed8ab43df2e967314f3b89c7bc6-PR-161

Pull #161

github

thanos
v0.5.0: aggregates, BEAM callbacks, magic sets, query planner, runtime facts

M0.5 — Feasibility Spikes
  - Spike A: callback as {:callback, %IR.Callback{}} IR literal round-trips
    through compiler/evaluator (chest/spikes/README.md)
  - Spike B: materialize(goal:) drives magic sets transform; results ≡ semi-naive

M1 — Query Planner Foundation  - closed #127
  - Add ExDatalog.Planner with plan/2, explain_plan/1,2 - closed #128
  - Add planner structs: Plan, Stratum, Join, Predicate (lib/ex_datalog/planner/) - closed #129
  - Engine strategy dispatch: evaluate/2 routes :semi_naive / :magic_sets  - closed #130
  - Telemetry [:ex_datalog, :planner, :start|:stop|:exception]  - closed #131
  - Tests: planner_test.exs, planner_explain_test.exs  - closed #132

M2 — Aggregates (count/sum/min/max)  - closed #133
  - Add @aggregate_ops [:count, :sum, :min, :max] to Constraint;
    from_tuple/1, valid_right?/2, valid_result?/2 extended   - closed #134
  - Add ExDatalog.Constraints.Aggregate (group_and_reduce/5; evaluate/3 raises)  - closed #135
  - Add Rule.has_aggregates?/1, aggregate_constraints/1, non_aggregate_constraints/1  - closed #136
  - Safety: aggregate input var must be bound, result var in head, ≤1 agg/rule,
    no aggregate in recursive rule - closed #137
  - Stratification: post-pass in assign_strata/1 forces aggregate head above
    all positive body relations; engine validate_stratification/1 extended  - closed #138
  - Evaluator: eval_aggregate_rule/3 (join → filter → callbacks → negation →
    group_and_reduce → project); apply_constraints/3 partitions out aggregate ops  - closed #139
  - DSL: count/sum/min/max(X, Result) parsed before generic constraint-ops loop;
    head-position aggregate raises DSL.CompileError - closed #140
  - Tests: aggregate_test.exs + DSL tests in schema_test.exs - closed #141

M3 — BEAM Callback Predicates  - closed #142
  - Add ExDatalog.Callback struct (AST) + IR.Callback struct + {:callback, _} IR literal - clo... (continued)
Pull Request #161: v0.5.0: aggregates, BEAM callbacks, magic sets, query planner, runtim…

309 of 344 new or added lines in 16 files covered. (89.83%)

1353 of 1450 relevant lines covered (93.31%)

478.9 hits per line

Uncovered Changes

Lines Coverage ∆ File
7
90.32
-2.22% lib/ex_datalog/engine/naive.ex
6
80.0
lib/ex_datalog/constraints/beam_callback.ex
6
88.46
lib/ex_datalog/magic_sets.ex
5
89.36
lib/ex_datalog/planner.ex
2
97.59
1.85% lib/ex_datalog/engine/evaluator.ex
2
91.43
-5.45% lib/ex_datalog/ir.ex
2
93.22
2.31% lib/ex_datalog/program.ex
2
98.0
-2.0% lib/ex_datalog/validator/stratification.ex
1
98.51
-1.49% lib/ex_datalog/constraint.ex
1
96.97
-3.03% lib/ex_datalog/rule.ex
1
97.06
-0.5% lib/ex_datalog/validator/safety.ex
Jobs
ID Job ID Ran Files Coverage
1 3d2674b51d6d4ed8ab43df2e967314f3b89c7bc6-PR-161.1 22 Jun 2026 06:57PM UTC 45
93.31
GitHub Action Run
Source Files on build 3d2674b51d6d4ed8ab43df2e967314f3b89c7bc6-PR-161
  • Tree
  • List 45
  • Changed 14
  • Source Changed 0
  • Coverage Changed 14
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Pull Request #161
  • PR Base - main (#ECA4A546...)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc