附录 F. 额外提供的模块与扩展
目录
- F.1. adminpack
- F.2. auth_delay
- F.3. auto_explain
- F.4. btree_gin
- F.5. btree_gist
- F.6. chkpass
- F.7. citext — 大小写不敏感的字符串类型
- F.8. cube — 多维立方体数据类型
- F.9. dblink
- dblink_connect — opens a persistent connection to a remote database
- dblink_connect_u — opens a persistent connection to a remote database, insecurely
- dblink_disconnect — closes a persistent connection to a remote database
- dblink — executes a query in a remote database
- dblink_exec — executes a command in a remote database
- dblink_open — opens a cursor in a remote database
- dblink_fetch — returns rows from an open cursor in a remote database
- dblink_close — closes a cursor in a remote database
- dblink_get_connections — returns the names of all open named dblink connections
- dblink_error_message — gets last error message on the named connection
- dblink_send_query — sends an async query to a remote database
- dblink_is_busy — checks if connection is busy with an async query
- dblink_get_notify — retrieve async notifications on a connection
- dblink_get_result — gets an async query result
- dblink_cancel_query — cancels any active query on the named connection
- dblink_get_pkey — returns the positions and field names of a relation's primary key fields
- dblink_build_sql_insert — builds an INSERT statement using a local tuple, replacing the primary key field values with alternative supplied values
- dblink_build_sql_delete — builds a DELETE statement using supplied values for primary key field values
- dblink_build_sql_update — builds an UPDATE statement using a local tuple, replacing the primary key field values with alternative supplied values
- F.10. dict_int — 用于整数的示例全文搜索词典
- F.11. dict_xsyn — 示例同义词全文检索词典
- F.12. dummy_seclabel
- F.13. earthdistance — 计算大圆距离
- F.14. file_fdw
- F.15. fuzzystrmatch — 确定字符串的相似性和距离
- F.16. hstore
- F.17. intagg — 整数聚合器和枚举器
- F.18. intarray
- F.19. isn
- F.20. lo — 管理大对象
- F.21. ltree
- F.22. pageinspect
- F.23. passwordcheck
- F.24. pg_buffercache
- F.25. pgcrypto
- F.26. pg_freespacemap
- F.27. pgrowlocks — 显示表的行锁信息
- F.28. pg_stat_statements
- F.29. pgstattuple — 获取元组级统计信息
- F.30. pg_trgm
- F.31. seg — 用于线段或浮点区间的数据类型
- F.32. sepgsql
- F.33. spi
- F.34. sslinfo
- F.35. tablefunc
- F.36. tcn
- F.37. test_parser
- F.38. tsearch2
- F.39. unaccent
- F.40. uuid-ossp
- F.41. xml2
本附录与下一附录包含有关
PostgreSQL 发行版中
contrib 目录中可选组件的信息。这些组件包括移植工具、分析实用程序,以及不属于 PostgreSQL 核心系统的插件功能。之所以将它们单独提供,主要是因为它们面向的受众有限,或者实验性太强,不适合作为主源码树的一部分。但这并不影响它们的实用性。
本附录介绍位于 contrib 中的扩展以及其他服务器插件模块库。附录 G介绍实用程序。
从源码发行版构建时,除非构建“world”目标(见步骤 2),否则这些组件不会自动构建。可以运行以下命令来构建并安装所有组件:
gmakegmake install
这些命令应在已配置好的源码树的contrib目录中运行;若只想构建并安装某个选定的模块,则可在该模块的子目录中执行同样的命令。许多模块都带有回归测试,可以运行以下命令来执行:
gmake check这是在安装前执行的命令;也可以运行
gmake installcheck,此时需要已有一个PostgreSQL服务器正在运行。
如果你使用的是预打包版本的 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 节。
但请注意,其中有些模块并不是这种意义上的“扩展”,而是通过其他方式加载到服务器中,例如借助shared_preload_libraries。详情见各模块文档。
F.1. adminpack #
adminpack提供了一些支持函数,pgAdmin和其他管理工具可以使用它们来提供额外功能,例如远程管理服务器日志文件。所有这些函数都只允许超级用户使用。
表 F.1所示的函数提供对服务器所在机器上文件的写入访问。(另请参阅表 9.66中的函数,它们提供只读访问。)只能访问数据库集簇目录内的文件,但相对路径和绝对路径都可以使用。
表 F.1. adminpack 函数
| 名称 | 返回类型 | 描述 |
|---|---|---|
pg_catalog.pg_file_write(filename text, data text, append boolean) | bigint | 写入文本文件或向其追加内容 |
pg_catalog.pg_file_rename(oldname text, newname text [, archivename text]) | boolean | 重命名文件 |
pg_catalog.pg_file_unlink(filename text) | boolean | 删除文件 |
pg_catalog.pg_logdir_ls() | setof record | 列出log_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所示的函数已经弃用,不应在新应用中使用;应改用表 9.59和表 9.66所示的函数。adminpack提供这些函数只是为了兼容旧版本的pgAdmin。
表 F.2. 已弃用的adminpack函数
| 名称 | 返回类型 | 描述 |
|---|---|---|
pg_catalog.pg_file_read(filename text, offset bigint, nbytes bigint) | text | pg_read_file()的别名 |
pg_catalog.pg_file_length(filename text) | bigint | 与pg_stat_file()返回的size列相同 |
pg_catalog.pg_logfile_rotate() | integer | pg_rotate_logfile()的别名,但请注意它返回整数 0 或 1,而不是 boolean |