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

dal-go / dalgo / 27057261652
100%

Build:
DEFAULT BRANCH: main
Ran 06 Jun 2026 08:19AM UTC
Jobs 1
Files 111
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

06 Jun 2026 08:18AM UTC coverage: 100.0%. Remained the same
27057261652

push

github

web-flow
feat: GROUP BY with aggregation in query builder, executed by dalgo2memory (#60)

Adds GROUP BY end-to-end against the in-memory adapter, following the
query-column-projection precedent.

dal builder:
- GroupBy(expressions ...Expression) and Having(conditions ...Condition)
  chainable methods on IQueryBuilder/QueryBuilder; Having reuses dal.Condition
  (AND-combined like Where) and renders after GROUP BY in String().
- Having() getter + having field on StructuredQuery/structuredQuery.
- COUNT(*) star expression with a Count() builder (alias for COUNT(*));
  CountAs(field, alias) keeps its field-count semantics.
- Exported AggregateFunc interface so adapters can introspect aggregate
  function name/args without the unexported concrete type.

dalgo2memory grouping engine (group.go), shared by single-source and join
paths:
- Partition WHERE-matched rows by the group-key tuple via the existing
  source-aware resolver; one aggregated row per group.
- SUM/COUNT/MIN/MAX/AVG and COUNT(*) with standard SQL null handling
  (skip nulls; all-null SUM/AVG/MIN/MAX -> nil; COUNT(*) counts all rows),
  reusing the existing number() coercion.
- Hard-error when a selected column is neither an aggregate nor a GROUP BY
  expression, before any row is emitted.
- HAVING as a post-aggregation filter, with operands resolved by SELECT alias
  or aggregate expression (aggregates used only in HAVING are computed but not
  output).
- ORDER BY / LIMIT / OFFSET applied to the grouped rows.
- Empty GroupBy() bypasses the path; existing behavior unchanged.

dalgo2memory stays at 100% statement coverage. Implements the
query-group-by-aggregation Feature (Grade A) and its plan.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

296 of 296 new or added lines in 6 files covered. (100.0%)

6169 of 6169 relevant lines covered (100.0%)

1.14 hits per line

Jobs
ID Job ID Ran Files Coverage
1 27057261652.1 06 Jun 2026 08:19AM UTC 111
100.0
GitHub Action Run
Source Files on build 27057261652
  • Tree
  • List 111
  • Changed 5
  • Source Changed 0
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 6a973f91 on github
  • Prev Build on main (#27042820822)
  • Next Build on main (#27057346763)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc