Configurar extensões do PostgreSQL

É possível estender o PostgreSQL agrupando objetos SQL em um pacote e usando-os como uma unidade. Esta página contém informações sobre como configurar as extensões do PostgreSQL compatíveis com o Cloud SQL.

Usar extensões do PostgreSQL

Só é possível instalar as extensões compatíveis com o Cloud SQL. Para mais informações, consulte Extensões do PostgreSQL compatíveis com o Cloud SQL.

Instalar uma extensão

Antes de usar uma extensão, instale-a:

Requisito para privilégios de superusuário

No Cloud SQL, as extensões só podem ser criadas por usuários que fazem parte do papel cloudsqlsuperuser. Quando você cria uma nova instância do PostgreSQL, o usuário postgres padrão é criado para você (embora seja necessário definir a senha do usuário). O usuário postgres padrão faz parte do papel cloudsqlsuperuser. Para mais informações, consulte Sobre usuários do PostgreSQL.

Conexões entre bancos de dados

As instâncias de destino para conexões precisam estar na mesma rede VPC que a instância de conexão.

Para instâncias de cluster, não é possível escolher a opção Exigir certificados do cliente confiáveis no Console do Google Cloud. Além disso, para se conectar a outros bancos de dados na mesma instância, não é possível definir o host como localhost ou como 127.0.0.1. Em vez disso, você precisa usar o endereço IP mostrado para sua instância no console do Google Cloud.

Solicitar suporte para uma nova extensão

Não é possível criar suas próprias extensões com o Cloud SQL.

Para solicitar suporte para uma extensão, clique em +1 no problema aberto ou crie um novo. Para ver uma lista de problemas abertos do Cloud SQL e informações sobre como criar novos problemas, consulte Pesquisar ou criar problemas e solicitações de recursos por produto.

Extensões PostgreSQL aceitas pelo Cloud SQL

Para informações sobre como usar uma extensão específica, consulte o link da documentação em uma das tabelas abaixo.

O suporte do Cloud SQL para extensões do PostgreSQL pode ser dividido nestas categorias:

PostGIS

A extensão PostGIS 3.2 é compatível com o Cloud SQL para PostgreSQL em todas as versões principais.

A tabela a seguir contém as versões de extensão do PostGIS para cada versão do Cloud SQL para PostgreSQL:

Versão do Cloud SQL para PostgreSQL Extensão do PostGIS
PostgreSQL 9.6 3.2.5
PostgreSQL 10 3.2.5
PostgreSQL 11 3.2.5
PostgreSQL 12 3.2.5
PostgreSQL 13 3.2.5
PostgreSQL 14 3.2.5
PostgreSQL 15 3.2.5

Para uma versão principal específica do PostgreSQL, no comando CREATE EXTENSION, é possível especificar uma versão da extensão PostGIS usando a cláusula VERSION.

A extensão PostGIS inclui o seguinte:

Para mais informações, consulte Instalação do PostGIS.

Além disso, o Cloud SQL para PostgreSQL inclui a versão 3.3.0 da extensão pgRouting, que estende o PostGIS. A extensão pgRouting melhora o processamento geoespacial por meio do roteamento e da análise de rede.

É possível fazer upgrade do PostGIS e das extensões relacionadas manualmente para a versão mais recente. Para saber mais sobre como fazer upgrade das extensões PostGIS, consulte Como fazer upgrade do PostGIS.

Extensões de tipo de dados

