

# 支持的 PostgreSQL 扩展版本
<a name="PostgreSQL.Concepts.General.FeatureSupport.Extensions"></a>

RDS for PostgreSQL 支持许多 PostgreSQL 扩展。PostgreSQL 社区有时将这些扩展称为模块。扩展针对 PostgreSQL 引擎提供的功能进行了扩展。您可以在 PostgreSQL 版本的默认数据库参数组中找到 Amazon RDS 支持的扩展列表。您还可使用 `psql` 通过显示 `rds.extensions` 参数来查看当前扩展列表，如以下示例中所示。

```
SHOW rds.extensions; 
```

**注意**  
在 `rds.extensions` 中使用 `psql` 参数时，可能不会准确显示在次要版本中添加的参数。

从 RDS for PostgreSQL 13 开始，某些扩展可以由数据库用户（而不是 `rds_superuser`）安装。它们称为*可信扩展*。要了解更多信息，请参阅[PostgreSQL 可信扩展](#PostgreSQL.Concepts.General.Extensions.Trusted)。

某些版本的 RDS for PostgreSQL 支持 `rds.allowed_extensions` 参数。这个参数允许 `rds_superuser` 限制可以在 RDS for PostgreSQL 数据库实例中安装的扩展。有关更多信息，请参阅 [限制 PostgreSQL 扩展的安装](#PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction)。

对于每个可用 RDS For PostgreSQL 版本支持的 PostgreSQL 扩展和版本的列表，请参阅《Amazon RDS for PostgreSQL 发行说明》**中的 [Amazon RDS 上支持的 PostgreSQL 扩展](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html)。

## 限制 PostgreSQL 扩展的安装
<a name="PostgreSQL.Concepts.General.FeatureSupport.Extensions.Restriction"></a>

您可以限制在 PostgreSQL 数据库实例上安装哪些扩展。默认情况下，不设置此参数，因此如果用户有添加扩展的权限，则可以添加任何受支持的扩展。为此，请将 `rds.allowed_extensions` 参数设置为一串以逗号分隔的扩展名称。通过向此参数添加扩展列表，您可以明确标识 RDS for PostgreSQL 数据库实例可使用的扩展。然后，只有这些扩展才能安装在 PostgreSQL 数据库实例中。

`rds.allowed_extensions` 参数的默认字符串为 '\$1'，这意味着可以安装引擎版本可用的任何扩展。更改 `rds.allowed_extensions` 参数不需要重新启动数据库，因为它是动态参数。

PostgreSQL 数据库实例引擎必须是以下版本之一才能使用 `rds.allowed_extensions` 参数：
+ 所有 PostgreSQL 16 版本
+ PostgreSQL 15 及所有更高版本
+ PostgreSQL 14 及所有更高版本
+ PostgreSQL 13.3 及更高的次要版本
+ PostgreSQL 12.7 及更高的次要版本

 要查看允许哪些扩展安装，请使用以下 psql 命令。

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

如果扩展是在其被 `rds.allowed_extensions` 参数列表排除之前安装的，则该扩展仍可以正常使用，并且诸如 `ALTER EXTENSION` 和 `DROP EXTENSION` 之类的命令将继续运行。但是，在扩展被限制后，限制扩展的 `CREATE EXTENSION` 命令将失败。

使用 `CREATE EXTENSION CASCADE` 安装扩展依赖项也受到限制。必须在 `rds.allowed_extensions` 中指定扩展及其依赖项。如果扩展依赖项安装失败，整个 `CREATE EXTENSION CASCADE` 语句将失败。

如果 `rds.allowed_extensions` 参数中未包含扩展，则尝试安装时将看到如下错误。

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

## PostgreSQL 可信扩展
<a name="PostgreSQL.Concepts.General.Extensions.Trusted"></a>

安装大部分 PostgreSQL 扩展都需要具备 `rds_superuser` 权限。PostgreSQL 13 推出了可信扩展，这些扩展减少了授予普通用户 `rds_superuser` 权限的需求。使用此特征，用户可以安装许多扩展（如果他们具有对当前数据库的 `CREATE` 权限，而不要求具备 `rds_superuser` 角色）。有关详细信息，请参阅 PostgreSQL 文档中的 SQL [创建扩展](https://www.postgresql.org/docs/current/sql-createextension.html)命令。

下面列出了具有对当前数据库的 `CREATE` 权限，但不需要具备 `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)

对于每个可用 RDS For PostgreSQL 版本支持的 PostgreSQL 扩展和版本的列表，请参阅《Amazon RDS for PostgreSQL 发行说明》**中的 [Amazon RDS 上支持的 PostgreSQL 扩展](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-extensions.html)。