↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本PostgreSQL 7.2 已于 2007 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

A.13. 版本 7.1 #

发行日期

2001-04-13

此发行版的重点是移除 PostgreSQL 代码中 存在多年的限制。

此发行版的主要变更:

预写日志(WAL)

为了在操作系统崩溃时保持数据库一致性,以前的 PostgreSQL 发行版强制在每次事务提交之前将所有数据修改写入磁盘。有了 WAL,只需将一个 日志文件刷写到磁盘,从而大大改进了性能。如果你在以前的发行版中使用 -F 来 禁用磁盘刷写,现在可以考虑停止使用它。

TOAST

TOAST —— 以前的发行版有编译期行长度限制,通常为 8k - 32k。这一 限制使长文本字段的存储很困难。有了 TOAST,任意长度的长行都能以良好的 性能存储。

外连接

我们现在支持外连接。用于模拟外连接的 UNION/NOT IN 变通方法不再需要。 我们使用 SQL92 外连接语法。

函数管理器

以前的 C 函数管理器不能正确处理空值,也不支持 64 位 CPU(Alpha)。 新的函数管理器可以。你可以继续使用旧的自定义函数,但将来可能需要重写它们 以使用新的函数管理器调用接口。

复杂查询

大量以前发行版不支持的复杂查询现在可以工作了。视图、聚合、UNION、LIMIT、 游标、子查询和继承表的许多组合现在都能正常工作。默认情况下现在会访问继承表。 FROM 中的子查询现在受支持。

A.13.1. 迁移到版本 7.1

希望从任何以前的发行版迁移数据的用户,需要使用 pg_dump 进行 转储/恢复。

A.13.2. 变更

缺陷修复
---------
大量多字节/Unicode/区域设置修复(Tatsuo 等)
更可靠的 ALTER TABLE RENAME(Tom)
Kerberos V 修复(David Wragg)
修复目标列表带子查询的 INSERT INTO...SELECT(Tom)
在标准错误上提示用户名/口令(Bruce)
大对象 inv_read/inv_write 修复(Tom)
to_char()、to_date()、to_ascii() 和 to_timestamp() 的修复(Karel、
   Daniel Baldoni)
防止查询表达式泄漏内存(Tom)
允许更新数组元素(Tom)
取消时唤醒锁等待者(Hiroshi)
修复使用哈希连接时罕见的游标崩溃(Tom)
修复已回滚事务中的 DROP TABLE/INDEX(Hiroshi)
修复启用 MULTIBYTE 时 psql \l+ 的崩溃(Peter E)
修复 CREATE VIEW 期间规则名被截断的问题(Ross Reedstrom)
修复 PL/perl(Alex Kapranoff)
禁止对视图执行 LOCK(Mark Hollomon)
禁止对视图执行 INSERT/UPDATE/DELETE(Mark Hollomon)
禁止对视图执行 DROP RULE、CREATE INDEX、TRUNCATE(Mark Hollomon)
允许 PL/pgSQL 接受非 ASCII 标识符(Tatsuo)
允许视图正确处理 GROUP BY、聚合、DISTINCT(Tom)
修复 TRUNCATE 命令的罕见失败(Tom)
允许 UNION/INTERSECT/EXCEPT 与 ALL、子查询、视图、
   DISTINCT、ORDER BY、SELECT...INTO 一起使用(Tom)
修复已中止事务期间解析器的失败(Tom)
允许临时关系正确清理索引(Bruce)
修复 VACUUM 在同一页内移动行的问题(Tom)
修改 pg_dump 以更好地处理 template1 中的用户自定义项(Philip)
允许在视图中使用 LIMIT(Tom)
要求游标 FETCH 遵守 LIMIT(Tom)
允许在继承列上定义 PRIMARY/FOREIGN KEY(Stephan)
允许子查询中的 ORDER BY、LIMIT(Tom)
允许在 CREATE RULE 中使用 UNION(Tom)
使 ALTER/DROP TABLE 可回滚(Vadim、Tom)
将 initdb 的排序规则存入 pg_control,使排序规则无法被更改(Tom)
修复带规则的 INSERT...SELECT(Tom)
修复视图和子选择内部的 FOR UPDATE(Tom)
修复 OVERLAPS 操作符使其在 NULL 处理上符合 SQL92 规范(Tom)
修复 lpad() 和 rpad() 以处理长度小于输入字符串的情况(Tom)
修复某些规则中 NOTIFY 的使用(Tom)
全面翻修 btree 代码(Tom)
修复 PL/pgSQL 变量中 NOT NULL 的使用(Tom)
全面翻修 GIST 代码(Oleg)
修复 CLUSTER 以保留约束和列默认值(Tom)
改进的死锁检测处理(Tom)
允许表中有多列 SERIAL(Tom)
防止偶发的索引损坏(Vadim)

