# exsql v0.1.4 - Table of Contents

> A SQLite implementation in pure Elixir

## Modules

- [Ecto.Adapters.ExSQL](Ecto.Adapters.ExSQL.md): Ecto SQL adapter for ExSQL.
- [ExSQL](ExSQL.md): A SQLite implementation in pure Elixir.
- [ExSQL.AST.AlterTable](ExSQL.AST.AlterTable.md): An `ALTER TABLE` statement.
- [ExSQL.AST.ColumnDef](ExSQL.AST.ColumnDef.md): A column definition inside `CREATE TABLE`.
- [ExSQL.AST.Compound](ExSQL.AST.Compound.md): A compound `SELECT`: two queries joined by `UNION [ALL]`, `INTERSECT`, or
`EXCEPT`.
- [ExSQL.AST.CreateIndex](ExSQL.AST.CreateIndex.md): A `CREATE [UNIQUE] INDEX [IF NOT EXISTS] name ON table(cols) [WHERE expr]` statement.
- [ExSQL.AST.CreateTable](ExSQL.AST.CreateTable.md): A `CREATE TABLE` statement.
- [ExSQL.AST.CreateTrigger](ExSQL.AST.CreateTrigger.md): A `CREATE TRIGGER` statement.
- [ExSQL.AST.CreateView](ExSQL.AST.CreateView.md): A `CREATE VIEW [IF NOT EXISTS] name [(cols)] AS select` statement.
- [ExSQL.AST.Delete](ExSQL.AST.Delete.md): A `DELETE FROM ... [WHERE ...]` statement.
- [ExSQL.AST.DropIndex](ExSQL.AST.DropIndex.md): A `DROP INDEX [IF EXISTS] name` statement.
- [ExSQL.AST.DropTable](ExSQL.AST.DropTable.md): A `DROP TABLE [IF EXISTS] ...` statement.
- [ExSQL.AST.DropView](ExSQL.AST.DropView.md): A `DROP VIEW [IF EXISTS] name` statement.
- [ExSQL.AST.Insert](ExSQL.AST.Insert.md): An `INSERT` (or `REPLACE INTO`) statement.
- [ExSQL.AST.Pragma](ExSQL.AST.Pragma.md): A supported `PRAGMA` statement.
- [ExSQL.AST.Select](ExSQL.AST.Select.md): A `SELECT` statement.
- [ExSQL.AST.Update](ExSQL.AST.Update.md): An `UPDATE [OR ...] ... SET ... [WHERE ...]` statement.
- [ExSQL.AST.Values](ExSQL.AST.Values.md): A bare `VALUES (...), (...)` select. Output columns are named
`column1`..`columnN`, as in SQLite. Usable anywhere a SELECT is: as a
statement, a compound component, a subquery, or a FROM source.

- [ExSQL.AST.With](ExSQL.AST.With.md): A `WITH [RECURSIVE] cte_name [(cols)] AS (query) [, ...] <select>` statement.
- [ExSQL.Connection](ExSQL.Connection.md): A stateful database handle, holding an `ExSQL.Database` value in a GenServer.
- [ExSQL.Database](ExSQL.Database.md): An immutable in-memory database: a schema of named tables.
- [ExSQL.DateTime](ExSQL.DateTime.md): SQLite-compatible date/time scalar functions.
- [ExSQL.Executor](ExSQL.Executor.md): Statement execution against an `ExSQL.Database`.
- [ExSQL.FileFormat](ExSQL.FileFormat.md): Reads the SQLite on-disk file format (`btree.c` / `btreeInt.h` territory)
into an `ExSQL.Database` value.
- [ExSQL.Json](ExSQL.Json.md): The json1 function family's data layer: a JSON parser/renderer over an
order-preserving representation, plus path navigation (`$.a.b[0]`,
`$[#-1]`).
- [ExSQL.Log](ExSQL.Log.md): A logical redo log with an async writer, the BEAM-native answer to SQLite's
WAL + checkpoint.
- [ExSQL.Parser](ExSQL.Parser.md): Recursive-descent parser producing `ExSQL.AST` structs.
- [ExSQL.Registry](ExSQL.Registry.md): An in-VM "commit version" per database path.
- [ExSQL.Result](ExSQL.Result.md): The result of executing one statement.
- [ExSQL.SqlLogicTest](ExSQL.SqlLogicTest.md): A runner for SQLite's sqllogictest conformance corpus
(https://sqlite.org/sqllogictest) — the cross-engine suite of millions of
generated queries with stored results.
- [ExSQL.Table](ExSQL.Table.md): In-memory table storage.
- [ExSQL.Tokenizer](ExSQL.Tokenizer.md): Lexical analysis for SQL text.
- [ExSQL.Value](ExSQL.Value.md): SQLite's value semantics: storage classes, type affinity, comparison
ordering, arithmetic, and three-valued logic.
- [ExSQL.Vdbe](ExSQL.Vdbe.md): A small register virtual machine, in the spirit of SQLite's VDBE
(`vdbe.c`). `ExSQL.Executor` walks the AST directly; for the common
single-table scan/filter/project shape it instead compiles the statement to
a flat opcode program (see `ExSQL.Executor.compile_vdbe/3`) and runs it here,
avoiding the per-row environment construction and recursive expression
descent of the tree walker.

- Exceptions
  - [ExSQL.Error](ExSQL.Error.md): Exception raised (internally) and returned (externally) for SQL errors.

## Mix Tasks

- [mix exsql.slt](Mix.Tasks.Exsql.Slt.md): Runs SQLite's sqllogictest conformance corpus against ExSQL and reports a
score.

