附录 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. oid2name
- F.23. pageinspect
- F.24. passwordcheck
- F.25. pg_archivecleanup
- F.26. pgbench
- F.27. pg_buffercache
- F.28. pgcrypto
- F.29. pg_freespacemap
- F.30. pgrowlocks — 显示表的行锁信息
- F.31. pg_standby
- F.32. pg_stat_statements
- F.33. pgstattuple — 获取元组级统计信息
- F.34. pg_test_fsync
- F.35. pg_trgm
- F.36. pg_upgrade
- F.37. seg — 用于线段或浮点区间的数据类型
- F.38. sepgsql — 基于 SELinux 标签的强制访问控制(MAC)安全模块
- F.39. spi
- F.40. sslinfo
- F.41. tablefunc
- F.42. test_parser
- F.43. tsearch2
- F.44. unaccent
- F.45. uuid-ossp
- F.46. vacuumlo
- F.47. xml2
本附录包含关于 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 节。
F.1. adminpack #
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
|