Hologres prend en charge un ensemble d'extensions intégrées qui enrichissent les capacités de votre base de données, du calcul vectoriel et de l'analyse spatiale à la gestion des autorisations et au masquage des données. Cette rubrique répertorie toutes les extensions prises en charge et explique comment les charger, les consulter et les désinstaller.
Extensions prises en charge | Charger une extension | Consulter les extensions chargées | Désinstaller une extension | FAQ
Limites
Une extension ne peut être chargée que dans un seul schéma par base de données. Par exemple, si vous chargez une extension dans le schéma par défaut, vous ne pourrez pas la charger dans un autre schéma de cette même base de données.
Chargez une extension dans le schéma système
pg_catalogpour la rendre disponible dans tous les schémas de la base de données. Si aucun schéma n'est spécifié, l'extension est chargée par défaut dans le schémapublic.Seuls les comptes disposant des autorisations Superuser peuvent charger ou désinstaller des extensions.
Actuellement, seules les extensions système intégrées sont prises en charge. Les extensions personnalisées ou externes ne peuvent pas être chargées.
Extensions prises en charge
| Extension | Description | Contrainte de schéma | Commande de chargement |
|---|---|---|---|
spm, slpm | Active le modèle d'autorisations simples (SPM) ou le modèle d'autorisations simples au niveau du schéma (SLPM). Consultez Utiliser le SPM et Utiliser le SLPM. | Chargée par défaut dans le schéma hologres. Le schéma ne peut pas être modifié. | CREATE EXTENSION IF NOT EXISTS spm; |
hive_compatible | Ajoute la fonction get_json_object(). Consultez Fonctions JSON. | Doit être chargée dans pg_catalog. | CREATE EXTENSION IF NOT EXISTS hive_compatible SCHEMA pg_catalog; |
hologres_fdw | Active les requêtes inter-bases de données (bêta). Consultez Requêtes inter-bases de données. | Instances dédiées uniquement. Doit être chargée dans pg_catalog. | CREATE EXTENSION IF NOT EXISTS hologres_fdw SCHEMA pg_catalog; |
dlf_fdw | Lit les données OSS via DLF (Data Lake Formation). Consultez Accélérer l'accès aux lacs de données OSS avec DLF. | Doit être chargée dans pg_catalog. | CREATE EXTENSION IF NOT EXISTS dlf_fdw SCHEMA pg_catalog; |
proxima | Active le calcul vectoriel Proxima. Consultez Calcul vectoriel Proxima. | Instances dédiées uniquement. Doit être chargée dans pg_catalog. | CREATE EXTENSION IF NOT EXISTS proxima SCHEMA pg_catalog; |
flow_analysis | Ajoute des fonctions de segmentation utilisateur et d'analyse en entonnoir. Consultez Fonctions d'entonnoir et Fonctions de segmentation utilisateur. | Chargée par défaut dans le schéma public. Ne peut être chargée que dans public. | CREATE EXTENSION IF NOT EXISTS flow_analysis; |
roaringbitmap | Ajoute des fonctions Roaring Bitmap (RB). Consultez Fonctions RoaringBitmap. | Instances dédiées uniquement. Chargée par défaut dans le schéma public. Ne peut être chargée que dans public. | CREATE EXTENSION IF NOT EXISTS roaringbitmap; |
hg_binlog | Permet la consommation des données Binlog Hologres. Consultez Consommer les données Binlog Hologres avec JDBC. | Instances dédiées uniquement. Chargée par défaut dans le schéma hologres. Le schéma ne peut pas être modifié. | CREATE EXTENSION IF NOT EXISTS hg_binlog; |
postgis | Ajoute des fonctions spatiales PostGIS. Consultez Fonctions spatiales PostGIS. | Instances dédiées uniquement. Doit être chargée dans pg_catalog. | CREATE EXTENSION IF NOT EXISTS postgis SCHEMA pg_catalog; |
clickhouse | Ajoute des fonctions compatibles ClickHouse pour la migration. Consultez Importer des données depuis ClickHouse. | Instances dédiées uniquement. Chargée par défaut dans le schéma public. Ne peut être chargée que dans public. | CREATE EXTENSION IF NOT EXISTS clickhouse; |
pgcrypto | Ajoute la fonction GEN_RANDOM_UUID. Consultez Fonctions de données aléatoires. | Doit être chargée dans pg_catalog. | CREATE EXTENSION IF NOT EXISTS pgcrypto SCHEMA pg_catalog; |
bsi | Ajoute des fonctions Bit Slice Index (BSI). Consultez Fonctions BSI. | Chargée par défaut dans le schéma public. Ne peut être chargée que dans public. | CREATE EXTENSION IF NOT EXISTS bsi; |
hg_anon | Active le masquage des données. Consultez Masquage des données. | Ne peut être chargée que dans pg_catalog. | CREATE EXTENSION IF NOT EXISTS hg_anon SCHEMA pg_catalog; |
mysql_compatible | Ajoute des fonctions compatibles MySQL. Consultez Fonctions compatibles MySQL. | Chargée par défaut dans le schéma hologres. Le schéma ne peut pas être modifié. | CREATE EXTENSION IF NOT EXISTS mysql_compatible; |
Charger une extension
Le chargement d'une extension dans pg_catalog la rend disponible dans tous les schémas de la base de données. Si vous chargez une extension dans un autre schéma, ses fonctions ne sont accessibles que via le search_path de ce schéma.
Certaines extensions ne peuvent être chargées que dans un schéma spécifique. Vérifiez la colonne Schema constraint du tableau ci-dessus avant d'exécuter la commande de chargement.
-- Requires Superuser permissions
CREATE EXTENSION IF NOT EXISTS <extension_name> SCHEMA <schema_name>;
| Paramètre | Description |
|---|---|
extension_name |
Nom de l'extension. Consultez le tableau des extensions prises en charge pour connaître les valeurs valides. |
schema_name |
Schéma dans lequel charger l'extension. Utilisez pg_catalog pour une disponibilité dans toute la base de données. La valeur par défaut est public si ce paramètre est omis. |
Exemple : Chargez l'extension postgis dans pg_catalog :
CREATE EXTENSION IF NOT EXISTS postgis SCHEMA pg_catalog;
Consulter les extensions chargées dans la base de données actuelle
Exécutez la requête suivante pour répertorier toutes les extensions chargées dans la base de données actuelle, y compris celles chargées par défaut :
SELECT
e.extname AS "Name",
e.extversion AS "Version",
n.nspname AS "Schema",
c.description AS "Description"
FROM
pg_catalog.pg_extension e
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = e.extnamespace
LEFT JOIN pg_catalog.pg_description c ON c.objoid = e.oid
AND c.classoid = 'pg_catalog.pg_extension'::pg_catalog.regclass
ORDER BY 1;
Désinstaller une extension
N'utilisez pas DROP EXTENSION <extension_name> CASCADE. L'option CASCADE supprime tous les objets dépendant de l'extension, y compris les données PostGIS, RoaringBitmap, Proxima, Binlog et BSI, ainsi que les métadonnées, les tables, les vues et les données serveur.
-- Requires Superuser permissions
DROP EXTENSION <extension_name>;
| Paramètre | Description |
|---|---|
extension_name |
Nom de l'extension à désinstaller. Consultez le tableau des extensions prises en charge pour connaître les valeurs valides. |
Exemple : Interroger une extension entre plusieurs schémas
Certaines extensions, telles que roaringbitmap, ne peuvent être chargées que dans le schéma public. Si votre table se trouve dans un schéma différent, l'appel d'une fonction RB sans préfixe de schéma échoue avec l'erreur function xxx does not exist. Pour résoudre ce problème, ajoutez le préfixe public. à la fonction.
L'exemple suivant illustre le problème et sa solution.
-
Créez une table dans un schéma autre que
publicet remplissez-la avec des données.CREATE EXTENSION roaringbitmap; CREATE SCHEMA test; -- Create a table in the test schema CREATE TABLE test.t1 ( id integer, bitmap roaringbitmap ); -- Insert a bitmap from an array INSERT INTO test.t1 SELECT 1, RB_BUILD(ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 200]); -- Insert a bitmap aggregated from a series INSERT INTO test.t1 SELECT 2, RB_BUILD_AGG(e) FROM GENERATE_SERIES(1, 100) e; -
Interrogez à l'aide d'une fonction RB alors que
search_pathest défini surpublic. La requête aboutit.SELECT RB_OR(a.bitmap, b.bitmap) FROM (SELECT bitmap FROM test.t1 WHERE id = 1) AS a, (SELECT bitmap FROM test.t1 WHERE id = 2) AS b; -
Basculez
search_pathvers le schématestet exécutez la même requête. La requête échoue.SET search_path TO test; SELECT RB_OR(a.bitmap, b.bitmap) FROM (SELECT bitmap FROM test.t1 WHERE id = 1) AS a, (SELECT bitmap FROM test.t1 WHERE id = 2) AS b; -- ERROR: function rb_or(public.roaringbitmap, public.roaringbitmap) does not exist -
Ajoutez le préfixe
public.à la fonction pour l'appeler depuis le schéma correct.SELECT public.RB_OR(a.bitmap, b.bitmap) FROM (SELECT bitmap FROM test.t1 WHERE id = 1) AS a, (SELECT bitmap FROM test.t1 WHERE id = 2) AS b;
FAQ
Une extension a été chargée dans le mauvais schéma. Après avoir changé de schéma, ses fonctions sont inaccessibles et renvoient l'erreur function xxx does not exist.
Ce problème survient lorsqu'une extension est chargée dans le schéma public mais que le search_path actif n'inclut plus public. Désinstallez l'extension sans utiliser CASCADE, puis rechargez-la dans pg_catalog pour la rendre accessible depuis tous les schémas :
DROP EXTENSION hologres_fdw;
CREATE EXTENSION IF NOT EXISTS hologres_fdw SCHEMA pg_catalog;