3 releases
0.1.2 | Jan 23, 2023 |
---|---|
0.1.1 | Jan 23, 2023 |
0.1.0 | Jan 23, 2023 |
#2652 in Database interfaces
460KB
4.5K
SLoC
OtterSQL implements a generic intermediate code (IC) with an instruction set for tabular data operations. This IC can be used to make in-memory mocks of larger databases such as MySQL and SQLite. This IC is executed by the OtterSQL VM. This project also provides a frontend that compiles a generic dialect of SQL to the IC.
The primary goal for this project is to facilitate developers in testing their SQL-backed applications. The long term goal is to have an embeddable SQL VM for use in client-side applications.
Non-goals (for now): performance, concurrency, persistence, ACID compliance.
Introduction
See this blog post for an introduction of OtterSQL.
Using as a library
Features
Currently implemented
-
CREATE TABLE
/CREATE SCHEMA
-
INSERT
values - Projection (
SELECT
ing specific columns) - Filter (
WHERE
clause ofSELECT
) with complex expressions -
LIMIT
-
ORDER BY
In-progress or in the near future
-
UPDATE
: execution - Unions and Joins: execution
- Group by: execution
- Nested
SELECT
: codegen and execution - Common table expressions (CTEs): codegen and execution
- Uphold table constraints: codegen and execution
In the far future
- MySQL dialect and features
- SQLite dialect and features
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Mascot
Meet the official mascot of OtterSQL. He lives in the sea and loves reading books.
Dependencies
~6MB
~125K SLoC