Three-valued NULL handling for a single aggregate (scoped spike).
Full NULL semantics is a roadmap item; this is a bounded first slice. Pick one aggregate (e.g. SUM/AVG) and make it skip NULLs correctly using a per-column validity signal, matching SQLite, without regressing the non-NULL fast path.
Where
- Aggregate code in
v2/src/exec.cpp.
- Coordinate with how importers currently map NULL→0/"" (
v2/src/storage.*).
Acceptance criteria
SELECT AVG(v) FROM t with some NULL v matches SQLite.
- Document what's covered and what's still TODO (this intentionally does not finish the whole NULL item).
See CONTRIBUTING.md and comment here to claim it.
Three-valued
NULLhandling for a single aggregate (scoped spike).Full NULL semantics is a roadmap item; this is a bounded first slice. Pick one aggregate (e.g.
SUM/AVG) and make it skip NULLs correctly using a per-column validity signal, matching SQLite, without regressing the non-NULL fast path.Where
v2/src/exec.cpp.v2/src/storage.*).Acceptance criteria
SELECT AVG(v) FROM twith some NULLvmatches SQLite.See CONTRIBUTING.md and comment here to claim it.