-
Clone repository and build binary using
cargo build --release
-
Use in one of two ways
a. Using cli arg:
pathto/binary "SQL query"
b. Using the interactive shell. Start it by executing the binary without cli args. Quit it by submitting the character 'q'.
- Parse simple queries (SELECT (WHERE, AND), INSERT INTO, CREATE TABLE, CREATE INDEX)
- Handle simple reads/writes
- Use indices on columns for improved read performance
- More complex queries, including subqueries, SORT BY, ORDER BY, LIMIT, functions like COUNT() and the like
- Constraints, such as NOT NULL, DEFAULT _, UNIQUE, ..
- indices: allow a leaf to point to multiple data pages
- basic constraints, such as NOT NULL, DEFAULT, UNIQUE
- implement WAL
- implement more of the common SQL syntax, such as DROP and UPDATE and DELETE
I consciously chose to not implement logic for the following
- I don't handle the case that a single record exceeds the size of a datapage
- I don't implement DB metadata like users or privileges