Extensão Descrição
btree_gin Fornece amostras de classes de operadores GIN que implementam o comportamento equivalente de B-tree.
O Cloud SQL para PostgreSQL 9.6 usa a versão 1.0. O PostgreSQL 10 usa a versão 1.2. Todas as outras versões usam a versão 1.3.
btree_gist Fornece classes de operadores de índice GiST que implementam o comportamento equivalente de B-tree.
O Cloud SQL para PostgreSQL 9.6 usa a versão 1.2. O PostgreSQL 10, 11 12 e 13 usam a versão 1.5. O PostgreSQL 14 usa a versão 1.6.
chkpass Implementa um tipo de dados de chkpass projetado para armazenar senhas criptografadas.
O Cloud SQL para PostgreSQL 9.6 e 10 usam a versão 1.0. Não é compatível com outras versões.
citext Fornece um tipo citext de string de caracteres indiferente a maiúsculas.
O Cloud SQL para PostgreSQL 9.6 usa a versão 1.3. O PostgreSQL 10 usa a versão 1.4. O PostgreSQL 11 usa a versão 1.5. O PostgreSQL 12, 13 e 14 usam a versão 1.6.
cube Implementa um tipo de dados cube para representar cubos multidimensionais.
O Cloud SQL para PostgreSQL 9.6 e 10 usam a versão 1.2. O PostgreSQL 11 usa a versão 1.3. O PostgreSQL 12 e 13 usam a versão 1.4. O PostgreSQL 14 usa a versão 1.5.
hstore Implementa o tipo de dados hstore para armazenar conjuntos de pares de chave-valor em um único valor do PostgreSQL.
O Cloud SQL para PostgreSQL 9.6 e 10 usam a versão 1.4. O PostgreSQL 11 usa a versão 1.5. O PostgreSQL 12 usa a versão 1.6. O PostgreSQL 13 usa a versão 1.7. O PostgreSQL 14 usa a versão 1.8.
isn Fornece tipos de dados para alguns padrões internacionais de numeração de produtos.
O Cloud SQL para PostgreSQL 9.6 e 10 usam a versão 1.1. Todas as outras versões usam a versão 1.2.
ip4r (em inglês) Fornece tipos de dados para endereços IPv4/v6 e intervalos de endereços, além de suporte a índice.
O Cloud SQL para PostgreSQL usa a versão 2.4.2.
ltree Implementa um tipo de dados ltree para representar rótulos de dados armazenados em uma estrutura hierárquica do tipo árvore.
O Cloud SQL para PostgreSQL 9.6, 10, 11 e 12 usam a versão 1.1. O PostgreSQL 13 e 14 usam a versão 1.2.
lo Suporte para o gerenciamento de grandes objetos (também chamados de LOs ou BLOBs).
O Cloud SQL para PostgreSQL usa a versão 1.1.
postgresql-hll Apresenta um novo tipo de dados, hll, que é uma estrutura de dados do HyperLogLog. Consulte também postgresql-hll neste documento.
O Cloud SQL para PostgreSQL usa a versão 2.16.
prefix Fornece correspondência de prefixo e suporte a índice.
O Cloud SQL para PostgreSQL usa a versão 1.2.0.

Extensões de linguagem

Extensão Descrição
plpgsql Uma linguagem processual carregável para criar funções, procedimentos e acionadores. Também é possível usar essa linguagem para execução direta de código em blocos DO.
O Cloud SQL para PostgreSQL usa a versão 1.0.
plv8 Fornece uma linguagem processual para ativar o JavaScript.
O Cloud SQL para PostgreSQL usa a versão 3.2.0, que, por sua vez, usa a versão 11.5 do mecanismo JavaScript V8.

Extensões diversas

