PRQL compiler
prql-compiler contains the implementation of PRQL’s compiler, written in Rust.
For more on PRQL, check out the PRQL website or the PRQL repo.
For more usage examples and the library documentation, check out the prql-compiler documentation.
Installation
cargo add prql-compiler
Examples
Compile a PRQL string to a SQLite dialect string.
src/main.rs
1. #![allow(unused)]
2. fn main() {
3. use prql_compiler::{compile, Options, Target, sql::Dialect};
5. let prql = "from employees | select [name, age]";
6. let opts = &Options {
7. format: false,
8. target: Target::Sql(Some(Dialect::SQLite)),
9. signature_comment: false
10. };
11. let sql = compile(&prql, opts).unwrap();
12. assert_eq!("SELECT name, age FROM employees", sql);
13. }
Terminology
Relation: Standard definition of a relation in context of databases:
- An ordered set of tuples of form
(d_0, d_1, d_2, ...). - Set of all
d_xis called an attribute or a column. It has a name and a type domainD_x.
Frame: descriptor of a relation. Contains list of columns (with names and types). Does not contain data.
Table: persistently stored relation. Some uses of this term actually mean to say “relation”.
