Extensions
DB9 ships all extensions compiled into the server binary. There is no runtime dynamic loading — every extension is available immediately, and CREATE EXTENSION records install metadata per database.
Extensions by Task
Section titled “Extensions by Task”Files and Data
Section titled “Files and Data”| Extension | What it does | Docs |
|---|---|---|
| fs9 | Query, read, and write the database filesystem from SQL | fs9 reference |
| parquet | Read Parquet files from the filesystem or HTTP URLs into SQL tables | Parquet import |
Search
Section titled “Search”| Extension | What it does | Docs |
|---|---|---|
| vector | pgvector-compatible similarity search with HNSW indexes | Vector Search |
| embedding | Server-side text embedding via EMBEDDING() and EMBED_TEXT() — no external API needed | Vector Search |
| Full-Text Search | PostgreSQL-compatible full-text search with language tokenizers | Full-Text Search |
| zhparser | Chinese full-text search tokenizer (jieba-rs, always available) | Full-Text Search |
Integration and Automation
Section titled “Integration and Automation”| Extension | What it does | Docs |
|---|---|---|
| http | Make HTTP requests from SQL (GET, POST, PUT, DELETE as table functions) | HTTP client |
| pg_cron | Schedule SQL statements to run on a cron expression | pg_cron |
Compatibility
Section titled “Compatibility”| Extension | What it does | Docs |
|---|---|---|
| uuid-ossp | UUID generation functions (uuid_generate_v4(), etc.) | uuid-ossp |
| hstore | PostgreSQL-compatible key-value store type | hstore |
Enabling Extensions
Section titled “Enabling Extensions”Most extensions require CREATE EXTENSION before use. A few are pre-enabled or always available.
Pre-enabled (available on every new database)
Section titled “Pre-enabled (available on every new database)”These extensions are installed automatically when a database is created:
-- Already enabled — no CREATE EXTENSION neededSELECT * FROM http_get('https://httpbin.org/get');SELECT cron.schedule('nightly', '0 3 * * *', 'VACUUM');- http — HTTP client functions available immediately
- pg_cron — Cron scheduling available immediately (functions in the
cronschema)
Require CREATE EXTENSION
Section titled “Require CREATE EXTENSION”These extensions must be explicitly enabled before their functions are available:
CREATE EXTENSION fs9;CREATE EXTENSION embedding;CREATE EXTENSION parquet;Metadata shims (built-in, CREATE EXTENSION optional)
Section titled “Metadata shims (built-in, CREATE EXTENSION optional)”These capabilities work without CREATE EXTENSION, but running it records metadata in pg_extension for ORM and tool compatibility:
- vector — The
vectortype, operators (<->,<#>,<=>), and HNSW indexes work as built-ins.CREATE EXTENSION vectoris recommended so ORMs that checkpg_extensionsee it as installed. - uuid-ossp — UUID functions (
uuid_generate_v4(), etc.) are built-in.CREATE EXTENSION "uuid-ossp"records metadata forpg_dump/pg_restorecompatibility. - hstore — Extension metadata is recorded for client compatibility. DB9 does not currently implement full hstore semantics.
Always available (no-op)
Section titled “Always available (no-op)”- zhparser — The Chinese full-text tokenizer is compiled in and always active.
CREATE EXTENSION zhparseris accepted but has no effect.
Extension Schemas
Section titled “Extension Schemas”Extensions install their functions into specific schemas:
| Extension | Default schema | Access pattern |
|---|---|---|
| http | extensions | extensions.http_get(...) or http_get(...) if extensions is on search_path |
| fs9 | extensions | extensions.fs9_read(...) or set search_path |
| embedding | extensions | extensions.embedding(...) |
| parquet | extensions | extensions.read_parquet(...) |
| pg_cron | cron | cron.schedule(...), cron.unschedule(...) |
| vector | public | Operators and type available directly |
| uuid-ossp | public | uuid_generate_v4() available directly |
| hstore | public | Type available directly |
Choosing the Right Extension
Section titled “Choosing the Right Extension”| I want to… | Use |
|---|---|
| Store and search vector embeddings | vector + embedding |
| Build a RAG pipeline without external APIs | embedding + fs9 |
| Call an external API from SQL | http |
| Query files on the database filesystem | fs9 |
| Import Parquet data | parquet |
| Schedule a recurring cleanup or report | pg_cron |
| Search text content | Full-Text Search |
| Generate UUIDs | uuid-ossp |
Related Docs
Section titled “Related Docs”- Architecture — how extensions fit into the DB9 server
- SQL Reference — SQL engine compatibility and features
- RAG with Built-in Embeddings — end-to-end tutorial using
embedding()and vector search - Analyze Agent Logs with fs9 — tutorial: write and query agent logs from SQL
- HTTP from SQL — tutorial: call APIs, webhooks, and enrich data from SQL
- Scheduled Jobs with pg_cron — tutorial: periodic tasks, monitoring, and job management
- Agent Workflows — extensions in agent pipelines
- CLI Reference —
db9 db sqlfor running extension commands