Extensão Descrição
Amcheck Fornece funções para verificar a consistência lógica da estrutura das relações, permitindo que o aplicativo pg_amcheck verifique se há corrupção.
auto_explain Ativa a geração automática de registros de planos de execução para instruções lentas, para solução de problemas e muito mais. Fornece uma maneira automatizada de executar a funcionalidade do comando EXPLAIN. Consulte também auto_explain neste documento.
autoinc Fornece funções para incrementar campos automaticamente. Esse gatilho armazena o próximo valor de uma sequência em um campo de número inteiro.
O Cloud SQL para PostgreSQL usa a versão 0.6.0.
bloom Fornece um método para acessar índices com base em filtros de Bloom. Um filtro de Bloom é uma estrutura de dados com eficiência de espaço que pode ser usada para testar se um elemento faz parte de um conjunto.
O Cloud SQL para PostgreSQL usa a versão 0.6.0.
dblink Fornece funções para se conectar aos bancos de dados PostgreSQL de dentro de uma sessão de banco de dados. Veja também dblink neste documento.
O Cloud SQL para PostgreSQL usa a versão 1.2.
decoderbufs Um decodificador lógico do PostgreSQL que entrega dados de saída como buffers de protocolo, adaptados para o Debezium.
dict_int Um complemento de modelo de dicionário para pesquisa de texto completo que controla a indexação de números inteiros.
O Cloud SQL para PostgreSQL usa a versão 1.0.
earthdistance Fornece duas abordagens para calcular distâncias grandes do círculo na superfície da Terra.
O Cloud SQL para PostgreSQL usa a versão 1.1.
fuzzystrmatch Fornece várias funções para determinar semelhanças e a distância entre as strings.
O Cloud SQL para PostgreSQL usa a versão 1.1.
insert_username Fornece funções para armazenar o nome do usuário atual em um campo de texto. É possível usar isso para rastrear quem modificou pela última vez uma linha em uma tabela de banco de dados.
O Cloud SQL para PostgreSQL usa a versão 0.6.0.
intagg Fornece um agregador inteiro e um enumerador.
O Cloud SQL para PostgreSQL usa a versão 1.1.
intarray Fornece um conjunto de funções e operadores para manipulação de matrizes null-free de números inteiros e busca indexada.
O Cloud SQL para PostgreSQL 9.6, 10, 11 e 12 usam a versão 1.2. O PostgreSQL 13 usa a versão 1.3. O PostgreSQL 14 usa a versão 1.5.
moddatetime Fornece funções para armazenar o horário atual em um campo timestamp. É possível usar isso para rastrear a última vez que uma linha em uma tabela de banco de dados é modificada.
O Cloud SQL para PostgreSQL usa a versão 1.0.
oracle_fdw Fornece um wrapper de dados estrangeiros (fdw) para acessar bancos de dados Oracle com facilidade e eficiência.
O Cloud SQL para PostgreSQL usa a versão 1.2.
orafce Fornece funções e operadores que emulam um subconjunto de funções e pacotes de um banco de dados Oracle. Use essas funções para fazer a portabilidade de aplicativos Oracle para o PostgreSQL.
O Cloud SQL para PostgreSQL 9.6 e 10 usam a versão 4.6.1. O PostgreSQL 11 e versões mais recentes usam a versão 4.7.0.
pageinspect Inspeciona o conteúdo das páginas do banco de dados em um nível baixo. Consulte também pageinspect neste documento.
O Cloud SQL para PostgreSQL 9.6 usa a versão 1.5. O PostgreSQL 10 usa a versão 1.6. O PostgreSQL 11 e 12 usam a versão 1.7. O PostgreSQL 13 e 14 usam a versão 1.8.
pgAudit Coleta dados de auditoria.

Os possíveis valores a serem definidos para os arquivos de registros de auditoria para todas as versões do pgAudit são READ, WRITE, FUNCTION, ROLE, DDL, MISC e ALL. Nas versões 1.4.2 a 1.6.1, também é possível definir o valor de MISC_SET.

Para mais informações sobre como usar essa extensão com o Cloud SQL, consulte Auditoria para PostgreSQL usando pgAudit.

