

# Versões de extensões do PostgreSQL compatíveis
<a name="PostgreSQL.Concepts.General.FeatureSupport.Extensions"></a>

O RDS para PostgreSQL é compatível com várias extensões do PostgreSQL. A comunidade PostgreSQL às vezes se refere a elas como módulos. Extensões expandem a funcionalidade fornecida pelo mecanismo PostgreSQL. Você pode encontrar uma lista de extensões às quais o Amazon RDS oferece suporte no grupo de parâmetros de banco de dados padrão para essa versão do PostgreSQL. Você também pode ver a lista de extensões atuais que usam o `psql` exibindo o parâmetro `rds.extensions` conforme o exemplo a seguir.

```
SHOW rds.extensions; 
```

**nota**  
Os parâmetros adicionados em uma versão secundária podem ser exibidos incorretamente ao usar o parâmetro `rds.extensions` em `psql`. 

A partir do RDS para PostgreSQL 13, determinadas extensões podem ser instaladas por usuários do banco de dados que não sejam o `rds_superuser`. Elas são conhecidas como *extensões confiáveis*. Para saber mais, consulte [Extensões confiáveis do PostgreSQL](#PostgreSQL.Concepts.General.Extensions.Trusted). 

Determinadas versões do RDS para PostgreSQL oferecem suporte ao parâmetro `rds.allowed_extensions`. Esse parâmetro permite que um `rds_superuser` limite as extensões que podem ser instaladas na instância de banco de dados do RDS para PostgreSQL. Para obter mais informações, consulte [Restringir a instalação de extensões do PostgreSQL](#PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction). 

Para listas das versões e extensões do PostgreSQL compatíveis com cada versão disponível do RDS para PostgreSQL, consulte [“PostgreSQL extensions supported on Amazon RDS”](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html) (Extensões do PostgreSQL compatíveis com o Amazon RDS) em *“Amazon RDS for PostgreSQL Release Notes”* (Notas de lançamento do Amazon RDS para PostgreSQL). 

## Restringir a instalação de extensões do PostgreSQL
<a name="PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction"></a>

Você pode restringir quais extensões podem ser instaladas em uma instância de banco de dados PostgreSQL. Por padrão, esse parâmetro não está definido, portanto, qualquer extensão compatível pode ser adicionada se o usuário tiver permissões para isso. Para fazer isso, defina o parâmetro `rds.allowed_extensions` para uma string de nomes de extensão separados por vírgulas. Ao adicionar uma lista de extensões a esse parâmetro, você identifica explicitamente as extensões que a instância de banco de dados do RDS para PostgreSQL pode usar. Somente essas extensões podem ser instaladas na instância de banco de dados PostgreSQL.

A string padrão para o `rds.allowed_extensions` parâmetro é '\$1', o que significa que qualquer extensão disponível para a versão do motor pode ser instalada. Alterar o parâmetro `rds.allowed_extensions` não requer uma reinicialização do banco de dados porque é um parâmetro dinâmico.

O mecanismo de instância de banco de dados PostgreSQL deve ser uma das seguintes versões para você usar o parâmetro `rds.allowed_extensions`:
+ Todas as versões 16 do PostgreSQL
+ PostgreSQL 15 e todas as versões posteriores
+ PostgreSQL 14 e todas as versões posteriores
+ PostgreSQL 13.3 e versões secundárias posteriores
+ PostgreSQL 12.7 e versões secundárias posteriores

 Para ver quais instalações de extensão são permitidas, use o comando psql a seguir.

```
postgres=> SHOW rds.allowed_extensions;
 rds.allowed_extensions
------------------------
 *
```

Se uma extensão foi instalada antes de ser deixada de fora da lista no parâmetro `rds.allowed_extensions`, a extensão ainda pode ser usada normalmente, e comandos como `ALTER EXTENSION` e `DROP EXTENSION` continuarão a funcionar. No entanto, depois que uma extensão é restrita, `CREATE EXTENSION` os comandos para a extensão restrita falharão.

Instalação de dependências de extensão com `CREATE EXTENSION CASCADE` também são restritas. A extensão e suas dependências devem ser especificadas em `rds.allowed_extensions`. Se uma instalação de dependência de extensão falhar, a instrução `CREATE EXTENSION CASCADE` inteira falhará. 

Se uma extensão não estiver incluída no parâmetro `rds.allowed_extensions`, você verá um erro como o mostrado a seguir, caso tente instalá-la.

```
ERROR: permission denied to create extension "extension-name" 
HINT: This extension is not specified in "rds.allowed_extensions".
```

## Extensões confiáveis do PostgreSQL
<a name="PostgreSQL.Concepts.General.Extensions.Trusted"></a>

Para instalar a maioria das extensões do PostgreSQL são necessários privilégios de `rds_superuser`. O PostgreSQL 13 introduziu as extensões confiáveis, o que reduz a necessidade de privilégios de `rds_superuser` para usuários comuns. Com esse recurso, os usuários podem instalar diversas extensões, se tiverem o privilégio `CREATE` no banco de dados atual, em vez de precisarem ter a função `rds_superuser`. Para obter mais informações, consulte o comando SQL [CREATE EXTENSION](https://www.postgresql.org/docs/current/sql-createextension.html) na documentação do PostgreSQL. 

A seguir listamos as extensões que podem ser instaladas por um usuário que tem o privilégio `CREATE` no banco de dados atual e não necessitam da função `rds_superuser`:
+ bool\$1plperl
+ [btree\$1gin](http://www.postgresql.org/docs/current/btree-gin.html)
+ [btree\$1gist](http://www.postgresql.org/docs/current/btree-gist.html)
+ [citext ](http://www.postgresql.org/docs/current/citext.html)
+ [cube ](http://www.postgresql.org/docs/current/cube.html)
+ [ dict\$1int ](http://www.postgresql.org/docs/current/dict-int.html)
+ [fuzzystrmatch](http://www.postgresql.org/docs/current/fuzzystrmatch.html)
+  [hstore](http://www.postgresql.org/docs/current/hstore.html)
+ [ intarray](http://www.postgresql.org/docs/current/intarray.html)
+ [isn](http://www.postgresql.org/docs/current/isn.html)
+ jsonb\$1plperl
+ [ltree ](http://www.postgresql.org/docs/current/ltree.html)
+ [pg\$1trgm](http://www.postgresql.org/docs/current/pgtrgm.html)
+ [pgcrypto](http://www.postgresql.org/docs/current/pgcrypto.html)
+ [plperl](https://www.postgresql.org/docs/current/plperl.html)
+ [plpgsql](https://www.postgresql.org/docs/current/plpgsql.html)
+ [pltcl](https://www.postgresql.org/docs/current/pltcl-overview.html)
+ [tablefunc](http://www.postgresql.org/docs/current/tablefunc.html) 
+ [tsm\$1system\$1rows](https://www.postgresql.org/docs/current/tsm-system-rows.html)
+ [tsm\$1system\$1time](https://www.postgresql.org/docs/current/tsm-system-time.html)
+ [unaccent](http://www.postgresql.org/docs/current/unaccent.html)
+ [uuid-ossp](http://www.postgresql.org/docs/current/uuid-ossp.html)

Para listas das versões e extensões do PostgreSQL compatíveis com cada versão disponível do RDS para PostgreSQL, consulte [PostgreSQL extensions supported on Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html) (Extensões do PostgreSQL compatíveis com o Amazon RDS) em *“Amazon RDS for PostgreSQL Release Notes”* (Notas de lançamento do Amazon RDS para PostgreSQL). 