About this project

Frigolite is a from-scratch reimplementation of the SQLite database engine in pure Go, designed to provide SQLite-compatible file formats without requiring CGO, external dependencies, or the sqlite3 CLI. It serves as a lightweight, self-contained SQL database solution for Go applications. Key features include: - **Pure Go Implementation**: Zero external dependencies and no CGO, ensuring easy integration and portability. - **SQLite Compatibility**: Reads and writes standard `.db` files, supporting a useful subset of SQL including `CREATE`, `INSERT`, `SELECT` (with joins, subqueries, and aggregations), `UPDATE`, and `DELETE`. - **Extensive Function Support**: Includes over 60 SQL functions such as string manipulation, numeric operations, conditional logic, and compression utilities. - **Advanced Features**: Supports virtual tables (e.g., `generate_series`), over 25 PRAGMAs, and EXPLAIN/EXPLAIN QUERY PLAN for debugging. - **Flexible Interfaces**: Provides both a native Go API and a standard `database/sql` driver, allowing developers to use typed scans, placeholders, and prepared statements. - **Command-Line Shell**: Includes an interactive CLI for direct database management. - **Robust Testing**: Backed by 842 tests, including auto-converted SQLite compatibility tests, ensuring reliability. Frigolite's architecture is modular, with distinct packages for storage, pager, B-tree, SQL parsing, and execution. It adheres to SOLID principles and Go idioms, making it a maintainable and efficient alternative for projects needing SQLite functionality without the overhead of C bindings.