pg_background Permite executar comandos arbitrários em um worker em segundo plano.
O Cloud SQL para PostgreSQL usa a versão 1.2.
pg_bigm Ativa a pesquisa de texto completo e possibilita um índice de dois gramas (bigram) para uma pesquisa de texto completo mais rápida. Consulte também pg_bigm neste documento.
pg_buffercache Fornece um meio para examinar o que está acontecendo no cache de buffer compartilhado em tempo real.
O Cloud SQL para PostgreSQL 9.6 usa a versão 1.2. O PostgreSQL 10, 11, 12, 13 e 14 usam a versão 1.3.
pg_cron Fornece um programador de jobs baseado em cron. Essa extensão permite que a sintaxe cron programe comandos do PostgreSQL diretamente do banco de dados. Para mais informações sobre a extensão, consulte pg_cron neste documento.
As versões 10 e mais recentes do Cloud SQL para PostgreSQL usam a versão 1.6.0.
pgcrypto Fornece funções criptográficas para o PostgreSQL.
O Cloud SQL para PostgreSQL usa a versão 1.3.
pglogical (link em inglês) Fornece replicação lógica para o PostgreSQL. Consulte Como configurar a decodificação e a replicação lógicas.
O Cloud SQL para PostgreSQL usa a versão 2.4.3.
pgfincore Um conjunto de funções para gerenciar páginas na memória do cache de disco do sistema operacional pelo PostgreSQL. Veja também pgfincore neste documento.
O Cloud SQL para PostgreSQL usa a versão 1.3.1.
pg_freespacemap Examine o mapa de espaço livre (FSM, na sigla em inglês). Veja também pg_freespacemap neste documento.
O Cloud SQL para PostgreSQL usa a versão 1.2.
pg_hint_plan Permite melhorar os planos de execução do PostgreSQL usando dicas, que são descrições simples em comentários SQL. Consulte também pg_hint_plan neste documento.
pgoutput Esse plug-in é usado pela replicação lógica para captura de dados alterados. pgoutput é um plug-in padrão e, portanto, é compatível com todas as versões do Cloud SQL para PostgreSQL.
pg_partman Permite criar e gerenciar conjuntos de partição de tabela baseados em tempo e em série. Consulte também pg_partman neste documento.
O Cloud SQL para PostgreSQL usa a versão 4.7.4.
pg_prewarm Fornece uma maneira conveniente de carregar dados relacionais no cache de buffer do sistema operacional ou no cache de buffer do PostgreSQL.
O Cloud SQL para PostgreSQL 9.6 e 10 usam a versão 1.1. O PostgreSQL 11, 12, 13 e 14 usam a versão 1.2.
pg_proctab Permite usar o pg_top com o Cloud SQL para PostgreSQL e gerar relatórios da tabela do processo do sistema operacional. Consulte também pg_proctab neste documento.
pg_repack Permite remover o inchaço de tabelas e índices. Opcionalmente, permite executar um CLUSTER on-line (ordenar tabelas por índice de cluster). Consulte também pg_repack neste documento.
O Cloud SQL para PostgreSQL usa a versão 1.5.0.
pgrowlocks Fornece informações de bloqueio de linha para a tabela especificada.
O Cloud SQL para PostgreSQL usa a versão 1.2.
pgstattuple Fornece várias funções para estatísticas de nível de tupla.
O Cloud SQL para PostgreSQL 9.6 usa a versão 1.4. Todas as outras versões usam a versão 1.5.
pg_similarity Oferece suporte a consultas de similaridade no PostgreSQL.
O Cloud SQL para PostgreSQL usa a versão 1.0.
pg_squeeze Remove o espaço não utilizado de uma tabela e, opcionalmente, usa um índice para classificar registros ou linhas (tuplas) da tabela. Saiba mais sobre a extensão em pg_squeeze neste documento.
As versões 11 e mais recentes do Cloud SQL para PostgreSQL usam a versão 1.5.
pg_stat_statements Oferece um meio para rastrear as estatísticas de execução de todas as instruções SQL executadas.
O Cloud SQL para PostgreSQL 9.6 usa a versão 1.4. O PostgreSQL 10 e 11 usam a versão 1.6. O PostgreSQL 12 usa a 1.7. O PostgreSQL 13 usa a 1.8. O PostgreSQL 14 usa a 1.9.
pgTAP Fornece um framework de teste de unidade para PostgreSQL, escrito em PL/pgSQL e PL/SQL.
O Cloud SQL para PostgreSQL usa a versão 1.3.0.
pg_trgm Fornece funções e operadores para determinar a semelhança de texto alfanumérico com base na correspondência trigrama, bem como classes de operadores de índice compatíveis com a busca rápida de strings semelhantes.
O Cloud SQL para PostgreSQL 9.6 e 10 usam a versão 1.3. O PostgreSQL 11 e 12 usam a versão 1.4. O PostgreSQL 13 usa a 1.5. O PostgreSQL 14 usa a versão 1.6.
pgtt

