O Hologres oferece um conjunto de extensões integradas que adicionam recursos especializados ao banco de dados, como computação vetorial, análise espacial, gerenciamento de permissões e mascaramento de dados. Esta página lista todas as extensões suportadas e explica como carregá-las, visualizá-las e desinstalá-las.
Extensões suportadas | Carregar uma extensão | Visualize extensões carregadas | Desinstalar uma extensão | Perguntas frequentes
Limitações
É possível carregar cada extensão em apenas um schema por banco de dados. Por exemplo, se você carregar uma extensão no schema padrão, não poderá carregá-la em nenhum outro schema do mesmo banco.
Carregue a extensão no schema de sistema
pg_catalogpara disponibilizá-la em todos os schemas do banco de dados. Se nenhum schema for especificado, a extensão será carregada no schemapublicpor padrão.Somente contas com permissões de Superuser podem carregar ou desinstalar extensões.
Atualmente, o Hologres suporta apenas extensões de sistema integradas. Não é possível carregar extensões personalizadas ou externas.
Extensões suportadas
|
Extensão |
Descrição |
Restrição de schema |
Comando de carregamento |
|
|
Ativam o modelo de permissão simples (SPM) ou o modelo de permissão simples no nível de schema (SLPM). Consulte Usar o SPM e Usar o SLPM. |
Carregada no schema hologres por padrão. O schema não pode ser alterado. |
|
|
|
Adiciona a função |
Deve ser carregada em pg_catalog. |
|
|
|
Habilita consultas entre bancos de dados (Beta). Consulte Consultas entre bancos de dados. |
Apenas para instâncias dedicadas. Deve ser carregada em pg_catalog. |
|
|
|
Lê dados do OSS por meio do DLF (Data Lake Formation). Consulte Acelerar o acesso a data lakes do OSS com base no DLF. |
Deve ser carregada em pg_catalog. |
|
|
|
Habilita a computação vetorial Proxima. Consulte Computação vetorial Proxima. |
Apenas para instâncias dedicadas. Deve ser carregada em pg_catalog. |
|
|
|
Adiciona funções de segmentação de usuários e análise de funil. Consulte Funções de funil e Funções de segmentação de usuários. |
Carregada no schema public por padrão. Só pode ser carregada em public. |
|
|
|
Adiciona funções Roaring Bitmap (RB). Consulte Funções RoaringBitmap. |
Apenas para instâncias dedicadas. Carregada no schema public por padrão. Só pode ser carregada em public. |
|
|
|
Permite consumir dados do Binlog do Hologres. Consulte Consumir dados do Binlog do Hologres usando JDBC. |
Apenas para instâncias dedicadas. Carregada no schema hologres por padrão. O schema não pode ser alterado. |
|
|
|
Adiciona funções espaciais do PostGIS. Consulte Funções espaciais do PostGIS. |
Apenas para instâncias dedicadas. Deve ser carregada em pg_catalog. |
|
|
|
Adiciona funções compatíveis com ClickHouse para migração. Consulte Importar dados do ClickHouse. |
Apenas para instâncias dedicadas. Carregada no schema public por padrão. Só pode ser carregada em public. |
|
|
|
Adiciona a função |
Deve ser carregada em pg_catalog. |
|
|
|
Adiciona funções Bit Slice Index (BSI). Consulte Funções BSI. |
Carregada no schema public por padrão. Só pode ser carregada em public. |
|
|
|
Habilita o mascaramento de dados. Consulte Mascaramento de dados. |
Só pode ser carregada em pg_catalog. |
|
|
|
Adiciona funções compatíveis com MySQL. Consulte Funções compatíveis com MySQL. |
Carregada no schema hologres por padrão. O schema não pode ser alterado. |
|
Carregar uma extensão
Carregar uma extensão em pg_catalog torna-a disponível em todos os schemas do banco de dados. Se você carregar uma extensão em qualquer outro schema, as funções dela só estarão acessíveis dentro do search_path desse schema específico.
Algumas extensões só podem ser carregadas em um schema específico. Verifique a coluna Schema constraint na tabela acima antes de executar o comando de carregamento.
-- Requires Superuser permissions
CREATE EXTENSION IF NOT EXISTS <extension_name> SCHEMA <schema_name>;
|
Parâmetro |
Descrição |
|
|
Nome da extensão. Consulte a tabela de extensões suportadas para obter os valores válidos. |
|
|
Schema onde a extensão será carregada. Use |
Exemplo: Carregue a extensão postgis em pg_catalog:
CREATE EXTENSION IF NOT EXISTS postgis SCHEMA pg_catalog;
Visualize extensões carregadas no banco de dados atual
Execute a consulta a seguir para listar todas as extensões carregadas no banco de dados atual, incluindo aquelas carregadas por padrão:
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 uma extensão
Não use DROP EXTENSION <extension_name> CASCADE. A opção CASCADE exclui todos os objetos dependentes da extensão, incluindo dados do PostGIS, RoaringBitmap, Proxima, Binlog e BSI, além de metadados, tabelas, visualizações e dados do servidor.
-- Requires Superuser permissions
DROP EXTENSION <extension_name>;
|
Parâmetro |
Descrição |
|
|
Nome da extensão a ser desinstalada. Consulte a tabela de extensões suportadas para obter os valores válidos. |
Exemplo: Consultar uma extensão entre schemas
Algumas extensões, como roaringbitmap, só podem ser carregadas no schema public. Se sua tabela estiver em um schema diferente, chamar uma função RB sem o prefixo do schema resultará no erro function xxx does not exist. Para resolver isso, adicione o prefixo public. à função.
O exemplo a seguir demonstra o problema e a solução.
-
Crie uma tabela em um schema diferente de
publice insira dados.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; -
Execute uma consulta usando uma função RB enquanto o
search_pathestiver definido comopublic. A consulta será bem-sucedida.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; -
Altere o
search_pathpara o schemateste execute a mesma consulta. A consulta falhará.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 -
Adicione o prefixo
public.à função para chamá-la a partir do schema correto.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;
Perguntas frequentes
Uma extensão foi carregada no schema errado. Após trocar de schema, suas funções ficaram inacessíveis e retornam function xxx does not exist.
Isso ocorre quando uma extensão é carregada no schema public, mas o search_path ativo não inclui mais o public. Desinstale a extensão sem usar CASCADE e recarregue-a em pg_catalog para torná-la acessível em todos os schemas:
DROP EXTENSION hologres_fdw;
CREATE EXTENSION IF NOT EXISTS hologres_fdw SCHEMA pg_catalog;