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 d'administrateur pour votre service et utilisez-le pour se connecter à psql.

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 de données ibmclouddb, 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.5     | ibm_extension | track 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 devez installer une extension sur plusieurs bases de données, exécutez la commande « CREATE » sur chacune d'entre elles.

Mise à niveau des extensions

Si une extension existe dans une version plus récente que celle que vous avez installée, utilisez la commande ALTER EXTENSION pour effectuer une mise à niveau.

Lors de la mise à jour de l'extension pg_repack en particulier, supprimez l'ancienne version de la base de données et installez la nouvelle version.

Remarques spécifiques d'une extension

pg_repack

  • Documentation 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]
    
  • Pour que la commande pg_repack s'exécute correctement, vous devez exécuter votre déploiement sur PostgreSQL version 9.6 ou ultérieure.

  • 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_repack doit 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 sur PostgreSQL 9.6 et version ultérieure peut annuler des requêtes en conflit. Pour exposer la possibilité d'annuler des requêtes à d'autres utilisateurs de base de données, accordez le rôle pg_signal_backend à l'administrateur.

pgaudit

  • pgaudit Les bibliothèques sont préchargées et ne nécessitent pas l'exécution de la commande « create extension pgaudit ». Pour plus d'informations, consultez la section « Journalisation avec pgAudit » afin d'activer les journaux d' pgaudit.

pgvecteur

  • Pour ajouter l'extension pgvector à votre déploiement, utilisez la commande create extension vector.
  • Important : pgvector né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)