Cria e gerencia tabelas temporárias globais no estilo DB2 ou Oracle em um banco de dados PostgreSQL.
O Cloud SQL para PostgreSQL usa a versão 3.0.

pgvector

Uma extensão de código aberto para armazenar e pesquisar incorporações de vetores em bancos de dados do PostgreSQL.

O Cloud SQL para PostgreSQL usa a versão 0.5.1.

pg_visibility Fornece uma maneira de examinar o mapa de visibilidade (VM, na sigla em inglês) e as informações de visibilidade de uma tabela no nível da página. Consulte também pg_visibility neste documento.
O Cloud SQL para PostgreSQL usa a versão 1.2.
pg_wait_sampling Coleta estatísticas de amostragem de eventos de espera, fornecendo dados de eventos de espera para processos em servidores. O Cloud SQL para PostgreSQL usa a versão 1.1.5.
PL/Proxy Gerenciador de linguagem processual que permite chamadas de procedimento remoto entre bancos de dados do PostgreSQL, com fragmentação opcional. Consulte também PL/Proxy neste documento.
O Cloud SQL para PostgreSQL usa a versão 2.11.0.
postgres_fdw Permite que wrappers de dados externos sejam criados em instâncias ou entre instâncias. Veja também postgres_fdw neste documento.
O Cloud SQL para PostgreSQL 9.6, 10, 11, 12 e 13 usam a versão 1.0. O PostgreSQL 14 usa a versão 1.1.
postgresql_anonymizer

Mascara ou substitui informações de identificação pessoal (PII) ou dados confidenciais de um banco de dados do PostgreSQL. Para mais informações, consulte a seção postgresql_anonymizer.

O Cloud SQL para PostgreSQL usa a versão 1.0.0.

postgresql_hll

Fornece uma estrutura de dados do HyperLogLog (hll) que estima a cardinalidade de um conjunto.

O Cloud SQL para PostgreSQL usa a versão 2.18.

rdkit Uma coleção de software de química e aprendizado de máquina. Use essa extensão para comparar, manipular e identificar estruturas moleculares.
O Cloud SQL para PostgreSQL usa a versão 4.2.0.
refint Inclui funções para verificar restrições de chaves externas, a tabela de referência e a tabela referenciada. Essa extensão também demonstra a Interface de programação do servidor (SPI). O Cloud SQL para PostgreSQL usa a versão 1.0.
sslinfo Fornece informações sobre o certificado SSL que o cliente atual forneceu quando se conectou à instância.
O Cloud SQL para PostgreSQL usa a versão 1.2.
tablefunc Inclui várias funções que retornam tabelas (várias linhas).
O Cloud SQL para PostgreSQL usa a versão 1.0.
tcn Fornece uma função de gatilho que notifica os listeners sobre alterações no conteúdo das tabelas do banco de dados.
O Cloud SQL para PostgreSQL usa a versão 0.6.0.
tsm_system_rows Fornece o método de amostragem de tabela SYSTEM_ROWS, que pode ser usado na cláusula TABLESAMPLE de um comando SELECT.
O Cloud SQL para PostgreSQL usa a versão 1.0.
tsm_system_time Fornece o método de amostragem de tabela SYSTEM_TIME, que pode ser usado na cláusula TABLESAMPLE de um comando SELECT.
O Cloud SQL para PostgreSQL usa a versão 1.0.
unaccent Um dicionário de pesquisa de texto que exclui acentos (sinais diacríticos) de lexemas.
O Cloud SQL para PostgreSQL usa a versão 1.1.
uuid-ossp Fornece funções para gerar identificadores universalmente únicos (UUIDs, na sigla em inglês) usando um dos inúmeros algoritmos padrão.
O Cloud SQL para PostgreSQL usa a versão 1.1.

