# E.222\. 版本 7.0
> **发布日期:** 2000-05-08
这个版本包含许多方面的改进,表现了 PostgreSQL 的不断成长。在7.0中有比任意以前版本更多的改进和修复。开发人员相信这是目前最好的版本; 我们尽力做到只发布稳固的版本,这个版本也不例外。
这个版本中的主要变化:
外键
现在我们已经实现了Foreign keys(外键),只有 PARTIAL MATCH 外键没有实现。 许多用户要求增加这个特性,而我们很高兴现在我们能提供这个特性.
优化器检修
继续一年前开始的工作,优化器现在已经进步多了,允许更好的查询规划选择和更好的性能,而且内存用得更少。
升级了psql
psql,是我们的交互终端监控器,升级并增加了许多新特性。 参阅 psql 手册页获取细节。
连接语法
我们现在支持 SQL92 连接(JOIN)语法了,尽管目前的版本只支持 `INNER JOIN` 。 `JOIN`,`NATURAL JOIN`,`JOIN`/`USING`, `JOIN`/`ON` 都可用,这些是字段集合名称.
## E.222.1\. 迁移到版本 7.0
那些从任何以前版本的 PostgreSQL 移植的人都需要用 pg_dump 做一次转储/恢复工作。对于从 6.5.* 升级的用户, 你可以使用 pg_upgrade 升级到这个版本;不过, 升级最稳固的方法还是一次完整的转储/重载安装。
这个新版本要考虑的接口和兼容性问题包括:
* 日期/时间类型 `datetime` 和 `timespan` 已经被 SQL92 定义类型 `timestamp` 和 `interval` 取代了。管我们做了一些努力令 PostgreSQL 可以识别这些过时的类型名并把它们转换成新类型名以简化类型转化, 但是这个机制可能不完全对你的现有应用透明。
* 优化器在查询开销计算方面已经有了显著的提升。有时,这样将令查询时间减少, 因为优化器做出了查询规划的更好选择。不过,有一小部分情况下, 通常是数据不正常(病态)分布时,你的查询时间可能增加。如果你处理大量的数据, 你可能要检查你的查询以核实性能.
* JDBC 和 ODBC 接口都升级和扩展了。
* 字符串函数 `CHAR_LENGTH` 现在是一个内部函数。 以前版本是把它转换成对 `LENGTH` 的调用, 这样做会导致与其他类型实现的 `LENGTH` 的混淆,比如几何类型.
## E.222.2\. 修改列表
```
Bug 修复
---------
阻止函数调用超出参数的最大数目 (Tom)
改善 CASE 构造 (Tom)
修复 SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
修复 SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
修复 GROUP BY 扫描 bug (Tom)
改进 SQL 语法处理 (Tom)
修复包含在 INSERT ... SELECT ... 里的视图 (Tom)
修复 SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
修复 subselects in INSERT ... SELECT (Tom)
阻止 INSERT ... SELECT ... ORDER BY (Tom)
修复大于 2GB 的关系,包括 vacuum
提高传播系统表更改为其他后端 (Tom)
提高传播用户表更改为其他后端 (Tom)
修复在复杂的环境中处理临时表 (Bruce, Tom)
在表打开时允许表锁,提高并发可靠性 (Tom)
在 pg_dump 中适当的引用序列名 (Ross J. Reedstrom)
在有其他访问时阻止 DROP DATABASE
如果没有行被处理那么阻止 GROUP BY 返回任何行 (Tom)
如果没有行匹配 WHERE 那么修复 SELECT COUNT(1) FROM table WHERE ...' (Tom)
修复 pg_upgrade 使其为 MVCC 工作 (Tom)
修复 SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
修复 "f1 datetime DEFAULT 'now'" (Tom)
修复 DEFAULT 中使用的 CURRENT_DATE 的问题 (Tom)
允许只有注释的行,也允许 ;;; 行 (Tom)
改进在磁盘满写入磁盘失败之后的恢复 (Hiroshi)
修复在 FROM 中提到表而没有连接该表的情况 (Tom)
允许 HAVING 子句不带有聚集函数 (Tom)
修复 "--" 注释和没有尾随的新行,就像在 Perl 接口中看到的那样
改善 pg_dump 失败错误报告 (Bruce)
允许排序和哈希超过 2GB 文件大小 (Tom)
修复 pg_dump 转储非继承的规则 (Tom)
修复 NULL 处理比较 (Tom)
修复由于 CREATE/DROP 命令失败引起的不一致的状态 (Hiroshi)
修复带有破折号的 dbname
阻止 DROP INDEX 干扰其他后端 (Tom)
修复 verify_password() 中的文件描述符泄露
修复 "Unable to identify an operator =$" 问题
修复 ODBC,这样如果启用了 CommLog 和 Debug 不会有 segfault (Dirk Niggemann)
修复递归的退出调用 (Massimo)
修复超长的时区 (Jeroen van Vianen)
使 pg_dump 保存主键信息 (Peter E)
阻止带有单引号的数据库 (Peter E)
阻止在事务内部 DROP DATABASE (Peter E)
ecpg 内存泄露修复 (Stephen Birch)
修复 SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
Y2K 时间戳修复 (Massimo)
修复 VACUUM 'HEAP_MOVED_IN 不是预期的的错误 (Tom)
修复带有包含空格的表/字段的视图 (Tom)
阻止在索引上的权限 (Peter E)
修复产生错误时自旋锁卡住的问题 (Hiroshi)
修复 Linux 上的 ipcclean
修复 NULL 约束条件的处理 (Tom)
修复 odbc 驱动中的内存泄露 (Nick Gorham)
修复 UNION 表上的权限检查 (Tom)
修复以允许 SELECT 'a' LIKE 'a' (Tom)
修复 SELECT 1 + NULL (Tom)
修复 CHAR
修复数值类型上的 log() (Tom)
反对 ':' 和 ';' 操作符
允许 vacuum 临时表
不允许继承的字段和新字段的名字相同
当磁盘空间被耗尽时恢复或强制失败 (Hiroshi)
修复 AS 字段匹配结果字段的 INSERT INTO ... SELECT
修复 INSERT ... SELECT ... GROUP BY 以目标字段分组而不是以源字段分组 (Tom)
修复 CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
修复带有 LIMIT 的 UNION
修复 CREATE TABLE x AS SELECT 1 UNION SELECT 2
修复 CREATE TABLE test(col char(2) DEFAULT user)
修复 CREATE TABLE ... DEFAULT 中不匹配的类型
修复 SELECT * FROM pg_class where oid in (0,-1)
修复 SELECT COUNT('asdf') FROM pg_class WHERE oid=12
增强
------------
新增 CLI 接口包括文件 sqlcli.h,基于 SQL3/SQL98
删除所有在查询长度上的限制,行的长度限制仍然存在 (Tom)
更新 jdbc 协议到 2.0 (Jens Glaser <[jens@jens.de](mailto:jens@jens.de)>)
添加 TRUNCATE 到快速截断关系 (Mike Mascari)
修复以给予超级用户和 createdb 用户适当更新目录的权限 (Peter E)
允许 ecpg 布尔变量有 NULL 值 (Christof)
如果变量的 NULL 值带有非 NULL 指示符那么发出 ecpg 错误 (Christof)
允许 ^C 取消 COPY 命令 (Massimo)
添加 SET FSYNC 和 SHOW PG_OPTIONS 命令(Massimo)
为动态加载的 C 函数重载函数名 (Frankpitt)
添加 CmdTuples() 到 libpq++(Vince)
新增 CREATE CONSTRAINT TRIGGER 和 SET CONSTRAINTS 命令(Jan)
允许 CREATE FUNCTION/WITH 子句用于所有的语言类型
configure --enable-debug 添加 -g (Peter E)
configure --disable-debug 删除 -g (Peter E)
允许更复杂的缺省表达式 (Tom)
第一个真正的 FOREIGN KEY 约束触发器功能 (Jan)
添加 FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
添加 FOREIGN KEY ... MATCH <unspecified> 参照操作 (Don Baccus)
允许在 ctid(堆的物理位置) 上的 WHERE 约束 (Hiroshi)
从贡献包中移动 pginterface 到接口目录,重命名为 pgeasy (Bruce)
改变 pgeasy connectdb() 参数顺序 (Bruce)
要求 SELECT DISTINCT 目标列表拥有所有 ORDER BY 字段 (Tom)
添加 Oracle 的 COMMENT ON 命令 (Mike Mascari <[mascarim@yahoo.com](mailto:mascarim@yahoo.com)>)
libpq 的 PQsetNoticeProcessor 函数现在返回先前的 hook(Peter E)
阻止 PQsetNoticeProcessor 被设置为 NULL (Peter E)
在 COPY 选项中使 USING 可选 (Bruce)
允许在目标列表中有子查询 (Tom)
允许子查询在比较操作符的左边 (Tom)
新增并行回归测试 (Jan)
改变后端的 COPY 写入文件权限为 644 而不是 666 (Tom)
强制 PGDATA 目录上的权限为安全的,即使它仍然存在 (Tom)
添加 psql LASTOID 变量以返回最后继承的 oid (Peter E)
允许并发的 vacuum 和删除 pg_vlock vacuum 锁文件 (Tom)
为 vacuum 添加权限检查 (Peter E)
新增 libpq 函数以允许异步的连接:PQconnectStart(),
PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
新增 libpq PQsetenv() 函数 (Ewan Mellor)
创建/更改 用户扩展 (Peter E)
在 $PGDATA 下新增 postmaster.pid 和 postmaster.opts (Tatsuo)
为创建/删除 用户/数据库 新增脚本 (Peter E)
详细检查主要的 psql (Peter E)
添加常量到 libpq 接口 (Peter E)
新增 libpq 函数 PQoidValue (Peter E)
显示特定的非聚集导致的 GROUP BY 问题 (Tom)
改变 pg_shadow 重新创建 pg_pwd 文件 (Peter E)
添加 aggregate(DISTINCT ...) (Tom)
允许标识控制 NULL 的 COPY 输入/输出 (Peter E)
使 postgres 用户有缺省的口令 (Peter E)
添加 CREATE/ALTER/DROP GROUP (Peter E)
所有管理脚本现在支持 --long 选项 (Peter E, Karel)
Vacuumdb 脚本现在支持 --all 选项 (Peter E)
ecpg 新增轻便的 FETCH 语法
添加 ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
和 EXEC SQL ENDIF 指令
添加 pg_ctl 脚本以控制后端启动 (Tatsuo)
添加 postmaster.opts.default 文件以存储启动标识 (Tatsuo)
允许 --with-mb=SQL_ASCII
增加索引键的最大数量到 16 (Bruce)
增加函数参数的最大数量到 16 (Bruce)
允许配置索引键和参数的最大数量 (Bruce)
允许非特权的用户改变他们的口令 (Peter E)
启用口令认证;新用户需要 (Peter E)
不允许删除用于数据库的用户 (Peter E)
改变 initdb 选项 --with-mb 为 --enable-multibyte
添加 initdb 选项以为超级用户提示口令 (Peter E)
允许像 col::numeric(9,2) 和 col::int2::float8 这样的复杂类型转换 (Tom)
在 initdb, initlocation, pg_dump, ipcclean 上升级用户接口 (Peter E)
新增 pg_char_to_encoding() 和 pg_encoding_to_char() 函数 (Tatsuo)
libpq 非阻塞模式 (Alfred Perlstein)
改善在没有声明长度的计算中的类型的转换
新增 plperl 内部编程语言 (Mark Hollomon)
允许 COPY IN 读取不以一个新行结束的文件 (Tom)
当长的标识符被截断时提示 (Tom)
允许聚集使用类型等价 (Peter E)
允许 Oracle 的 to_char(), to_date(), to_datetime(), to_timestamp(), to_number() 转换函数 (Karel Zak <zakkr@zf.jcu.cz>)
添加 SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
检查以确保 ORDER BY 和 DISTINCT 操作一致 (Tom)
添加 NUMERIC 和 int8 类型到 ODBC
改善 Append, Group, Agg, Unique 的 EXPLAIN 结果 (Tom)
添加 ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
在 PL/pgSQL 中允许 SELECT .. FOR UPDATE (Hiroshi)
启用后端顺序扫描,即使到达了 EOF (Hiroshi)
添加布尔值的 btree 索引,>= 和 <= (Don Baccus)
当 COPY FROM 失败时打印当前行的编号 (Massimo)
识别出 POSIX 时区,如 "PST+8" 和 "GMT-8" (Thomas)
添加 DEC 作为 DECIMAL 的同义词 (Thomas)
添加 SESSION_USER 作为 SQL92 的关键字,和 CURRENT_USER 相同 (Thomas)
改善 SQL92 字段别名 (aka 相关名字) (Thomas)
改善 SQL92 连接语法 (Thomas)
使 INTERVAL 的保留字作为一个字段标识符被允许 (Thomas)
实现 REINDEX 命令 (Hiroshi)
在聚集函数 SUM(ALL col) 中接受 ALL (Tom)
阻止 GROUP BY 使用字段别名 (Tom)
新增 psql \encoding 选项 (Tatsuo)
当在 waiting-for-lock 状态时允许 PQrequestCancel() 终止 (Hiroshi)
在所有情况下允许负数的否定
添加 ecpg 描述符 (Christof, Michael)
允许 CREATE VIEW v AS SELECT f1::char(8) FROM tbl
允许带有长度的转换,如 foo::char(8)
新增 libpq 函数 PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
添加 SJIS 用户定义字符支持 (Tatsuo)
大的视图/规则支持
使 libpq 的 PQconndefaults() 线程安全 (Tom)
禁用 // 作为注释以符合 ANSI,应该使用 -- (Tom)
允许在视图的 CREATE VIEW name 上使用字段别名 (collist)
修复带有子查询的视图 (Tom)
允许 UPDATE table SET fld = (SELECT ...) (Tom)
SET 命令选项不再需要引号
升级 pgaccess 到 0.98.6
新增SET SEED 命令
新增 pg_options.sample 文件
新增 SET FSYNC 命令 (Massimo)
当创建表时允许 pg_descriptions
当创建类型、字段和函数时允许 pg_descriptions
允许 psql \copy 以允许分隔符 (Peter E)
允许 psql 打印 null 以区别 "" [null] (Peter E)
类型
-----
修复了许多数组 (Tom)
允许空的字段名作为数组的下标 (Tom)
改善 int 和 float 常量的类型转换 (Tom)
清理 int8 输入、范围检查和类型转换 (Tom)
修复 SELECT timespan('21:11:26'::time) (Tom)
netmask('x.x.x.x/0') 是 255.255.255.255 而不是 0.0.0.0 (Oleg Sharoiko)
在 NUMERIC 上添加 btree 索引 (Jan)
含有 NUL 字符的大对象的 perl 修复 (Douglas Thomson)
大对象的 ODBC 修复 (free)
修复 cidr 数据类型的索引
修复以太网 MAC 地址 (macaddr 类型)比较
当在计算中发生溢出时修复日期/时间类型 (Tom)
允许 int8 上的数组 (Peter E)
修复 NUMERIC 类型的舍入/溢出,如 NUMERIC(4,4) (Tom)
允许 NUMERIC 数组
修复 NUMERIC ceil() 和 floor() 函数中的 bug (Tom)
使 char_length()/octet_length 包含结尾空白 (Tom)
使 abstime/reltime 使用 int4 而不是 time_t (Peter E)
为压缩的文本字段新增 lztext 数据类型
修正代码以处理强制的 int 和 float 常量 (Tom)
在新的代码开始实现 BIT 和 BIT VARYING 类型 (Adriaan Joubert)
NUMERIC 现在接受科学计数法 (Tom)
NUMERIC 到 int4 的圆整 (Tom)
适当的转换 float4/8 到 NUMERIC (Tom)
允许 NUMERIC 的类型转换 (Thomas)
使 ISO 数据类型 (2000-02-16 09:33) 为缺省 (Thomas)
添加 NATIONAL CHAR [ VARYING ] (Thomas)
允许 NUMERIC 圆整和截断以接受负的标度 (Tom)
新增 TIME WITH TIME ZONE 类型 (Thomas)
在时间类型上添加 MAX()/MIN() (Thomas)
为 int8 添加 abs(), mod(), fac() (Thomas)
为 float8 重命名函数为 round(), sqrt(), cbrt(), pow() (Thomas)
为 float8 添加超越数学函数(如 sin(), acos()) (Thomas)
为 NUMERIC 类型添加 exp() 和 ln()
重命名 NUMERIC power() 为 pow() (Thomas)
改进了 TRANSLATE() 函数 (Edwin Ramirez, Tom)
允许 X=-Y 运算符 (Tom)
允许 SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
允许 LOCALE 在正则表达式搜索中使用索引 (Tom)
允许功能性索引的创建使用缺省的类型
性能
-----------
阻止带有许多 AND 和 OR 的指数空间消耗 (Tom)
收集系统字段的属性选择值 (Tom)
减少聚集的内存使用 (Tom)
修复 LIKE 最优化以使用带有多字节编码的索引 (Tom)
修复 r-tree 索引优化器选择性 (Thomas)
改善优化器选择性计算和功能 (Tom)
优化许多相等键存在的 btree 搜索 (Tom)
只在索引存在时启用快速 LIKE 索引进程 (Tom)
再次利用带有多重记录的索引页的自由空间 (Tom)
改善哈希连接进程 (Tom)
如果结果已经排序,那么阻止降序排序 (Hiroshi)
允许索引扫描查询限制条件的交换 (Tom)
在需要 ORDER BY/GROUP BY 的情况下更喜欢索引扫描 (Tom)
为性能分配大量内存请求固定尺寸的块 (Tom)
通过减少内存分配请求修复 vacuum 的性能 (Tom)
实现常量表达式简化 (Bernard Frankpitt, Tom)
使用使用的第二字段来决定索引扫描的开始 (Hiroshi)
在做内部排序时阻止四倍的使用磁盘空间 (Tom)
通过调用更少的函数快速的排序 (Tom)
创建系统索引匹配所有系统缓存 (Bruce, Hiroshi)
使系统缓存使用系统索引 (Bruce)
使所有系统索引唯一 (Bruce)
为 vacuum 速度提升改进 pg_statistics 管理 (Tom)
较低频率的刷新后端缓存 (Tom, Hiroshi)
COPY 现在重新使用了先前的内存分配,提高了性能 (Tom)
改善优化成本估算 (Tom)
改善优化器估算 x > lowbound AND x < highbound 的范围查询 (Tom)
在适当的地方使用 DNF 而不是 CNF (Tom, Taral)
进一步清理 OR-of-AND WHERE-clauses (Tom)
在 OR 子句 (x = 1 AND y = 2) OR (x = 2 AND y = 4) 中使用索引 (Tom)
智能优化器计算随机索引页访问 (Tom)
新增 SET 变量控制优化器开销 (Tom)
优化器查询基于 LIMIT, OFFSET, 和 EXISTS 限制条件 (Tom)
减少优化器链接路径的内部开支以加速 (Tom)
主要的子查询加速 (Tom)
当没有禁用 fsync 时较少的 fsync 写入 (Tom)
改善 LIKE 优化器估算 (Tom)
在只有 SELECT 的查询中阻止 fsync (Tom)
使索引创建使用 psort 代码,因为现在它更快速 (Tom)
允许创建临时表 > 1 Gig 的排序
源代码树的变化
-------------------
修复 linux PPC 编译
新增一般的 expression-tree-walker 子程序 (Tom)
更改 form() 为 varargform() 以阻止可能的问题
为 Alphas 上的大整数改善范围检查
清除 /include 目录中的 #include (Bruce)
为检查包含添加脚本 (Bruce)
从 *.c 文件中删除不需要的 #include (Bruce)
更改 #include 按情况使用 <> 和 "" (Bruce)
启用 Windows 的 libpq 编译
来自 Uncle George <[gatgul@voicenet.com](mailto:gatgul@voicenet.com)> 的 Alpha 自旋锁修复
彻底检修优化器数据结构 (Tom)
修复 cygipc 库 (Yutaka Tanida)
允许 pgsql 工作在新的 Cygwin 快照上 (Dan)
新增目录版本号 (Tom)
添加 Linux ARM
重命名 heap_replace 为 heap_update
更新 QNX (Dr. Andreas Kardos)
新增特定于平台的回归处理 (Tom)
重命名 oid8 -> oidvector 和 int28 -> int2vector (Bruce)
包含所有 yacc 和 lex 文件到发布中 (Peter E.)
删除不再需要的 lextest (Peter E)
修复在 Windows 上的 libpq 和 psql (Magnus)
内部改变 datetime 和 timespan 为 timestamp 和 interval (Thomas)
在 BSD/OS 上修复 plpgsql
添加 SQL_ASCII 测试案例到回归测试 (Tatsuo)
configure --with-mb 现在废弃了 (Tatsuo)
修复了 NT
修复了 NetBSD (Johnny C. Lam <[lamj@stat.cmu.edu](mailto:lamj@stat.cmu.edu)>)
修复 Alpha 编译
新增多字节编码
```
- 前言
- 何为PostgreSQL?
- PostgreSQL简史
- 格式约定
- 更多信息
- 臭虫汇报指导
- I. 教程
- Chapter 1. 从头开始
- 1.1. 安装
- 1.2. 体系基本概念
- 1.3. 创建一个数据库
- 1.4. 访问数据库
- Chapter 2. SQL语言
- 2.1. 介绍
- 2.2. 概念
- 2.3. 创建新表
- 2.4. 向表中添加行
- 2.5. 查询一个表
- 2.6. 在表间连接
- 2.7. 聚集函数
- 2.8. 更新
- 2.9. 删除
- Chapter 3. 高级特性
- 3.1. 介绍
- 3.2. 视图
- 3.3. 外键
- 3.4. 事务
- 3.5. 窗口函数
- 3.6. 继承
- 3.7. 结论
- II. SQL 语言
- Chapter 4. SQL语法
- 4.1. 词法结构
- 4.2. 值表达式
- 4.3. 调用函数
- Chapter 5. 数据定义
- 5.1. 表的基本概念
- 5.2. 缺省值
- 5.3. 约束
- 5.4. 系统字段
- 5.5. 修改表
- 5.6. 权限
- 5.7. 模式
- 5.8. 继承
- 5.9. 分区
- 5.10. 外部数据
- 5.11. 其它数据库对象
- 5.12. 依赖性跟踪
- Chapter 6. 数据操作
- 6.1. 插入数据
- 6.2. 更新数据
- 6.3. 删除数据
- Chapter 7. 查询
- 7.1. 概述
- 7.2. 表表达式
- 7.3. 选择列表
- 7.4. 组合查询
- 7.5. 行排序
- 7.6. LIMIT和OFFSET
- 7.7. VALUES列表
- 7.8. WITH 查询 (通用表表达式)
- Chapter 8. 数据类型
- 8.1. 数值类型
- 8.2. 货币类型
- 8.3. 字符类型
- 8.4. 二进制数据类型
- 8.5. 日期/时间类型
- 8.6. 布尔类型
- 8.7. 枚举类型
- 8.8. 几何类型
- 8.9. 网络地址类型
- 8.10. 位串类型
- 8.11. 文本搜索类型
- 8.12. UUID 类型
- 8.13. XML 类型
- 8.14. JSON 类型
- 8.15. Arrays
- 8.16. 复合类型
- 8.17. 范围类型
- 8.18. 对象标识符类型
- 8.19. 伪类型
- Chapter 9. 函数和操作符
- 9.1. 逻辑操作符
- 9.2. 比较操作符
- 9.3. 数学函数和操作符
- 9.4. 字符串函数和操作符
- 9.5. 二进制字符串函数和操作符
- 9.6. 位串函数和操作符
- 9.7. 模式匹配
- 9.8. 数据类型格式化函数
- 9.9. 时间/日期函数和操作符
- 9.10. 支持枚举函数
- 9.11. 几何函数和操作符
- 9.12. 网络地址函数和操作符
- 9.13. 文本检索函数和操作符
- 9.14. XML 函数
- 9.15. JSON 函数和操作符
- 9.16. 序列操作函数
- 9.17. 条件表达式
- 9.18. 数组函数和操作符
- 9.19. 范围函数和操作符
- 9.20. 聚集函数
- 9.21. 窗口函数
- 9.22. 子查询表达式
- 9.23. 行和数组比较
- 9.24. 返回集合的函数
- 9.25. 系统信息函数
- 9.26. 系统管理函数
- 9.27. 触发器函数
- 9.28. 事件触发函数
- Chapter 10. 类型转换
- 10.1. 概述
- 10.2. 操作符
- 10.3. 函数
- 10.4. 值存储
- 10.5. UNION, CASE 和相关构造
- Chapter 11. 索引
- 11.1. 介绍
- 11.2. 索引类型
- 11.3. 多字段索引
- 11.4. 索引和ORDER BY
- 11.5. 组合多个索引
- 11.6. 唯一索引
- 11.7. 表达式上的索引
- 11.8. 部分索引
- 11.9. 操作符类和操作符族
- 11.10. 索引和排序
- 11.11. 检查索引的使用
- Chapter 12. 全文检索
- 12.1. 介绍
- 12.2. 表和索引
- 12.3. 控制文本搜索
- 12.4. 附加功能
- 12.5. 解析器
- 12.6. 词典
- 12.7. 配置实例
- 12.8. 测试和调试文本搜索
- 12.9. GiST和GIN索引类型
- 12.10. psql支持
- 12.11. 限制
- 12.12. 来自8.3之前文本搜索的迁移
- Chapter 13. 并发控制
- 13.1. 介绍
- 13.2. 事务隔离
- 13.3. 明确锁定
- 13.4. 应用层数据完整性检查
- 13.5. 锁和索引
- Chapter 14. 性能提升技巧
- 14.1. 使用EXPLAIN
- 14.2. 规划器使用的统计信息
- 14.3. 用明确的JOIN控制规划器
- 14.4. 向数据库中添加记录
- 14.5. 非持久性设置
- III. 服务器管理
- Chapter 15. 源码安装
- 15.1. 简版
- 15.2. 要求
- 15.3. 获取源码
- 15.4. 安装过程
- 15.5. 安装后设置
- 15.6. 支持平台
- 15.7. 特定平台注意事项
- Chapter 16. Windows下用源代码安装
- 16.1. 用Visual C++或Microsoft Windows SDK编译
- 16.2. 用Visual C++或 Borland C++编译 libpq
- Chapter 17. 服务器设置和操作
- 17.1. PostgreSQL用户账户
- 17.2. 创建数据库集群
- 17.3. 启动数据库服务器
- 17.4. 管理内核资源
- 17.5. 关闭服务器
- 17.6. 升级一个 PostgreSQL 集群
- 17.7. 防止服务器欺骗
- 17.8. 加密选项
- 17.9. 用 SSL 进行安全的 TCP/IP 连接
- 17.10. 用SSH隧道进行安全 TCP/IP 连接
- 17.11. 在Windows上注册事件日志
- Chapter 18. 服务器配置
- 18.1. 设置参数
- 18.2. 文件位置
- 18.3. 连接和认证
- 18.4. 资源消耗
- 18.5. 预写式日志
- 18.6. 复制
- 18.7. 查询规划
- 18.8. 错误报告和日志
- 18.9. 运行时统计
- 18.10. 自动清理
- 18.11. 客户端连接缺省
- 18.12. 锁管理
- 18.13. 版本和平台兼容性
- 18.14. Error Handling
- 18.15. 预置选项
- 18.16. 自定义选项
- 18.17. 开发人员选项
- 18.18. 短选项
- Chapter 19. 用户认证
- 19.1. pg_hba.conf文件
- 19.2. 用户名映射
- 19.3. 认证方法
- 19.4. 用户认证
- Chapter 20. 数据库角色
- 20.1. 数据库角色
- 20.2. 角色属性
- 20.3. 角色成员
- 20.4. 函数和触发器安全
- Chapter 21. 管理数据库
- 21.1. 概述
- 21.2. 创建一个数据库
- 21.3. 模板数据库
- 21.4. 数据库配置
- 21.5. 删除数据库
- 21.6. 表空间
- Chapter 22. 区域
- 22.1. 区域支持
- 22.2. 排序规则支持
- 22.3. 字符集支持
- Chapter 23. 日常数据库维护工作
- 23.1. 日常清理
- 23.2. 经常重建索引
- 23.3. 日志文件维护
- Chapter 24. 备份与恢复
- 24.1. SQL转储
- 24.2. 文件系统级别备份
- 24.3. 在线备份以及即时恢复(PITR)
- Chapter 25. 高可用性与负载均衡,复制
- 25.1. 不同解决方案的比较
- 25.2. 日志传送备份服务器
- 25.3. 失效切换
- 25.4. 日志传送的替代方法
- 25.5. 热备
- Chapter 26. 恢复配置
- 26.1. 归档恢复设置
- 26.2. 恢复目标设置
- 26.3. 备用服务器设置
- Chapter 27. 监控数据库的活动
- 27.1. 标准Unix工具
- 27.2. 统计收集器
- 27.3. 查看锁
- 27.4. 动态跟踪
- Chapter 28. 监控磁盘使用情况
- 28.1. 判断磁盘的使用量
- 28.2. 磁盘满导致的失效
- Chapter 29. 可靠性和预写式日志
- 29.1. 可靠性
- 29.2. 预写式日志(WAL)
- 29.3. 异步提交
- 29.4. WAL 配置
- 29.5. WAL 内部
- Chapter 30. 回归测试
- 30.1. 运行测试
- 30.2. 测试评估
- 30.3. 平台相关的比较文件
- 30.4. 测试覆盖率检查
- IV. 客户端接口
- Chapter 31. libpq - C 库
- 31.1. 数据库连接控制函数
- 31.2. 连接状态函数
- 31.3. 命令执行函数
- 31.4. 异步命令处理
- 31.5. 逐行检索查询结果
- 31.6. 取消正在处理的查询
- 31.7. 捷径接口
- 31.8. 异步通知
- 31.9. 与COPY命令相关的函数
- 31.10. 控制函数
- 31.11. 各种函数
- 31.12. 注意信息处理
- 31.13. 事件系统
- 31.14. 环境变量
- 31.15. 口令文件
- 31.16. 连接服务的文件
- 31.17. LDAP查找连接参数
- 31.18. SSL 支持
- 31.19. 在多线程程序里的行为
- 31.20. 制作libpq程序
- 31.21. 例子程序
- Chapter 32. 大对象
- 32.1. 介绍
- 32.2. 实现特点
- 32.3. 客户端接口
- 32.4. 服务器端函数
- 32.5. 例子程序
- Chapter 33. ECPG - 在C中嵌入SQL
- 33.1. 概念
- 33.2. 管理数据库连接
- 33.3. 运行SQL命令
- 33.4. 使用宿主变量
- 33.5. 动态SQL
- 33.6. pgtypes 库
- 33.7. 使用描述符范围
- 33.8. 错误处理
- 33.9. 预处理器指令
- 33.10. 处理嵌入的SQL程序
- 33.11. 库函数
- 33.12. 大对象
- 33.13. C++应用程序
- 33.14. 嵌入的SQL命令
- ALLOCATE DESCRIPTOR
- CONNECT
- DEALLOCATE DESCRIPTOR
- DECLARE
- DESCRIBE
- DISCONNECT
- EXECUTE IMMEDIATE
- GET DESCRIPTOR
- OPEN
- PREPARE
- SET AUTOCOMMIT
- SET CONNECTION
- SET DESCRIPTOR
- TYPE
- VAR
- WHENEVER
- 33.15. Informix兼容模式
- 33.16. 内部
- Chapter 34. 信息模式
- 34.1. 关于这个模式
- 34.2. 数据类型
- 34.3. information_schema_catalog_name
- 34.4. administrable_role_authorizations
- 34.5. applicable_roles
- 34.6. attributes
- 34.7. character_sets
- 34.8. check_constraint_routine_usage
- 34.9. check_constraints
- 34.10. collations
- 34.11. collation_character_set_applicability
- 34.12. column_domain_usage
- 34.13. column_options
- 34.14. column_privileges
- 34.15. column_udt_usage
- 34.16. columns
- 34.17. constraint_column_usage
- 34.18. constraint_table_usage
- 34.19. data_type_privileges
- 34.20. domain_constraints
- 34.21. domain_udt_usage
- 34.22. domains
- 34.23. element_types
- 34.24. enabled_roles
- 34.25. foreign_data_wrapper_options
- 34.26. foreign_data_wrappers
- 34.27. foreign_server_options
- 34.28. foreign_servers
- 34.29. foreign_table_options
- 34.30. foreign_tables
- 34.31. key_column_usage
- 34.32. parameters
- 34.33. referential_constraints
- 34.34. role_column_grants
- 34.35. role_routine_grants
- 34.36. role_table_grants
- 34.37. role_udt_grants
- 34.38. role_usage_grants
- 34.39. routine_privileges
- 34.40. routines
- 34.41. schemata
- 34.42. sequences
- 34.43. sql_features
- 34.44. sql_implementation_info
- 34.45. sql_languages
- 34.46. sql_packages
- 34.47. sql_parts
- 34.48. sql_sizing
- 34.49. sql_sizing_profiles
- 34.50. table_constraints
- 34.51. table_privileges
- 34.52. tables
- 34.53. triggered_update_columns
- 34.54. triggers
- 34.55. udt_privileges
- 34.56. usage_privileges
- 34.57. user_defined_types
- 34.58. user_mapping_options
- 34.59. user_mappings
- 34.60. view_column_usage
- 34.61. view_routine_usage
- 34.62. view_table_usage
- 34.63. views
- V. 服务器端编程
- Chapter 35. 扩展SQL
- 35.1. 扩展性是如何实现的
- 35.2. PostgreSQL类型系统
- 35.3. 用户定义的函数
- 35.4. 查询语言(SQL)函数
- 35.5. 函数重载
- 35.6. 函数易失性范畴
- 35.7. 过程语言函数
- 35.8. 内部函数
- 35.9. C-语言函数
- 35.10. 用户定义聚集
- 35.11. 用户定义类型
- 35.12. 用户定义操作符
- 35.13. 操作符优化信息
- 35.14. 扩展索引接口
- 35.15. 包装相关对象到一个扩展
- 35.16. 扩展基础设施建设
- Chapter 36. 触发器
- 36.1. 触发器行为概述
- 36.2. 数据改变的可视性
- 36.3. 用C写触发器
- 36.4. 一个完整的触发器例子
- Chapter 37. 事件触发器
- 37.1. 事件触发器行为的概述
- 37.2. 事件触发器触发矩阵
- 37.3. 用C编写事件触发器函数
- 37.4. 一个完整的事件触发器的例子
- Chapter 38. 规则系统
- 38.1. 查询树
- 38.2. 视图和规则系统
- 38.3. 物化视图
- 38.4. 在 INSERT, UPDATE, 和 DELETE上的规则
- 38.5. 规则和权限
- 38.6. 规则和命令状态
- 38.7. 规则与触发器的比较
- Chapter 39. 过程语言
- 39.1. 安装过程语言
- Chapter 40. PL/pgSQL - SQL过程语言
- 40.1. 概述
- 40.2. PL/pgSQL的结构
- 40.3. 声明
- 40.4. 表达式
- 40.5. 基本语句
- 40.6. 控制结构
- 40.7. 游标
- 40.8. 错误和消息
- 40.9. 触发器过程
- 40.10. 在后台下的PL/pgSQL
- 40.11. 开发PL/pgSQL的一些提示
- 40.12. 从Oracle PL/SQL进行移植
- Chapter 41. PL/Tcl - Tcl 过程语言
- 41.1. 概述
- 41.2. PL/Tcl 函数和参数
- 41.3. PL/Tcl里的数据值
- 41.4. PL/Tcl里的全局量
- 41.5. 在PL/Tcl里访问数据库
- 41.6. PL/Tcl里的触发器过程
- 41.7. 模块和unknown的命令
- 41.8. Tcl 过程名字
- Chapter 42. PL/Perl - Perl 过程语言
- 42.1. PL/Perl 函数和参数
- 42.2. PL/Perl里的数据值
- 42.3. 内置函数
- 42.4. PL/Perl里的全局变量
- 42.5. 可信的和不可信的 PL/Perl
- 42.6. PL/Perl 触发器
- 42.7. 后台PL/Perl
- Chapter 43. PL/Python - Python 过程语言
- 43.1. Python 2 vs. Python 3
- 43.2. PL/Python Functions
- 43.3. Data Values
- 43.4. Sharing Data
- 43.5. Anonymous Code Blocks
- 43.6. Trigger Functions
- 43.7. Database Access
- 43.8. Explicit Subtransactions
- 43.9. Utility Functions
- 43.10. Environment Variables
- Chapter 44. 服务器编程接口
- 44.1. 接口函数
- SPI_connect
- SPI_finish
- SPI_push
- SPI_pop
- SPI_execute
- SPI_exec
- SPI_execute_with_args
- SPI_prepare
- SPI_prepare_cursor
- SPI_prepare_params
- SPI_getargcount
- SPI_getargtypeid
- SPI_is_cursor_plan
- SPI_execute_plan
- SPI_execute_plan_with_paramlist
- SPI_execp
- SPI_cursor_open
- SPI_cursor_open_with_args
- SPI_cursor_open_with_paramlist
- SPI_cursor_find
- SPI_cursor_fetch
- SPI_cursor_move
- SPI_scroll_cursor_fetch
- SPI_scroll_cursor_move
- SPI_cursor_close
- SPI_keepplan
- SPI_saveplan
- 44.2. 接口支持函数
- SPI_fname
- SPI_fnumber
- SPI_getvalue
- SPI_getbinval
- SPI_gettype
- SPI_gettypeid
- SPI_getrelname
- SPI_getnspname
- 44.3. 内存管理
- SPI_palloc
- SPI_repalloc
- SPI_pfree
- SPI_copytuple
- SPI_returntuple
- SPI_modifytuple
- SPI_freetuple
- SPI_freetuptable
- SPI_freeplan
- 44.4. 数据改变的可视性
- 44.5. 例子
- Chapter 45. 后台工作进程
- VI. 参考手册
- I. SQL 命令
- ABORT
- ALTER AGGREGATE
- ALTER COLLATION
- ALTER CONVERSION
- ALTER DATABASE
- ALTER DEFAULT PRIVILEGES
- ALTER DOMAIN
- ALTER EXTENSION
- ALTER EVENT TRIGGER
- ALTER FOREIGN DATA WRAPPER
- ALTER FOREIGN TABLE
- ALTER FUNCTION
- ALTER GROUP
- ALTER INDEX
- ALTER LANGUAGE
- ALTER LARGE OBJECT
- ALTER MATERIALIZED VIEW
- ALTER OPERATOR
- ALTER OPERATOR CLASS
- ALTER OPERATOR FAMILY
- ALTER ROLE
- ALTER RULE
- ALTER SCHEMA
- ALTER SEQUENCE
- ALTER SERVER
- ALTER TABLE
- ALTER TABLESPACE
- ALTER TEXT SEARCH CONFIGURATION
- ALTER TEXT SEARCH DICTIONARY
- ALTER TEXT SEARCH PARSER
- ALTER TEXT SEARCH TEMPLATE
- ALTER TRIGGER
- ALTER TYPE
- ALTER USER
- ALTER USER MAPPING
- ALTER VIEW
- ANALYZE
- BEGIN
- CHECKPOINT
- CLOSE
- CLUSTER
- COMMENT
- COMMIT
- COMMIT PREPARED
- COPY
- CREATE AGGREGATE
- CREATE CAST
- CREATE COLLATION
- CREATE CONVERSION
- CREATE DATABASE
- CREATE DOMAIN
- CREATE EXTENSION
- CREATE EVENT TRIGGER
- CREATE FOREIGN DATA WRAPPER
- CREATE FOREIGN TABLE
- CREATE FUNCTION
- CREATE GROUP
- CREATE INDEX
- CREATE LANGUAGE
- CREATE MATERIALIZED VIEW
- CREATE OPERATOR
- CREATE OPERATOR CLASS
- CREATE OPERATOR FAMILY
- CREATE ROLE
- CREATE RULE
- CREATE SCHEMA
- CREATE SEQUENCE
- CREATE SERVER
- CREATE TABLE
- CREATE TABLE AS
- CREATE TABLESPACE
- CREATE TEXT SEARCH CONFIGURATION
- CREATE TEXT SEARCH DICTIONARY
- CREATE TEXT SEARCH PARSER
- CREATE TEXT SEARCH TEMPLATE
- CREATE TRIGGER
- CREATE TYPE
- CREATE USER
- CREATE USER MAPPING
- CREATE VIEW
- DEALLOCATE
- DECLARE
- DELETE
- DISCARD
- DO
- DROP AGGREGATE
- DROP CAST
- DROP COLLATION
- DROP CONVERSION
- DROP DATABASE
- DROP DOMAIN
- DROP EXTENSION
- DROP EVENT TRIGGER
- DROP FOREIGN DATA WRAPPER
- DROP FOREIGN TABLE
- DROP FUNCTION
- DROP GROUP
- DROP INDEX
- DROP LANGUAGE
- DROP MATERIALIZED VIEW
- DROP OPERATOR
- DROP OPERATOR CLASS
- DROP OPERATOR FAMILY
- DROP OWNED
- DROP ROLE
- DROP RULE
- DROP SCHEMA
- DROP SEQUENCE
- DROP SERVER
- DROP TABLE
- DROP TABLESPACE
- DROP TEXT SEARCH CONFIGURATION
- DROP TEXT SEARCH DICTIONARY
- DROP TEXT SEARCH PARSER
- DROP TEXT SEARCH TEMPLATE
- DROP TRIGGER
- DROP TYPE
- DROP USER
- DROP USER MAPPING
- DROP VIEW
- END
- EXECUTE
- EXPLAIN
- FETCH
- GRANT
- INSERT
- LISTEN
- LOAD
- LOCK
- MOVE
- NOTIFY
- PREPARE
- PREPARE TRANSACTION
- REASSIGN OWNED
- REFRESH MATERIALIZED VIEW
- REINDEX
- RELEASE SAVEPOINT
- RESET
- REVOKE
- ROLLBACK
- ROLLBACK PREPARED
- ROLLBACK TO SAVEPOINT
- SAVEPOINT
- SECURITY LABEL
- SELECT
- SELECT INTO
- SET
- SET CONSTRAINTS
- SET ROLE
- SET SESSION AUTHORIZATION
- SET TRANSACTION
- SHOW
- START TRANSACTION
- TRUNCATE
- UNLISTEN
- UPDATE
- VACUUM
- VALUES
- II. PostgreSQL 客户端应用程序
- clusterdb
- createdb
- createlang
- createuser
- dropdb
- droplang
- dropuser
- ecpg
- pg_basebackup
- pg_config
- pg_dump
- pg_dumpall
- pg_isready
- pg_receivexlog
- pg_restore
- psql
- reindexdb
- vacuumdb
- III. PostgreSQL 服务器应用程序
- initdb
- pg_controldata
- pg_ctl
- pg_resetxlog
- postgres
- postmaster
- VII. 内部
- Chapter 46. PostgreSQL内部概述
- 46.1. 查询经过的路径
- 46.2. 连接是如何建立起来的
- 46.3. 分析器阶段
- 46.4. PostgreSQL规则系统
- 46.5. 规划器/优化器
- 46.6. 执行器
- Chapter 47. 系统表
- 47.1. 概述
- 47.2. pg_aggregate
- 47.3. pg_am
- 47.4. pg_amop
- 47.5. pg_amproc
- 47.6. pg_attrdef
- 47.7. pg_attribute
- 47.8. pg_authid
- 47.9. pg_auth_members
- 47.10. pg_cast
- 47.11. pg_class
- 47.12. pg_event_trigger
- 47.13. pg_constraint
- 47.14. pg_collation
- 47.15. pg_conversion
- 47.16. pg_database
- 47.17. pg_db_role_setting
- 47.18. pg_default_acl
- 47.19. pg_depend
- 47.20. pg_description
- 47.21. pg_enum
- 47.22. pg_extension
- 47.23. pg_foreign_data_wrapper
- 47.24. pg_foreign_server
- 47.25. pg_foreign_table
- 47.26. pg_index
- 47.27. pg_inherits
- 47.28. pg_language
- 47.29. pg_largeobject
- 47.30. pg_largeobject_metadata
- 47.31. pg_namespace
- 47.32. pg_opclass
- 47.33. pg_operator
- 47.34. pg_opfamily
- 47.35. pg_pltemplate
- 47.36. pg_proc
- 47.37. pg_range
- 47.38. pg_rewrite
- 47.39. pg_seclabel
- 47.40. pg_shdepend
- 47.41. pg_shdescription
- 47.42. pg_shseclabel
- 47.43. pg_statistic
- 47.44. pg_tablespace
- 47.45. pg_trigger
- 47.46. pg_ts_config
- 47.47. pg_ts_config_map
- 47.48. pg_ts_dict
- 47.49. pg_ts_parser
- 47.50. pg_ts_template
- 47.51. pg_type
- 47.52. pg_user_mapping
- 47.53. 系统视图
- 47.54. pg_available_extensions
- 47.55. pg_available_extension_versions
- 47.56. pg_cursors
- 47.57. pg_group
- 47.58. pg_indexes
- 47.59. pg_locks
- 47.60. pg_matviews
- 47.61. pg_prepared_statements
- 47.62. pg_prepared_xacts
- 47.63. pg_roles
- 47.64. pg_rules
- 47.65. pg_seclabels
- 47.66. pg_settings
- 47.67. pg_shadow
- 47.68. pg_stats
- 47.69. pg_tables
- 47.70. pg_timezone_abbrevs
- 47.71. pg_timezone_names
- 47.72. pg_user
- 47.73. pg_user_mappings
- 47.74. pg_views
- Chapter 48. 前/后端协议
- 48.1. 概要
- 48.2. 消息流
- 48.3. 流复制协议
- 48.4. 消息数据类型
- 48.5. 消息格式
- 48.6. 错误和通知消息字段
- 48.7. 自协议 2.0 以来的变化的概述
- Chapter 49. PostgreSQL 编码约定
- 49.1. 格式
- 49.2. 报告服务器里的错误
- 49.3. 错误消息风格指导
- Chapter 50. 本地语言支持
- 50.1. 寄语翻译家
- 50.2. 寄语程序员
- Chapter 51. 书写一个过程语言处理器
- Chapter 52. 写一个外数据包
- 52.1. 外数据封装函数
- 52.2. 外数据封装回调程序
- 52.3. 外数据封装辅助函数
- 52.4. 外数据封装查询规划
- Chapter 53. 基因查询优化器
- 53.1. 作为复杂优化问题的查询处理
- 53.2. 基因算法
- 53.3. PostgreSQL 里的基因查询优化(GEQO)
- 53.4. 进一步阅读
- Chapter 54. 索引访问方法接口定义
- 54.1. 索引的系统表记录
- 54.2. 索引访问方法函数
- 54.3. 索引扫描
- 54.4. 索引锁的考量
- 54.5. 索引唯一性检查
- 54.6. 索引开销估计函数
- Chapter 55. GiST索引
- 55.1. 介绍
- 55.2. 扩展性
- 55.3. 实现
- 55.4. 例
- Chapter 56. SP-GiST索引
- 56.1. 介绍
- 56.2. 扩展性
- 56.3. 实现
- 56.4. 例
- Chapter 57. GIN索引
- 57.1. 介绍
- 57.2. 扩展性
- 57.3. 实现
- 57.4. GIN提示与技巧
- 57.5. 限制
- 57.6. 例子
- Chapter 58. 数据库物理存储
- 58.1. 数据库文件布局
- 58.2. TOAST
- 58.3. 自由空间映射
- 58.4. 可见映射
- 58.5. 初始化分支
- 58.6. 数据库分页文件
- Chapter 59. BKI后端接口
- 59.1. BKI 文件格式
- 59.2. BKI 命令
- 59.3. 系统初始化的BKI文件的结构
- 59.4. 例子
- Chapter 60. 规划器如何使用统计信息
- 60.1. 行预期的例子
- VIII. 附录
- Appendix A. PostgreSQL 错误代码
- Appendix B. 日期/时间支持
- B.1. 日期/时间输入解析
- B.2. 日期/时间关键字
- B.3. 日期/时间配置文件
- B.4. 单位历史
- Appendix C. SQL关键字
- Appendix D. SQL兼容性
- D.1. 支持的特性
- D.2. 不支持的特性
- Appendix E. 版本说明
- E.1. 版本 9.3.1
- E.2. 版本 9.3
- E.3. 版本9.2.5
- E.4. 版本9.2.4
- E.5. 版本9.2.3
- E.6. 版本9.2.2
- E.7. 版本9.2.1
- E.8. 版本9.2
- E.9. 发布9.1.10
- E.10. 发布9.1.9
- E.11. 发布9.1.8
- E.12. 发布9.1.7
- E.13. 发布9.1.6
- E.14. 发布9.1.5
- E.15. 发布9.1.4
- E.16. 发布9.1.3
- E.17. 发布9.1.2
- E.18. 发布9.1.1
- E.19. 发布9.1
- E.20. 版本 9.0.14
- E.21. 版本 9.0.13
- E.22. 版本 9.0.12
- E.23. 版本 9.0.11
- E.24. 版本 9.0.10
- E.25. 版本 9.0.9
- E.26. 版本 9.0.8
- E.27. 版本 9.0.7
- E.28. 版本 9.0.6
- E.29. 版本 9.0.5
- E.30. 版本 9.0.4
- E.31. 版本 9.0.3
- E.32. 版本 9.0.2
- E.33. 版本 9.0.1
- E.34. 版本 9.0
- E.35. 发布8.4.18
- E.36. 发布8.4.17
- E.37. 发布8.4.16
- E.38. 发布8.4.15
- E.39. 发布8.4.14
- E.40. 发布8.4.13
- E.41. 发布8.4.12
- E.42. 发布8.4.11
- E.43. 发布8.4.10
- E.44. 发布8.4.9
- E.45. 发布8.4.8
- E.46. 发布8.4.7
- E.47. 发布8.4.6
- E.48. 发布8.4.5
- E.49. 发布8.4.4
- E.50. 发布8.4.3
- E.51. 发布8.4.2
- E.52. 发布8.4.1
- E.53. 发布8.4
- E.54. 发布8.3.23
- E.55. 发布8.3.22
- E.56. 发布8.3.21
- E.57. 发布8.3.20
- E.58. 发布8.3.19
- E.59. 发布8.3.18
- E.60. 发布8.3.17
- E.61. 发布8.3.16
- E.62. 发布8.3.15
- E.63. 发布8.3.14
- E.64. 发布8.3.13
- E.65. 发布8.3.12
- E.66. 发布8.3.11
- E.67. 发布8.3.10
- E.68. 发布8.3.9
- E.69. 发布8.3.8
- E.70. 发布8.3.7
- E.71. 发布8.3.6
- E.72. 发布8.3.5
- E.73. 发布8.3.4
- E.74. 发布8.3.3
- E.75. 发布8.3.2
- E.76. 发布8.3.1
- E.77. 发布8.3
- E.78. 版本 8.2.23
- E.79. 版本 8.2.22
- E.80. 版本 8.2.21
- E.81. 版本 8.2.20
- E.82. 版本 8.2.19
- E.83. 版本 8.2.18
- E.84. 版本 8.2.17
- E.85. 版本 8.2.16
- E.86. 版本 8.2.15
- E.87. 版本 8.2.14
- E.88. 版本 8.2.13
- E.89. 版本 8.2.12
- E.90. 版本 8.2.11
- E.91. 版本 8.2.10
- E.92. 版本 8.2.9
- E.93. 版本 8.2.8
- E.94. 版本 8.2.7
- E.95. 版本 8.2.6
- E.96. 版本 8.2.5
- E.97. 版本 8.2.4
- E.98. 版本 8.2.3
- E.99. 版本 8.2.2
- E.100. 版本 8.2.1
- E.101. 版本 8.2
- E.102. 版本 8.1.23
- E.103. 版本 8.1.22
- E.104. 版本 8.1.21
- E.105. 版本 8.1.20
- E.106. 版本 8.1.19
- E.107. 版本 8.1.18
- E.108. 版本 8.1.17
- E.109. 版本 8.1.16
- E.110. 版本 8.1.5
- E.111. 版本 8.1.14
- E.112. 版本 8.1.13
- E.113. 版本 8.1.12
- E.114. 版本 8.1.11
- E.115. 版本 8.1.10
- E.116. 版本 8.1.9
- E.117. 版本 8.1.8
- E.118. 版本 8.1.7
- E.119. 版本 8.1.6
- E.120. 版本 8.1.5
- E.121. 版本 8.1.4
- E.122. 版本 8.1.3
- E.123. 版本 8.1.2
- E.124. 版本 8.1.1
- E.125. 版本 8.1
- E.126. 版本 8.0.26
- E.127. 版本 8.0.25
- E.128. 版本 8.0.24
- E.129. 版本 8.0.23
- E.130. 版本 8.0.22
- E.131. 版本 8.0.21
- E.132. 版本 8.0.20
- E.133. 版本 8.0.19
- E.134. 版本 8.0.18
- E.135. 版本 8.0.17
- E.136. 版本 8.0.16
- E.137. 版本 8.0.15
- E.138. 版本 8.0.14
- E.139. 版本 8.0.13
- E.140. 版本 8.0.12
- E.141. 版本 8.0.11
- E.142. 版本 8.0.10
- E.143. 版本 8.0.9
- E.144. 版本 8.0.8
- E.145. 版本 8.0.7
- E.146. 版本 8.0.6
- E.147. 版本 8.0.5
- E.148. 版本 8.0.4
- E.149. 版本 8.0.3
- E.150. 版本 8.0.2
- E.151. 版本 8.0.1
- E.152. 版本 8.0.0
- E.153. 版本 7.4.30
- E.154. 版本 7.4.29
- E.155. 版本 7.4.28
- E.156. 版本 7.4.27
- E.157. 版本 7.4.26
- E.158. 版本 7.4.25
- E.159. 版本 7.4.24
- E.160. 版本 7.4.23
- E.161. 版本 7.4.22
- E.162. 版本 7.4.21
- E.163. 版本 7.4.20
- E.164. 版本 7.4.19
- E.165. 版本 7.4.18
- E.166. 版本 7.4.17
- E.167. 版本 7.4.16
- E.168. 版本 7.4.15
- E.169. 版本 7.4.14
- E.170. 版本 7.4.13
- E.171. 版本 7.4.12
- E.172. 版本 7.4.11
- E.173. 版本 7.4.10
- E.174. 版本 7.4.9
- E.175. 版本 7.4.8
- E.176. 版本 7.4.7
- E.177. 版本 7.4.6
- E.178. 版本 7.4.3
- E.179. 版本 7.4.4
- E.180. 版本 7.4.3
- E.181. 版本 7.4.2
- E.182. 版本 7.4.1
- E.183. 版本 7.4
- E.184. 版本 7.3.21
- E.185. 版本 7.3.20
- E.186. 版本 7.3.19
- E.187. 版本 7.3.18
- E.188. 版本 7.3.17
- E.189. 版本 7.3.16
- E.190. 版本 7.3.15
- E.191. 版本 7.3.14
- E.192. 版本 7.3.13
- E.193. 版本 7.3.12
- E.194. 版本 7.3.11
- E.195. 版本 7.3.10
- E.196. 版本 7.3.9
- E.197. 版本 7.3.8
- E.198. 版本 7.3.7
- E.199. 版本 7.3.6
- E.200. 版本 7.3.5
- E.201. 版本 7.3.4
- E.202. 版本 7.3.3
- E.203. 版本 7.3.2
- E.204. 版本 7.3.1
- E.205. 版本 7.3
- E.206. 版本 7.2.8
- E.207. 版本 7.2.7
- E.208. 版本 7.2.6
- E.209. 版本 7.2.5
- E.210. 版本 7.2.4
- E.211. 版本 7.2.3
- E.212. 版本 7.2.2
- E.213. 版本 7.2.1
- E.214. 版本 7.2
- E.215. 版本 7.1.3
- E.216. 版本 7.1.2
- E.217. 版本 7.1.1
- E.218. 版本 7.1
- E.219. 版本 7.0.3
- E.220. 版本 7.0.2
- E.221. 版本 7.0.1
- E.222. 版本 7.0
- E.223. 版本 6.5.3
- E.224. 版本 6.5.2
- E.225. 版本 6.5.1
- E.226. 版本 6.5
- E.227. 版本 6.4.2
- E.228. 版本 6.4.1
- E.229. 版本 6.4
- E.230. 版本 6.3.2
- E.231. 版本 6.3.1
- E.232. 版本 6.3
- E.233. 版本 6.2.1
- E.234. 版本 6.2
- E.235. 版本 6.1.1
- E.236. 版本 6.1
- E.237. 版本 6.0
- E.238. 版本 1.09
- E.239. 版本 1.02
- E.240. 版本 1.01
- E.241. 版本 1.0
- E.242. Postgres95 版本 0.03
- E.243. Postgres95 版本 0.02
- E.244. Postgres95 版本 0.01
- Appendix 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
- dblink_connect_u
- dblink_disconnect
- dblink
- dblink_exec
- dblink_open
- dblink_fetch
- dblink_close
- dblink_get_connections
- 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
- dblink_build_sql_delete
- dblink_build_sql_update
- 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. postgres_fdw
- F.32. seg
- F.33. sepgsql
- F.34. spi
- F.35. sslinfo
- F.36. tablefunc
- F.37. tcn
- F.38. test_parser
- F.39. tsearch2
- F.40. unaccent
- F.41. uuid-ossp
- F.42. xml2
- Appendix G. 额外提供的程序
- G.1. 客户端应用程序
- oid2name
- pgbench
- vacuumlo
- G.2. 服务器端应用程序
- pg_archivecleanup
- pg_standby
- pg_test_fsync
- pg_test_timing
- pg_upgrade
- pg_xlogdump
- Appendix H. 外部项目
- H.1. 客户端接口
- H.2. 管理工具
- H.3. 过程语言
- H.4. 扩展
- Appendix I. 源代码库
- I.1. 获得源代码通过Git
- Appendix J. 文档
- J.1. DocBook
- J.2. 工具集
- J.3. 制作文档
- J.4. 文档写作
- J.5. 风格指导
- Appendix K. 首字母缩略词
- 参考书目
- Index