CREATE EXTENSION în PostgreSQL

Extensii și pgvector PostgreSQL 9.1+

Activează o extensie (pg_trgm, pgcrypto, vector, postgis) în baza de date curentă: tipuri, funcții și operatori noi.

Sintaxă SQL
CREATE EXTENSION [IF NOT EXISTS] nume [WITH] [SCHEMA schema] [VERSION 'versiune'] [CASCADE];
ALTER EXTENSION nume UPDATE [TO 'versiune'];
DROP EXTENSION [IF EXISTS] nume [CASCADE];

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 în magazin. Extensiile se activează separat în fiecare bază de date.
  • Rulezi CREATE EXTENSION fără drepturi suficiente. Multe extensii cer superuser sau proprietarul bazei de date (cele marcate „trusted” pot fi instalate de utilizatori cu dreptul CREATE pe baza de date).

Comenzi înrudite