Mais sobre algumas extensões do PostgreSQL

Esta seção descreve mais informações sobre algumas das extensões do PostgreSQL compatíveis na tabela acima.

auto_explain

Para começar a usar essa extensão em uma instância, defina a sinalização cloudsql.enable_auto_explain como on. Para informações sobre como configurar flags e analisar as compatíveis com essa extensão, consulte Como configurar flags do banco de dados.

Como alternativa, para um usuário que tenha o papel cloudsqlsuperuser (somente), use o comando load para carregar essa extensão em uma sessão.

Em uma sessão de banco de dados, use essa extensão para se conectar a bancos de dados PostgreSQL e executar consultas.

Atualmente, essa extensão funciona para duas instâncias de IP privado do Cloud SQL na mesma rede VPC ou para bancos de dados cruzados na mesma instância.

Para mais informações, consulte dblink na documentação do PostgreSQL.

Para se conectar a bancos de dados ou para se conectar à mesma instância de outro usuário, é necessário especificar uma senha. Por exemplo, mas não para fins de produção, veja um snippet de código:


  SELECT * FROM dblink (
    'dbname=name port=1234 host=host user=user password=password',
    'select id, name from table' \
  ) AS t(id int, name text);

Como alternativa, para configurar apenas uma conexão, este é um exemplo de snippet de código (não para fins de produção):

  SELECT dblink_connect('dbname=dblinktest user=postgres host=name_or_ip password=xxx');

Para se conectar à mesma instância do mesmo usuário, é possível se conectar sem uma senha. Exemplo:

  1. Defina a seguinte sinalização de banco de dados para ativar conexões locais sem uma senha
    cloudsql.allow_passwordless_local_connections

  2. Conectar sem especificar um host, o que implica a conexão com a mesma instância. Exemplo:

    SELECT *
      FROM dblink('dbname=finance user=alice',
                  'select income from revenue')
        AS revenue(income integer);
    

    O resultado pode ser semelhante ao seguinte:

          income
          --------
          1000
          (1 row)
    

Para se conectar a outros bancos de dados na mesma instância, não é possível definir o host como localhost ou 127.0.0.1. Em vez disso, você precisa usar o endereço IP mostrado para sua instância no console do Google Cloud.

Veja também postgres_fdw e PL/Proxy neste documento.

pageinspect

Essa extensão inspeciona o conteúdo das páginas do banco de dados em um nível baixo. Para mais informações, consulte pageinspect na documentação do PostgreSQL.

pg_bigm

Essa extensão permite a pesquisa de texto completo e um índice de dois gramas (bigram) para uma pesquisa de texto completo mais rápida.

Para começar a usar essa extensão em uma instância, defina a sinalização cloudsql.enable_pg_bigm como on. As sinalizações a seguir também são compatíveis:

  • pg_bigm.enable_recheck
  • pg_bigm.gin_key_limit
  • pg_bigm.similarity_limit

Para informações sobre como configurar sinalizações e analisar as sinalizações compatíveis com essa extensão, consulte Configurar sinalizações do banco de dados.

pg_cron

Para começar a usar o pg_cron em uma instância, defina a sinalização cloudsql.enable_pg_cron como on. Para informações sobre como configurar sinalizações e analisar as sinalizações compatíveis com essa extensão, consulte Configurar sinalizações do banco de dados.

