Skip to content

Releases: Aybavs/sql-query-engine

Release list

v1.0.0

Choose a tag to compare

@Aybavs Aybavs released this 04 Aug 14:07
ca81bf1

First complete release of the SQL query engine.

The engine

  • Lexer and recursive-descent parser for a SELECT subset, with precedence-climbing expressions
  • Volcano (pull-based) execution: every operator pulls rows from its child, so LIMIT stops the scan early without any operator knowing LIMIT exists
  • INNER JOIN executed by a hash join (build/probe), handling duplicate keys and dropping NULL keys per SQL semantics
  • Aggregates — COUNT, SUM, AVG, MIN, MAX — with GROUP BY and HAVING
  • Three-valued NULL logic throughout: unknown comparisons are excluded by WHERE, while GROUP BY collapses NULL keys into one group
  • Plan-time name resolution and type checking, so bad queries fail before a row is read
  • A REPL over CSV-backed tables described by a small schema file

Correctness

  • Differential testing against SQLite with a seeded query generator: 50,000 comparisons across ten seeds, about 15,000 of them joins, with no disagreements
  • A NULL semantics suite stating three-valued behaviour as executable specification
  • Golden tests per package; go vet and race-detector tests run in CI

Deliberate divergences from SQLite (integer division, cross-type comparison, booleans) are documented in the README rather than hidden. See docs/design-notes.md for the reasoning behind the execution model, the join, and the testing approach.