这个附录和下一个附录介绍在PostgreSQL发布的contrib目录中能找到的模块。包括移植工具、分析工具和插件特性,它们不是 PostgreSQL 核心系统的一部分,主要因为只有很少的用户会用到或者是还处于实验阶段。但这不会影响它们的使用。
这个附录覆盖了在contrib中能找到的扩展和其他服务器插件模块。附录 G覆盖了工具程序。
当从源码发布包编译时,这些组件不会自动被编译,除非编译了“world”目标(见步骤 2)。 可以在已配置的源代码树中的contrib路径下,通过下面的命令编译安装:
make make install
或者只在选中模块的子目录下编译和安装。许多模块都有回归测试,可以通过下面的命令在安装之前运行测试:
make check
或者在一个PostgreSQL服务器正在运行时,运行
make installcheck
如果是用的是预打包版的PostgreSQL,这些模块通常可以作为一个单独的子包来获得, 如postgresql-contrib。
许多模块提供新的用户自定义函数、操作符或数据类型。在已经安装了代码之后,为了使用这些模块,需要在数据库系统中注册新的 SQL 对象。在PostgreSQL 9.1 及之后的版本中,可以通过执行一个CREATE EXTENSION命令来完成。在一个新的数据库中,你可以简单地
CREATE EXTENSION module_name;
这个命令必须由一个数据库超级用户运行。这只会把新的 SQL 对象注册在当前数据库中,因此你需要在每一个你希望使用该模块功能的数据库中执行这个命令。另外,可以在template1数据库中运行这个命令以便该扩展能被默认地复制到后续创建的数据库中。
很多模块允许你将它们的对象安装在你选择的一个模式中。要这样做,需要将SCHEMA schema_name加入到CREATE EXTENSION命令中。默认情况下,这些对象将被放置在你的当前创建目标模式中,通常是public。
如果你的数据库是从一个PostgreSQL 9.1 之前版本的转储载入而来,并且你已经在其中使用了一个 9.1 之前版本的该模块,你应该使用
CREATE EXTENSION module_name FROM unpackaged;
这会把该 9.1 之前的模块对象更新到一个正确的扩展对象。未来对该模块的更新将由ALTER EXTENSION管理。更多关于扩展更新的信息,请见第 35.15 节。
不过注意,有一些这样的模块不是这种意义上的"扩展",而是以某种其他方式被载入到服务器,例如使用shared_preload_libraries方式。每个模块详见其文档。