Ce face CREATE EXTENSION
O extensie este un pachet de obiecte SQL (tipuri, funcții, operatori, indecși) instalat dintr-o singură comandă. Unele vin cu PostgreSQL (pg_trgm, pgcrypto, hstore, postgres_fdw, pg_stat_statements), altele se instalează separat pe server (vector pentru pgvector, postgis).
Fișierele extensiei trebuie să existe pe serverul PostgreSQL (de exemplu pachetul postgresql-18-pgvector pe Debian/Ubuntu). CREATE EXTENSION o activează doar în baza de date în care rulezi comanda.
Extensiile disponibile se văd în pg_available_extensions, cele instalate cu \dx în psql. După actualizarea pachetului pe server, rulează ALTER EXTENSION ... UPDATE în fiecare bază de date.
Parametri
| Parametru | Descriere |
|---|---|
IF NOT EXISTS |
Nu dă eroare dacă extensia este deja instalată. |
SCHEMA |
Schema în care se creează obiectele extensiei. |
CASCADE |
Instalează automat și extensiile de care depinde. |
Ce returnează
Mesajul CREATE EXTENSION.
Exemple
Exemplul 1: Activarea unor extensii uzuale
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE EXTENSION IF NOT EXISTS pg_trgm;
Rezultat în psql
CREATE EXTENSION
CREATE EXTENSION
NOTICE: extension "pg_trgm" already exists, skipping
CREATE EXTENSION
Exemplul 2: Ce extensii sunt disponibile și ce versiune au
SELECT name, default_version, installed_version
FROM pg_available_extensions
WHERE name IN ('pg_trgm', 'pgcrypto', 'vector', 'postgis')
ORDER BY name;
Rezultat în psql (versiunile diferă de la un server la altul)
name | default_version | installed_version
----------+-----------------+-------------------
pg_trgm | 1.6 | 1.6
pgcrypto | 1.3 | 1.3
vector | 0.8.1 |
(3 rows)
Exemplul 3: Extensie care nu este instalată pe server
CREATE EXTENSION postgis;
Rezultat în psql
ERROR: extension "postgis" is not available
DETAIL: Could not open extension control file "/usr/share/postgresql/18/extension/postgis.control": No such file or directory.
HINT: The extension must first be installed on the system where PostgreSQL is running.
Greșeli frecvente
- Instalezi extensia în baza de date
postgresși o cauți înmagazin. Extensiile se activează separat în fiecare bază de date. - Rulezi
CREATE EXTENSIONfără drepturi suficiente. Multe extensii cer superuser sau proprietarul bazei de date (cele marcate „trusted” pot fi instalate de utilizatori cu dreptulCREATEpe baza de date).
Comenzi înrudite
pgvector: tipul vector și operatorii de distanță: Extensia pgvector salvează vectori (embedding-uri) în PostgreSQL și găsește cele mai apropiate rânduri: baza căutării semantice și a aplicațiilor RAG.