Skip to content
Discord Get Started

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.

ExtensionWhat it doesDocs
fs9Query, read, and write the database filesystem from SQLfs9 reference
parquetRead Parquet files from the filesystem or HTTP URLs into SQL tablesParquet import
ExtensionWhat it doesDocs
vectorpgvector-compatible similarity search with HNSW indexesVector Search
embeddingServer-side text embedding via EMBEDDING() and EMBED_TEXT() — no external API neededVector Search
Full-Text SearchPostgreSQL-compatible full-text search with language tokenizersFull-Text Search
zhparserChinese full-text search tokenizer (jieba-rs, always available)Full-Text Search
ExtensionWhat it doesDocs
httpMake HTTP requests from SQL (GET, POST, PUT, DELETE as table functions)HTTP client
pg_cronSchedule SQL statements to run on a cron expressionpg_cron
ExtensionWhat it doesDocs
uuid-osspUUID generation functions (uuid_generate_v4(), etc.)uuid-ossp
hstorePostgreSQL-compatible key-value store typehstore

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:

SQL
-- Already enabled — no CREATE EXTENSION needed
SELECT * 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 cron schema)

These extensions must be explicitly enabled before their functions are available:

SQL
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 vector type, operators (<->, <#>, <=>), and HNSW indexes work as built-ins. CREATE EXTENSION vector is recommended so ORMs that check pg_extension see it as installed.
  • uuid-ossp — UUID functions (uuid_generate_v4(), etc.) are built-in. CREATE EXTENSION "uuid-ossp" records metadata for pg_dump/pg_restore compatibility.
  • hstore — Extension metadata is recorded for client compatibility. DB9 does not currently implement full hstore semantics.
  • zhparser — The Chinese full-text tokenizer is compiled in and always active. CREATE EXTENSION zhparser is accepted but has no effect.

Extensions install their functions into specific schemas:

ExtensionDefault schemaAccess pattern
httpextensionsextensions.http_get(...) or http_get(...) if extensions is on search_path
fs9extensionsextensions.fs9_read(...) or set search_path
embeddingextensionsextensions.embedding(...)
parquetextensionsextensions.read_parquet(...)
pg_croncroncron.schedule(...), cron.unschedule(...)
vectorpublicOperators and type available directly
uuid-ossppublicuuid_generate_v4() available directly
hstorepublicType available directly
I want to…Use
Store and search vector embeddingsvector + embedding
Build a RAG pipeline without external APIsembedding + fs9
Call an external API from SQLhttp
Query files on the database filesystemfs9
Import Parquet dataparquet
Schedule a recurring cleanup or reportpg_cron
Search text contentFull-Text Search
Generate UUIDsuuid-ossp