Home Expressions
Docs
Drivers Gateway SDKs Benchmarks
Changelog
GitHub
Blog Status Roadmap

Coverage Summary

Area Coverage Notes
Expressions โœ“ Core query nodes with advanced constructs
DML โœ“ Read/write operations with typed AST mapping
DDL โœ“ Schema and view actions with ongoing additions

Expression Types

Expression Node QAIL API Example SQL Status
Expr::Named Expr::Named("email".into()) email โœ“
Expr::Aliased Expr::Aliased(name, alias) users.email AS user_email โœ“
Expr::Aggregate Expr::Aggregate(func, col, filter) COUNT(*) FILTER (WHERE ...) AS cnt โœ“
Expr::Window Expr::Window(func, partition, order, frame) SUM(amount) OVER (PARTITION BY dept ORDER BY date) โœ“
Expr::Case Expr::Case(when_clauses, else_value) CASE WHEN ... THEN 'A' ELSE 'B' END โœ“
Expr::ArrayConstructor Expr::ArrayConstructor(elements, alias) ARRAY[col1, col2] AS arr โœ“
Expr::RowConstructor Expr::RowConstructor(elements, alias) ROW(id, name) AS person โœ“
Expr::Subscript Expr::Subscript(expr, index, alias) tags[1] AS first_tag โœ“
Expr::Collate Expr::Collate(expr, collation) name COLLATE "C" โœ“
Expr::FieldAccess Expr::FieldAccess(expr, field, alias) (address).city AS city โœ“
Expr::Cast Expr::Cast(expr, target_type) id::TEXT โœ“
Expr::JsonAccess Expr::JsonAccess(column, path_segments) data->'user'->>'name' AS name โœ“

GROUP BY Modes

Mode Example SQL Status
GroupByMode::Simple GROUP BY a, b โœ“
GroupByMode::Rollup GROUP BY ROLLUP(a, b) โœ“
GroupByMode::Cube GROUP BY CUBE(a, b) โœ“
GroupByMode::GroupingSets GROUP BY GROUPING SETS ((a, b), (c)) โœ“

DDL Actions

Action Example SQL Status
Action::Make CREATE TABLE ... โœ“
Action::Drop DROP TABLE ... โœ“
Action::Index CREATE INDEX ... โœ“
Action::CreateView CREATE VIEW ... AS SELECT โœ“
Action::DropView DROP VIEW IF EXISTS ... โœ“