Os jobs são configurados como workers em segundo plano. Portanto, talvez seja necessário usar técnicas padrão do PostgreSQL (como a sinalização max_worker_processes) para ajustar o número desses workers.

Para essa extensão, o Cloud SQL é compatível com o modo de trabalho em segundo plano, mas não com a interface libpq. Portanto, a autenticação de confiança que envolve diretamente essa extensão não é obrigatória.

pgfincore

Essa extensão contém funções para gerenciar páginas na memória de cache de disco do sistema operacional do PostgreSQL. Para mais informações, consulte a documentação do pgfincore.

pg_freespacemap

Esta extensão examina o mapa de espaço livre (FSM, na sigla em inglês). Para mais informações, consulte pg_freespacemap na documentação do PostgreSQL.

pg_hint_plan

Para começar a usar essa extensão em uma instância, defina a sinalização cloudsql.enable_pg_hint_plan como on. Para informações sobre como configurar flags e analisar as compatíveis com essa extensão, consulte Como configurar flags do banco de dados.

Como alternativa, apenas um usuário com o papel cloudsqlsuperuser pode usar o comando load para carregar essa extensão para uma sessão.

pg_partman

Essa extensão permite criar e gerenciar conjuntos de partição de tabela baseados em tempo e em série.

No Cloud SQL, essa extensão não inclui o worker em segundo plano para manutenção automática de partições. Em vez disso, é possível usar, por exemplo, o Cloud Scheduler para orientar a manutenção chamando funções de manutenção em um intervalo regular.

pg_proctab

Siga estas etapas para usar a extensão pg_proctab para ativar o utilitário pg_top:

  1. Na ferramenta psql, execute o comando CREATE EXTENSION para pg_proctab.
  2. Faça o download e execute pg_top.
  3. Quando se conectar a uma instância do Cloud SQL para PostgreSQL, adicione a opção -r para se conectar a um banco de dados remoto, para ver as métricas.

As seguintes métricas em toda a instância, incluídas na saída, incluem o uso por outros agentes e serviços de suporte na instância:

  • Média de carregamento
  • Estados de CPU (% de usuário, em bom estado, sistema, ocioso e iowait)
  • Memória (usada, gratuita e armazenada em cache)

pg_repack

Essa extensão permite remover inchaço de tabelas e índices. Como opção, essa extensão pode ser usada para executar um CLUSTER on-line (ordenar tabelas por índice de cluster). Para mais informações, consulte a documentação de pg_repack. Além disso, para usar essa extensão no Cloud SQL, é necessário um procedimento especial para adicionar privilégios a um usuário.

Se um usuário fora do papel cloudsqlsuperuser quiser usar uma extensão, conceda a ele privilégios cloudsqlsuperuser. Para mais informações, neste documento, consulte Requisito para privilégios de superusuário. O exemplo a seguir usa o comando GRANT para adicionar os privilégios necessários.

Exemplo de adição de privilégios

Para fins de exemplo abaixo, csuper1 é um cloudsqlsuperuser e testdb é um banco de dados de propriedade de testuser. Para criar a extensão pg_repack no testdb, inicialmente execute os seguintes comandos:

  1. Conecte-se a testdb como cloudsqlsuperuser:

    psql -U csuper1 -d testdb;
    
  2. Conceda ao proprietário do banco de dados, que é testuser, para csuper1:

    GRANT testuser TO csuper1;
    
  3. Crie a extensão:

    CREATE EXTENSION pg_repack;
    
  4. Execute o comando pg_repack em uma tabela, como t1 em testdb, como csuper1:

    pg_repack -h <hostname> -d testdb -U csuper1 -k -t t1
    
  5. Depois que o job do pg_repack for concluído, revogue a concessão que você executou na etapa 2:

     REVOKE testuser FROM csuper1;
    

O comando pg_repack pode falhar com o seguinte erro:
"ERROR: query failed: SSL SYSCALL error: EOF detected"

