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 ...