# Feature catalog — sqlite/sqlite

> Canonical page: https://codevetter.com/unpack/sqlite/feature-catalog

# Feature catalog — sqlite/sqlite

Scanned commit fde3a84dddf35f4c19797c8afad04a44c596f4d8 (2026-09-21). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

User-facing surface splits three ways: the C API in `sqlite.h.in`, the `sqlite3` CLI's dot-command language, and the loadable/compiled-in extension set. The CLI carries roughly 40 dot-commands covering schema inspection, import/export, archives, diagnostics, and integrity checking, plus 23 result-output modes now rendered by the new `ext/qrf` formatting library. Extensions add full-text search, spatial indexing, changeset/session replication, incremental update (RBU), corruption recovery, index recommendation, and a large `ext/misc/` grab-bag of 60 single-file functions and virtual tables. Configure-time feature flags (`--all` implies fts4, fts5, rtree, geopoly, session, dbpage, dbstat, carray) decide what lands in the amalgamation.
- `do_meta_command()` (`src/shell.c.in:9947`) dispatches ~40 dot-commands including `.archive`, `.auth`, `.clone`, `.dump`, `.eqp`, `.expert`, `.explain`, `.filectrl`, `.fullschema`, `.import`, `.imposter`, `.intck`, `.iotrace`, `.load`, `.log`, `.mode`, `.open`, `.recover`, `.schema`, `.session`, `.stats`, `.vfsinfo`, `.vfslist`, `.vfsname` and `.wheretrace`. — [src/shell.c.in#L9947-L10060](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L9947-L10060)
- The shell supports 23 output modes enumerated in the `aModeInfo[]` table at `src/shell.c.in:618` — ascii, box, c, column, count, csv, html, insert, jatom, jobject, json, line, list, markdown, off, psql, qbox, quote, split, table, tabs, tcl, www — each mapping to a QRF style plus separator/quoting/alignment settings. — [src/shell.c.in#L618-L658](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L618-L658)
- Result formatting was factored out into a new library `ext/qrf/` (headed `2025-10-20`) whose `sqlite3_qrf_spec` struct carries style, escaping, quoting, word-wrap, column widths, alignment, screen width and `xRender`/`xWrite` callbacks; `shell_exec()` copies `pArg->mode.spec` into a local spec and installs `shellWriteQR` as the writer. — [ext/qrf/qrf.h#L1-L60](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/qrf/qrf.h#L1-L60) [src/shell.c.in#L3807-L3845](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L3807-L3845)
- `open_db()` auto-registers a fixed extension set on every connection: sha/shathree, uint, stmtrand, decimal, base64, base85, regexp, ieee754, series, diskused, strdup, and (outside the WASM fiddle build) fileio and completion; zipfile and sqlar are added when `SQLITE_HAVE_ZLIB` is defined and safe mode is off. — [src/shell.c.in#L5155-L5182](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L5155-L5182)
- The shell can open databases in four modes chosen by `deduceDatabaseType()` — normal file, append-VFS (`apndvfs`), ZIP archive (opened as `:memory:`), and hex-dump/deserialize — with `~/` expanded against `$HOME` when the literal path does not exist. — [src/shell.c.in#L5069-L5130](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L5069-L5130)
- FTS5 is a full subsystem of 15 C files (`fts5_index.c`, `fts5_expr.c`, `fts5_storage.c`, `fts5_tokenize.c`, `fts5_vocab.c`, …) exposing a public `fts5_api` struct with `xCreateTokenizer`, `xCreateTokenizer_v2` and `xCreateFunction` for third-party tokenizers and auxiliary ranking functions. — [ext/fts5/fts5.h#L350-L360](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/fts5/fts5.h#L350-L360) [ext/fts5/fts5.h#L696-L735](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/fts5/fts5.h#L696-L735) [ext/fts5/fts5_index.c](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/fts5/fts5_index.c)
- The session extension implements changeset capture and replay: `sqlite3session_create`, `sqlite3session_attach`, `sqlite3session_changeset` (plus `_strm` streaming variants) and three generations of apply APIs — `sqlite3changeset_apply`, `_apply_v2`, `_apply_v3` — each with streaming counterparts. — [ext/session/sqlite3session.c#L2362-L2480](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/session/sqlite3session.c#L2362-L2480) [ext/session/sqlite3session.c#L3213-L3240](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/session/sqlite3session.c#L3213-L3240) [ext/session/sqlite3session.c#L5882-L6020](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/session/sqlite3session.c#L5882-L6020)
- Database recovery is a first-class feature: `ext/recover/sqlite3recover.c` plus `dbdata.c` implement the `.recover` dot-command by walking raw pages of a corrupt file, and are compiled into the CLI via `INCLUDE` directives. — [ext/recover/sqlite3recover.c](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/recover/sqlite3recover.c) [ext/recover/dbdata.c](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/recover/dbdata.c) [src/shell.c.in#L323-L326](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L323-L326)
- The `.expert` command exposes `ext/expert/sqlite3expert.c`, which analyzes a query workload and recommends indexes; `shell_exec()` short-circuits to `expertHandleSQL()` whenever `pArg->expert.pExpert` is active. — [ext/expert/sqlite3expert.c](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/expert/sqlite3expert.c) [src/shell.c.in#L3845-L3850](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L3845-L3850) [src/shell.c.in#L307-L308](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L307-L308)
- `.intck` runs the incremental integrity-check library `ext/intck/sqlite3intck.c`, an alternative to `PRAGMA integrity_check` that can be run in bounded steps; it ships with its own six-file test suite. — [ext/intck/sqlite3intck.c](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/intck/sqlite3intck.c) [ext/intck/intck1.test](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/intck/intck1.test) [src/shell.c.in#L310-L311](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L310-L311)
- `ext/misc/` holds 60 single-file extensions (series, regexp, fileio, decimal, base64/base85, uint, sha1/shathree, appendvfs, vfstrace, zipfile, sqlar, completion, memtrace, pcachetrace, diskused, …), most of which are excluded from the core amalgamation but compiled into the CLI. — [ext/misc/fileio.c](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/misc/fileio.c) [ext/misc/series.c](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/misc/series.c) [ext/misc/vfstrace.c](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/ext/misc/vfstrace.c) [src/shell.c.in#L285-L315](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L285-L315)
- In-memory serialization is a supported API path: `sqlite3_serialize()` (`src/memdb.c:750`) and `sqlite3_deserialize()` (`src/memdb.c:841`) move whole database images in and out of process memory, which is also what the shell's hex-db/deserialize open mode relies on. — [src/memdb.c#L750-L860](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/memdb.c#L750-L860) [src/shell.c.in#L5113-L5118](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/shell.c.in#L5113-L5118)
- Online backup is exposed through `sqlite3_backup_init`/`_step`/`_finish` in `src/backup.c`, and the pager cooperates by calling `sqlite3BackupRestart()` when a commit would invalidate an in-progress backup. — [src/backup.c#L141](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/backup.c#L141) [src/backup.c#L325](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/backup.c#L325) [src/backup.c#L598](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/backup.c#L598) [src/pager.c#L6554-L6558](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/src/pager.c#L6554-L6558)
- Feature selection is exposed as configure flags declared in `autosetup/sqlite-config.tcl`: `--threadsafe`, `--load-extension`, `--math`, `--json`, `--memsys3/5`, `--fts3/4/5`, `--rtree`, `--geopoly`, `--session`, `--dbpage`, `--dbstat`, `--carray`, `--update-limit`, `--column-metadata`, with `--all` expanding to `{fts4 fts5 rtree geopoly session dbpage dbstat carray}`. — [autosetup/sqlite-config.tcl#L60-L72](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/autosetup/sqlite-config.tcl#L60-L72) [autosetup/sqlite-config.tcl#L205-L240](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/autosetup/sqlite-config.tcl#L205-L240)
- `sqlite3_rsync` is a network-facing feature: it syncs a live database between a local path and a `USER@HOST:PATH` remote, with `--ssh`, `--port`, `--exe`, `--protocol` and `--wal-only` options. — [tool/sqlite3_rsync.c#L23-L40](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/tool/sqlite3_rsync.c#L23-L40) [tool/sqlite3_rsync.c#L2058-L2120](https://github.com/sqlite/sqlite/blob/fde3a84dddf35f4c19797c8afad04a44c596f4d8/tool/sqlite3_rsync.c#L2058-L2120)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
