Extensions
Add features to Postgres: every extension Sovaria offers and what it is for, turning extensions on and off, extensions that need a higher plan, and the ones that aren't available.


Extensions add types, functions and index types to Postgres: vectors for AI search, geography, fuzzy text matching, encryption. They are installed per project database and turned on per project.
In the console
- Schema › Extensions shows the extensions that are on, with their version, and those you can turn on, grouped by category. Search by name or purpose.
- Each row links to the extension's documentation.
- An extension your plan doesn't include shows Upgrade to … with the plan that has it.
- Turning one on from the console also works for extensions Postgres reserves for superusers (PostGIS,
pg_buffercache…): Sovaria creates them for you.
In the SQL editor, create extension if not exists pg_trgm; works for extensions that don't need a superuser.
Available extensions
| Extension | For | Read more |
|---|---|---|
vector (pgvector) | Embeddings and nearest-neighbour search with hnsw and ivfflat indexes | Vector search and embeddings |
pg_graphql | A GraphQL API over your tables at /graphql/v1 | Postgres clients and GraphQL |
pg_stat_statements | Statistics for every query: calls, time, rows; powers Query Performance | Performance |
pgcrypto | gen_random_bytes(), crypt() password hashes, pgp_sym_encrypt() | |
uuid-ossp | More UUID versions (gen_random_uuid() is built in without it) | |
pg_trgm | Similarity and fast ilike '%text%' with a gin index | Indexes |
unaccent, citext | Accent-insensitive search; case-insensitive text columns (emails) | |
fuzzystrmatch | Sound-alike and edit-distance matching (levenshtein, soundex) | |
btree_gin, btree_gist | Plain columns in gin/gist indexes; exclusion constraints on ranges | |
hstore, ltree | Key-value columns; tree paths like shop.books.fiction | |
intarray, tablefunc, isn, seg, bloom | Integer array operators, crosstab pivots, ISBN/EAN types, intervals, bloom indexes | |
dict_int, dict_xsyn | Extra full-text search dictionaries (numbers, synonyms) | |
tsm_system_rows, tsm_system_time | Random samples of a big table with tablesample | |
postgis | Geography types, spatial indexes and functions: distance, within, intersects | |
cube, earthdistance | Great-circle distance without PostGIS | |
pgrowlocks, pgstattuple, pg_buffercache, pg_prewarm | Inspect locks, table bloat and the cache; warm the cache after a restart | Performance |
Which of these each plan includes:
| Free | Pro | Ultra | Team | Enterprise | |
|---|---|---|---|---|---|
| Database extensions | Standard | All | All | All | All custom |
Examples
create extension if not exists pg_trgm;
create index products_name_trgm_idx on products using gin (name gin_trgm_ops);
select id, name, similarity(name, 'iphon') as score
from products
where name % 'iphon'
order by score desc
limit 10;Turning an extension off
Turning an extension off drops its types and functions. Postgres refuses while a column, index or function of yours still uses them; remove those first or use drop extension … cascade in the SQL editor, which also drops the columns and indexes that depend on it. Take a backup first (Backups and recovery).
Not offered
dblink,postgres_fdw,file_fdwand other extensions that reach the network or the server's files: each project's database stays isolated. Use Edge Functions to combine data from other systems.pg_cron: use function schedules (Event triggers), which have retries and logs.- Languages other than SQL and PL/pgSQL (
plpython3u,plv8): write that code as an Edge Function.
Coming from Firebase or Supabase?
| Platform | What this is called there |
|---|---|
| Supabase | Supabase Postgres Extensions |
| Sovaria | Extensions |
Moving an existing app? Migrate from Supabase or Firebase imports users (with their passwords), data, files and rules.