Se esse erro ocorrer, defina os sinais de atividade TCP para um valor menor e execute o comando pg_repack. Para mais informações, consulte Tempo limite de conexões (do Compute Engine).

pg_squeeze

Esta extensão remove o espaço não utilizado de uma tabela e, opcionalmente, usa um índice para classificar as tuplas da tabela. Para começar a usar essa extensão em uma instância, defina a sinalização cloudsql.enable_pg_squeeze como on.

Esta extensão também oferece suporte à decodificação lógica, gravando informações adicionais no registro de gravação antecipada (WAL). Para ativar essa funcionalidade na extensão, defina o parâmetro de configuração wal_level como logical ou mais recente definindo a sinalização cloudsql.logical_decoding como on.

A extensão requer que um valor seja definido para a sinalização max_replication_slots. Se você não especificou um valor para essa sinalização, defina-o como 1. Caso contrário, adicione 1 ao valor definido para a sinalização.

Para informações sobre como configurar sinalizações e analisar as sinalizações compatíveis com essa extensão, consulte Configurar sinalizações do banco de dados.

pgtt

Para começar a usar essa extensão em uma instância, defina a sinalização pgtt.enabled como on. Para informações sobre como configurar sinalizações e analisar as sinalizações compatíveis com essa extensão, consulte Como configurar sinalizações do banco de dados.

pg_visibility

Essa extensão fornece uma maneira de examinar o mapa de visibilidade (VM) e as informações de visibilidade no nível da página de uma tabela. Para mais informações, consulte pg_visibility na documentação do PostgreSQL.

PL/Proxy

Essa extensão é um gerenciador de linguagem processual que permite chamadas de procedimento remoto entre bancos de dados do PostgreSQL, com fragmentação opcional.

Para mais informações, consulte a documentação do PL/Proxy.

As instâncias de destino para conexões precisam estar na mesma rede VPC que a instância de conexão. Além disso, não é possível escolher, no console do Google Cloud, o botão Permitir apenas conexões SSL para instâncias de cluster.

Para se conectar a outros bancos de dados na mesma instância, não é possível definir o host como localhost ou 127.0.0.1. Em vez disso, você precisa usar o endereço IP mostrado para sua instância no console do Google Cloud.

Consulte também postgres_fdw e dblink neste documento.

postgresql_anonymizer

Para começar a usar essa extensão em uma instância, defina a sinalização cloudsql.enable_anon como on. Para informações sobre como configurar sinalizações e analisar as sinalizações compatíveis com essa extensão, consulte Como configurar sinalizações do banco de dados.

postgres_fdw

Essa extensão permite que tabelas de outros bancos de dados PostgreSQL ("estrangeiros") sejam expostas como tabelas "estrangeiras" no banco de dados atual. Essas tabelas estão disponíveis para uso, quase como se fossem tabelas locais. Para mais informações, consulte postgres_fdw na documentação do PostgreSQL.

Atualmente, essa extensão funciona para duas instâncias de IP privado do Cloud SQL na mesma rede VPC ou para bancos de dados cruzados na mesma instância.

Para se conectar a outros bancos de dados na mesma instância, não é possível definir o host como localhost ou 127.0.0.1. Em vez disso, você precisa usar o endereço IP mostrado para sua instância no console do Google Cloud.

Além disso, para uma instância em que dados externos são armazenados, é possível escolher a opção Permitir apenas conexões SSL no console do Google Cloud. Não é possível escolher a opção Exigir certificados do cliente confiáveis. Somente o cloudsqlsuperuser pode ser o proprietário de um wrapper de dados externos postgres_fdw.

Veja também PL/Proxy e dblink neste documento.

postgresql-hll

Essa extensão introduz um novo tipo de dados, hll, que é uma estrutura de dados do HyperLogLog. Para mais informações, consulte a documentação postgresql-hll.