Hologres admite un conjunto de extensiones integradas que agregan capacidades especializadas a su base de datos, desde cómputo vectorial y análisis espacial hasta gestión de permisos y enmascaramiento de datos. Esta página enumera todas las extensiones compatibles y explica cómo cargarlas, consultarlas y desinstalarlas.
Supported extensions | Load an extension | Consultar extensiones cargadas | Desinstalar una extensión | Preguntas frecuentes
Limitaciones
Una extensión solo se puede cargar en un esquema por base de datos. Por ejemplo, si carga una extensión en el esquema predeterminado, no podrá cargarla en ningún otro esquema de esa misma base de datos.
Cargue la extensión en el esquema del sistema
pg_catalogpara que esté disponible en todos los esquemas de la base de datos. Si no se especifica un esquema, la extensión se carga en el esquemapublicde forma predeterminada.Solo las cuentas con permisos de Superuser pueden cargar o desinstalar extensiones.
Actualmente, solo se admiten extensiones del sistema integradas. No es posible cargar extensiones personalizadas ni externas.
Extensiones compatibles
|
Extensión |
Descripción |
Restricción de esquema |
Comando de carga |
|
|
Habilita el modelo de permisos simple (SPM) o el modelo de permisos simple a nivel de esquema (SLPM). Consulte Use the SPM y Use the SLPM. |
Se carga en el esquema hologres de forma predeterminada. El esquema no se puede modificar. |
|
|
|
Agrega la función |
Debe cargarse en pg_catalog. |
|
|
|
Habilita consultas entre bases de datos (Beta). Consulte Cross-database queries. |
Solo instancias dedicadas. Debe cargarse en pg_catalog. |
|
|
|
Lee datos de OSS mediante DLF (Data Lake Formation). Consulte Accelerate access to OSS data lakes based on DLF. |
Debe cargarse en pg_catalog. |
|
|
|
Habilita el cómputo vectorial Proxima. Consulte Proxima vector computing. |
Solo instancias dedicadas. Debe cargarse en pg_catalog. |
|
|
|
Agrega funciones de segmentación de usuarios y análisis de embudos. Consulte Funnel functions y User segmentation functions. |
Se carga en el esquema public de forma predeterminada. Solo se puede cargar en public. |
|
|
|
Agrega funciones de Roaring Bitmap (RB). Consulte RoaringBitmap functions. |
Solo instancias dedicadas. Se carga en el esquema public de forma predeterminada. Solo se puede cargar en public. |
|
|
|
Habilita el consumo de datos Binlog de Hologres. Consulte Consume Hologres Binlog data using JDBC. |
Solo instancias dedicadas. Se carga en el esquema hologres de forma predeterminada. El esquema no se puede modificar. |
|
|
|
Agrega funciones espaciales de PostGIS. Consulte PostGIS spatial functions. |
Solo instancias dedicadas. Debe cargarse en pg_catalog. |
|
|
|
Agrega funciones compatibles con ClickHouse para migración. Consulte Import data from ClickHouse. |
Solo instancias dedicadas. Se carga en el esquema public de forma predeterminada. Solo se puede cargar en public. |
|
|
|
Agrega la función |
Debe cargarse en pg_catalog. |
|
|
|
Agrega funciones de Bit Slice Index (BSI). Consulte BSI functions. |
Se carga en el esquema public de forma predeterminada. Solo se puede cargar en public. |
|
|
|
Habilita el enmascaramiento de datos. Consulte Data masking. |
Solo se puede cargar en pg_catalog. |
|
|
|
Agrega funciones compatibles con MySQL. Consulte MySQL-compatible functions. |
Se carga en el esquema hologres de forma predeterminada. El esquema no se puede modificar. |
|
Cargar una extensión
Al cargar una extensión en pg_catalog, esta estará disponible en todos los esquemas de la base de datos. Si carga una extensión en cualquier otro esquema, sus funciones solo serán accesibles dentro del search_path de dicho esquema.
Algunas extensiones solo se pueden cargar en un esquema específico. Revise la columna Schema constraint de la tabla anterior antes de ejecutar el comando de carga.
-- Requires Superuser permissions
CREATE EXTENSION IF NOT EXISTS <extension_name> SCHEMA <schema_name>;
|
Parámetro |
Descripción |
|
|
Nombre de la extensión. Consulte supported extensions table para ver los valores válidos. |
|
|
Esquema donde se cargará la extensión. Use |
Ejemplo: Cargar la extensión postgis en pg_catalog:
CREATE EXTENSION IF NOT EXISTS postgis SCHEMA pg_catalog;
Consultar las extensiones cargadas en la base de datos actual
Ejecute la siguiente consulta para listar todas las extensiones cargadas en la base de datos actual, incluidas las que se cargan de forma predeterminada:
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;
Desinstalar una extensión
No utilice DROP EXTENSION <extension_name> CASCADE. La opción CASCADE elimina todos los objetos que dependen de la extensión, incluidos los datos de PostGIS, RoaringBitmap, Proxima, Binlog y BSI, así como metadatos, tablas, vistas y datos del servidor.
-- Requires Superuser permissions
DROP EXTENSION <extension_name>;
|
Parámetro |
Descripción |
|
|
Nombre de la extensión que se va a desinstalar. Consulte supported extensions table para ver los valores válidos. |
Ejemplo: Consultar una extensión entre esquemas
Algunas extensiones, como roaringbitmap, solo se pueden cargar en el esquema public. Si su tabla se encuentra en un esquema diferente y llama a una función RB sin el prefijo del esquema, se producirá el error function xxx does not exist. Para resolverlo, anteponga public. al nombre de la función.
El siguiente ejemplo muestra el problema y su solución.
-
Cree una tabla en un esquema distinto de
publice insértela datos.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; -
Realice una consulta con una función RB mientras
search_pathestá configurado comopublic. La consulta se ejecuta correctamente.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; -
Cambie
search_pathal esquematesty ejecute la misma consulta. La consulta falla.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 -
Anteponga
public.a la función para invocarla desde el esquema correcto.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;
Preguntas frecuentes
Se cargó una extensión en el esquema incorrecto. Tras cambiar de esquema, sus funciones no son accesibles y devuelven function xxx does not exist.
Esto ocurre cuando una extensión se carga en el esquema public, pero el search_path activo ya no incluye public. Desinstale la extensión sin usar CASCADE y vuelva a cargarla en pg_catalog para que sea accesible desde todos los esquemas:
DROP EXTENSION hologres_fdw;
CREATE EXTENSION IF NOT EXISTS hologres_fdw SCHEMA pg_catalog;