pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
目录
本附录包含关于 PostgreSQL 发布的 contrib 目录中各模块的信息。其中包括移植工具、 分析实用程序,以及不属于 PostgreSQL 核心系统的插件特性——之所以 不纳入核心,主要是因为它们面向有限的用户群,或者过于实验性, 不适合进入主源码树。但这并不妨碍它们发挥作用。
从源码发布构建时,除非构建"world"目标 (见 步骤 2),否则这些模块不会自动构建。 你可以用以下命令构建并安装所有这些模块:
gmakegmake install
在已完成配置的源码树的 contrib 目录中运行; 或者,要只构建并安装某一个选定的模块,就在该模块的子目录中执行 相同的操作。许多模块带有回归测试,可以通过运行以下命令执行:
gmake installcheck
前提是已有一个 PostgreSQL 服务器在运行。(注意, 这里不支持 gmake check;你必须有一个可用的数据库服务 器来执行这些测试,而且必须已经构建并安装了要测试的模块。)
如果你使用的是预打包版本的 PostgreSQL, 这些组件通常会作为单独的子包提供,例如 postgresql-contrib。
许多模块提供新的用户定义函数、操作符或类型。安装代码后,要使用其中某个模块,就需要在数据库系统中注册新的 SQL 对象。在PostgreSQL9.1 及后续版本中,这可通过执行CREATE EXTENSION命令完成。在一个新建的数据库中,你可以直接执行:
CREATE EXTENSION module_name;
该命令必须由数据库超级用户执行。它只会在当前数据库中注册新的 SQL 对象,因此需要在每个希望使用该模块功能的数据库中运行它。另一种做法是在数据库template1中运行它,这样该扩展默认会被复制到随后创建的数据库中。
许多模块允许你把它们的对象安装到你选择的模式中。为此,可在 CREATE EXTENSION 命令中加上 SCHEMA 。默认情况下,这些对象会被放在你当前的创建目标模式中,通常是 schema_namepublic。
如果你的数据库是从PostgreSQL9.1 之前的版本通过转储和重新载入升级而来的,并且其中一直在使用该模块的 9.1 之前版本,则应改为执行:
CREATE EXTENSION module_name FROM unpackaged;
这会将该模块在 9.1 之前版本中的对象更新为一个正规的扩展对象。今后该模块的更新将由ALTER EXTENSION管理。有关扩展更新的更多信息,请参见第 35.15 节。
adminpack提供了一些支持函数,pgAdmin和其他管理工具可以使用它们来提供额外功能,例如远程管理服务器日志文件。所有这些函数都只允许超级用户使用。
表 F.1 中所示的函数提供对服务器所在机器上文件的写访问。 (See also the functions in 表 9.62, which provide read-only access.) Only files within the database cluster directory can be accessed, but either a relative or absolute path is allowable.
表 F.1. adminpack 函数
| Name | Return Type | Description |
|---|---|---|
pg_catalog.pg_file_write(filename text, data text, append boolean) |
bigint |
Write, or append to, a text file |
pg_catalog.pg_file_rename(oldname text, newname text [, archivename text]) |
boolean |
Rename a file |
pg_catalog.pg_file_unlink(filename text) |
boolean |
Remove a file |
pg_catalog.pg_logdir_ls() |
setof record |
List the log files in the log_directory directory |
pg_file_write将指定的data写入由filename指定的文件中。如果append为 false,则该文件必须尚不存在。如果append为 true,则该文件可以已经存在,并且若已存在则会向其追加内容。返回写入的字节数。
pg_file_rename重命名文件。如果省略archivename或其值为空值,则它只是将oldname重命名为newname(后者必须尚不存在)。如果提供了archivename,它会先将newname重命名为archivename(后者必须尚不存在),然后再将oldname重命名为newname。如果第二个重命名步骤失败,它会在报告错误之前尝试将archivename再改回newname。成功时返回 true;如果源文件不存在或不可写,则返回 false;其他情况会抛出错误。
pg_file_unlink删除指定的文件。成功时返回 true;如果指定的文件不存在,或者unlink()调用失败,则返回 false;其他情况会抛出错误。
pg_logdir_ls返回log_directory目录中所有日志文件的起始时间戳和路径名。要使用此函数,log_filename参数必须保持默认设置(postgresql-%Y-%m-%d_%H%M%S.log)。
表 F.2 中所示的函数已被废弃,不应在新应用中使用; instead use those shown in 表 9.56 and 表 9.62. These functions are provided in adminpack only for compatibility with old versions of pgAdmin.
表 F.2. 已弃用的adminpack函数
| Name | Return Type | Description |
|---|---|---|
pg_catalog.pg_file_read(filename text, offset bigint, nbytes bigint) |
text |
Alternate name for pg_read_file() |
pg_catalog.pg_file_length(filename text) |
bigint |
Same as size column returned by pg_stat_file() |
pg_catalog.pg_logfile_rotate() |
integer |
Alternate name for pg_rotate_logfile(), but note that it returns integer 0 or 1 rather than boolean |
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。