增强
------------
添加外连接(Tom)
函数管理器全面翻修(Tom)
允许对索引执行 ALTER TABLE RENAME(Tom)
改进 CLUSTER(Tom)
改进更多平台上的 ps 状态显示(Peter E、Marc)
改进 CREATE FUNCTION 失败消息(Ross)
JDBC 改进(Peter、Travis Bauer、Christopher Cain、William Webber、
   Gunnar)
大一统配置方案/GUC。现在许多选项可以在 data/postgresql.conf、
   postmaster/postgres 标志或 SET 命令中设置(Peter E)
改进文件描述符缓存的处理(Tom)
关于自动创建表别名的新的警告代码(Bruce)
全面翻修 initdb 流程(Tom、Peter E)
继承表的全面翻修;默认情况下现在会访问继承表;
  新的 ONLY 关键字可阻止这一点(Chris Bitmead、Tom)
ODBC 清理/改进(Nick Gorham、Stephan Szabo、Zoltan Kovacs、
   Michael Fork)
允许重命名临时表(Tom)
全面翻修内存管理器上下文(Tom)
pg_dumpall 使用 CREATE USER 或 CREATE GROUP 而不是 COPY(Peter E)
全面翻修 pg_dump(Philip Warner)
允许 pg_hba.conf 辅助口令文件只指定用户名(Peter E)
创建临时表时允许使用 TEMPORARY 或 TEMP 关键字(Bruce)
新的内存泄漏检查器(Karel)
新的 SET SESSION CHARACTERISTICS(Thomas)
允许嵌套块注释(Thomas)
添加 WITHOUT TIME ZONE 类型限定符(Thomas)
新的 ALTER TABLE ADD CONSTRAINT(Stephan)
整数聚合使用 NUMERIC 累加器(Tom)
全面翻修聚合代码(Tom)
新的 VARIANCE 和 STDDEV() 聚合
改进 pg_dump 的依赖排序(Philip)
新的 pg_restore 命令(Philip)
新的 pg_dump tar 输出选项(Philip)
新的大对象 pg_dump(Philip)
LIKE 的新 ESCAPE 选项(Thomas)
新的不区分大小写的 LIKE —— ILIKE(Thomas)
允许函数索引使用二进制兼容类型(Tom)
允许 SQL 函数在更多上下文中使用(Tom)
新的 pg_config 工具(Peter E)
新的 PL/pgSQL EXECUTE 命令,允许动态 SQL 和工具语句(Jan)
用于 SPI 值访问的新的 PL/pgSQL GET DIAGNOSTICS 语句(Jan)
新的 quote_identifiers() 和 quote_literal() 函数(Jan)
新的 ALTER TABLE table OWNER TO user 命令(Mark Hollomon)
允许 FROM 中的子选择,即 FROM (SELECT ...) [AS] alias(Tom)
更新 PyGreSQL 到 3.1 版(D'Arcy)
表存储为以 OID 命名的文件(Vadim)
新的 SQL 函数 setval(seq,val,bool) 供 pg_dump 使用(Philip)
要求用 DROP VIEW 删除视图,不能用 DROP TABLE(Mark)
允许 DROP VIEW view1, view2(Mark)
允许 DROP INDEX、DROP RULE 和 DROP TYPE 中有多个对象(Tom)
允许与 Unicode 的自动双向转换(Tatsuo、Eiji)
新的 /contrib/pgcrypto 哈希函数(Marko Kreen)
新的 pg_dumpall --globals-only 选项(Peter E)
用于 WAL 的新的 CHECKPOINT 命令,它创建新的 WAL 日志文件(Vadim)
新的 AT TIME ZONE 语法(Thomas)
允许配置 Unix 域套接字的位置(David J. MacKenzie)
允许 postmaster 监听特定 IP 地址(David J. MacKenzie)
允许通过前导斜杠在主机名中指定套接字路径名(David J. MacKenzie)
允许 CREATE DATABASE 指定模板数据库(Tom)
将 MySQL 模式转储转换为 SQL92 和 PostgreSQL 的新工具(Thomas)
新的 /contrib/rserv 复制工具包(Vadim)
COPY BINARY 的新文件格式(Tom)
新的 /contrib/oid2name,将数字文件映射为表名(B Palmer)
新的 "idle in transaction" ps 状态消息(Marc)
更新到 pgaccess 0.98.7(Constantin Teodorescu)
pg_ctl 关闭时现在默认 -w(等待),新的 -l(日志)选项
为 pg_dump 添加初步的依赖检查(Philip)

类型
-----
修复 INET/CIDR 类型排序并添加新函数(Tom)
使 OID 表现为无符号类型(Tom)
允许 BIGINT 作为 INT8 的同义词(Peter E)
新的 int2 和 int8 比较操作符(Tom)
新的 BIT 和 BIT VARYING 类型(Adriaan Joubert、Tom、Peter E)
由于 TOAST,CHAR() 不再比 VARCHAR() 快(Tom)
新的 GIST seg/cube 示例(Gene Selkov)
改进的 round(numeric) 处理(Tom)
修复 CIDR 输出格式(Tom)
新的 CIDR abbrev() 函数(Tom)

性能
-----------
预写日志(WAL)以更低的性能开销提供崩溃恢复(Vadim)
VACUUM 的 ANALYZE 阶段不再独占锁定表(Bruce)
减少文件寻道(Denis Perchine)
改进重复键的 BTREE 代码(Tom)
将所有大对象存储在单个表中(Denis Perchine、Tom)
改进内存分配性能(Karel、Tom)

源代码
-----------
新的函数管理器调用约定(Tom)
SGI 可移植性修复(David Kaelbling)
新的 configure --enable-syslog 选项(Peter E)
新的 BSDI README(Bruce)
configure 脚本移到顶层,不在 /src 中(Peter E)
Makefile/配置/编译全面翻修(Peter E)
新的 configure --with-python 选项(Peter E)
Solaris 清理(Peter E)
全面翻修 /contrib Makefile(Karel)
新的 OpenSSL 配置选项(Magnus、Peter E)
AIX 修复(Andreas)
QNX 修复(Maurizio)
新的 heap_open()、heap_openr() API(Tom)
移除冒号和分号操作符(Thomas)
视图的新 pg_class.relkind 值(Mark Hollomon)
将 ichar() 更名为 chr()(Karel)
btrim()、ascii()、chr()、repeat() 的新文档(Karel)
NT/Cygwin 修复(Pete Forman)
AIX 移植修复(Andreas)
新的 BeOS 移植(David Reid、Cyril Velter)
将校对者的修改添加到文档(Addison-Wesley、Bruce)
新的 Alpha 自旋锁代码(Adriaan Joubert、Compaq)
UnixWare 移植全面翻修(Peter E)
新的 Darwin/MacOS X 移植(Peter Bierman、Bruce Hartzler)
新的 FreeBSD Alpha 移植(Alfred)
全面翻修共享内存段(Tom)
添加 IBM S/390 支持(Neale Ferguson)
将 macmanuf 移到 /contrib(Larry Rosenman)
syslog 改进(Larry Rosenman)
新的不含用户添加内容的 template0 数据库(Tom)
新的 /contrib/cube 和 /contrib/seg GIST 示例代码(Gene Selkov)
允许使用 NetBSD 的 libedit 代替 readline(Peter)
改进的汇编语言源代码格式(Bruce)
新的 contrib/pg_logger
createdb 的新 --template 选项
新的 contrib/pg_control 工具(Oliver)
新的 FreeBSD 工具 ipc_check、start-scripts/freebsd
    

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。