Gestion des extensions PostgreSQL
Dans PostgreSQL, les extensions sont des modules qui fournissent des fonctions, des opérateurs ou des types supplémentaires. De nombreuses extensions sont disponibles dans IBM Cloud® Databases for PostgreSQL. Pour les utiliser, définissez le mot de passe administrateur de votre service, puis utilisez psql pour vous connecter.
Liste des extensions installées
Affichez la liste de toutes les extensions installées sur une base de données à l'aide de la commande \dx.
Par exemple, lorsqu'elle est exécutée sur la base de données par défaut Databases for PostgreSQL, la commande \dx affiche uniquement l'extension qui est installée.
ibmclouddb=> \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Installation des extensions
Pour installer une extension sur une base de données, utilisez CREATE EXTENSION. Par exemple, pour installer pg_stat_statements sur la base ibmclouddb de données, utilisez la commande suivante :
ibmclouddb=> CREATE EXTENSION pg_stat_statements;
CREATE EXTENSION
Les extensions sont installées dans le schéma ibm_extension en lecture seule. Le schéma faisant partie de search_path, les objets d'extension n'ont pas besoin d'être qualifiés avec un schéma. Le remplacement du schéma
public par le schéma ibm_extension est nécessaire pour protéger la sécurité et l'intégrité de vos données.
Si vous exécutez la commande \dx après avoir installé une extension, celle-ci apparaît dans le tableau.
ibmclouddb=> \dx
List of installed extensions
Name | Version | Schema | Description
--------------------+---------+---------------+------------------------------------------------------------------------
pg_stat_statements | 1.10 | ibm_extension | track planning and execution statistics of all SQL statements executed
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(2 rows)
Les extensions de base de données dans PostgreSQL sont gérées par base de données. Si vous disposez de plusieurs bases de données sur lesquelles vous devez installer une extension, exécutez la commande CREATE sur chacune d'entre
elles.
Mise à niveau des extensions
Pour répertorier les extensions de la base de données actuelle pour lesquelles une version plus récente est disponible, exécutez la requête suivante :
SELECT e.extname, e.extversion AS installed_version, a.default_version AS available_version
FROM pg_catalog.pg_extension AS e
JOIN pg_catalog.pg_available_extensions AS a ON a.name = e.extname
WHERE e.extversion <> a.default_version;
Pour mettre à jour une extension, exécutez la commande ALTER EXTENSION dans chaque base de données où l'extension est installée :
ALTER EXTENSION <extension_name> UPDATE;
Les extensions suivantes nécessitent une procédure différente :
- Pour mettre à jour l'extension
pg_repack, exécutezDROP EXTENSION pg_repack;puis dansCREATE EXTENSION pg_repack;chaque base de données qui l'utilise. - PostgreSQL Anonymizer (
anon) ne prend pas en chargeALTER EXTENSION ... UPDATE. Pour le mettre à niveau, consultez la section Mise à niveau d' PostgreSQL Anonymizer. - La mise à jour de la version 3.x entraîne
pgRoutingle passage à la version 4.0, qui supprime plusieurs fonctions. Avant de procéder à la mise à jour, consultezpgRouting.
Remarques spécifiques d'une extension
pg_repack
-
Lorsque vous exécutez la commande
pg_repack, passez l'option -k pour contourner la vérification des droits de superutilisateur. Voir l'exemple suivant :pg_repack -k [OPTION]... [DBNAME] -
Tout utilisateur peut exécuter
pg_repack, mais la commande peut uniquement traiter une table sur laquelle il dispose de droits d'accès. -
La commande
pg_repackdoit mettre en place un verrou exclusif sur les objets qu'elle réorganise à la fin de cette opération. Si elle ne peut pas obtenir ce verrou après un certain temps, elle annule toutes les requêtes en conflit. Si elle n'y parvient pas, la réorganisation échoue. Par défaut, seul l'utilisateur admin est en mesure d'annuler les requêtes en conflit. Pour permettre à d'autres utilisateurs de la base de données d'annuler des requêtes, attribuez-leur le rôlepg_signal_backendà partir du compte administrateur.
pgaudit
- Le service charge la bibliothèque
pgauditau démarrage. Vous ne pouvez pas créer l'extensionpgaudit; par conséquent, les entrées DDL dans les journaux d'audit n'incluent ni le type ni le nom de l'objet. Pour activer les journauxpgaudit, consultez la section Journalisation avecpgaudit.
pgvector
- Pour ajouter l'extension
pgvectorà votre déploiement, utilisez la commandecreate extension vector. - Important :
pgvectornécessite la version 15 ou supérieure de PostgreSQL.
Extensions disponibles
Voir la liste suivante de toutes les extensions disponibles. Pour obtenir la liste des extensions disponibles sur votre déploiement, utilisez SELECT name FROM pg_available_extensions; dans psql.
ibmclouddb=> SELECT name FROM pg_available_extensions order by 1;
name
------------------------------
address_standardizer
address_standardizer_data_us
amcheck
autoinc
bloom
btree_gin
btree_gist
citext
cube
dblink
dict_int
dict_xsyn
earthdistance
file_fdw
fuzzystrmatch
hstore
insert_username
intagg
intarray
isn
lo
ltree
moddatetime
old_snapshot
pageinspect
pg_buffercache
pg_freespacemap
pg_prewarm
pg_repack
pg_stat_statements
pg_surgery
pg_trgm
pg_visibility
pg_walinspect
pgaudit
pgcrypto
pgrouting
pgrowlocks
pgstattuple
plpgsql
postgis
postgis_raster
postgis_tiger_geocoder
postgis_topology
postgres_fdw
refint
seg
sslinfo
tablefunc
tcn
tsm_system_rows
tsm_system_time
unaccent
uuid-ossp
xml2
(55 rows)
ibmclouddb=> select version();
version
----------------------------------------------------------------------------------------------------------
PostgreSQL 16.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-2), 64-bit
(1 row)