附录 F. 额外提供的模块
目录
- F.1. adminpack
- F.2. amcheck
- F.3. auth_delay
- F.4. auto_explain
- F.5. bloom
- F.6. btree_gin
- F.7. btree_gist
- F.8. citext
- F.9. cube
- F.10. dblink
- dblink_connect — 打开到远程数据库的持久连接
- dblink_connect_u — 不安全地打开到远程数据库的持久连接
- dblink_disconnect — 关闭到远程数据库的持久连接
- dblink — 在远程数据库中执行查询
- dblink_exec — 在远程数据库中执行命令
- dblink_open — 在远程数据库中打开游标
- dblink_fetch — 返回远程数据库中已打开游标的行
- dblink_close — 关闭远程数据库中的游标
- dblink_get_connections — 返回所有打开的命名 dblink 连接的名称
- dblink_error_message — 获取命名连接上的最后一条错误消息
- dblink_send_query — 向远程数据库发送异步查询
- dblink_is_busy — 检查连接是否正忙于异步查询
- dblink_get_notify — 检索连接上的异步通知
- dblink_get_result — 获取异步查询结果
- dblink_cancel_query — 取消命名连接上的任何活动查询
- dblink_get_pkey — 返回关系主键字段的位置和字段名
- dblink_build_sql_insert — 使用本地元组构造 INSERT 语句,并用提供的替代值替换主键字段值
- dblink_build_sql_delete — 使用提供的主键字段值构造 DELETE 语句
- dblink_build_sql_update — 使用本地元组构造 UPDATE 语句,并用提供的替代值替换主键字段值
- F.11. dict_int
- F.12. dict_xsyn
- 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. pg_prewarm
- F.28. pgrowlocks
- F.29. pg_stat_statements
- F.30. pgstattuple
- F.31. pg_trgm
- F.32. pg_visibility
- F.33. postgres_fdw
- F.34. seg
- F.35. sepgsql
- F.36. spi
- F.37. sslinfo
- F.38. tablefunc
- F.39. tcn
- F.40. test_decoding
- F.41. tsm_system_rows
- F.42. tsm_system_time
- F.43. unaccent
- F.44. uuid-ossp
- F.45. xml2
本附录与下一附录包含有关
PostgreSQL 发行版中
contrib 目录中可以找到的模块的信息。这些模块包括移植工具、分析实用程序,以及不属于 PostgreSQL 核心系统的插件功能,主要是因为它们面向的受众有限,或者实验性太强,不适合作为主源码树的一部分。但这并不影响它们的实用性。
本附录介绍位于 contrib 中的扩展以及其他服务器插件模块。附录 G 介绍实用程序。
从源码发行版构建时,除非构建“world”目标(见步骤 2),否则这些组件不会自动构建。可以运行以下命令来构建并安装所有组件:
makemake install
这些命令应在已配置好的源码树的 contrib 目录中运行;若只想构建并安装某个选定的模块,则可在该模块的子目录中执行同样的命令。许多模块都带有回归测试,可以运行以下命令来执行:
make check
这是在安装前执行的命令;也可以运行
make installcheck
此时需要已有一个 PostgreSQL 服务器正在运行。
如果你使用的是预打包版本的 PostgreSQL,这些模块通常会作为单独的子包提供,例如
postgresql-contrib。
许多模块提供新的用户定义函数、操作符或类型。安装代码后,要使用其中某个模块,就需要在数据库系统中注册新的 SQL 对象。这可通过执行 CREATE EXTENSION 命令完成。在一个新建的数据库中,你可以直接执行:
CREATE EXTENSION module_name;
该命令只会在当前数据库中注册新的 SQL 对象,因此需要在每个希望使用该模块功能的数据库中运行它。另一种做法是在数据库 template1 中运行它,这样该扩展默认会被复制到随后创建的数据库中。
对于所有这些模块,除非该模块被视为“受信任的”,否则
CREATE EXTENSION 必须由数据库超级用户执行;如果模块是受信任的,则任何在当前数据库上具有 CREATE 权限的用户都可以执行该命令。下文各节会标明哪些模块是受信任的。一般来说,受信任模块是那些不能提供对数据库外部功能访问的模块。
许多模块允许你将其对象安装到所选的模式中。要这样做,请在 CREATE EXTENSION 命令中加入 SCHEMA 。默认情况下,这些对象会被放入当前的创建目标模式,而该模式默认是 schema_namepublic。
但请注意,其中有些模块并不是这种意义上的“扩展”,而是通过其他方式加载到服务器中,例如借助 shared_preload_libraries。详情见各模块文档。
F.1. adminpack #
adminpack 提供了一些支持函数,pgAdmin 和其他管理与维护工具可使用这些函数提供附加功能,例如远程管理服务器日志文件。默认情况下,只有超级用户才允许使用所有这些函数,但也可以使用 GRANT 命令允许其他用户使用。
表 F.1 中显示的函数提供对承载服务器的机器上文件的写访问。(另见表 9.95 中的函数,它们提供只读访问。)除非用户是超级用户,或者根据函数的不同被授予 pg_read_server_files 或 pg_write_server_files 角色之一,否则只能访问数据库集簇目录内的文件,但可以使用相对路径或绝对路径。
表 F.1. adminpack 函数
函数 描述 |
|---|
写入文本文件,或向其追加内容。 |
将文件或目录刷盘。 |
重命名文件。 |
删除文件。 |
列出 |
pg_file_write 将指定的 data 写入由 filename 指定的文件中。如果 append 为 false,则该文件必须尚不存在。如果 append 为 true,则该文件可以已经存在,并且若已存在则会向其追加内容。返回写入的字节数。
pg_file_sync 对由 filename 指定的文件或目录执行 fsync。失败时会抛出错误(例如,指定的文件不存在)。请注意,data_sync_retry 对此函数没有影响,因此即使数据库文件刷盘失败,也不会引发 PANIC 级别的错误。
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)。