选择 打开 改范围 完整检索页

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

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

E.237. 版本 7.1 #

发行日期

2001-04-13

此发行版专注于移除 PostgreSQL 代码中存在多年的限制。

此发行版的主要变更:

Write-ahead Log (WAL)

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

TOAST

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

Outer Joins

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

Function Manager

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

Complex Queries

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

E.237.1. 迁移到版本 7.1

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

E.237.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 时 \l+ 导致 psql 崩溃的问题(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)
允许 VIEW 中使用 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)

增强
------------
添加 OUTER JOIN(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)
INTEGER 聚合使用 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)
新 PL/pgSQL GET DIAGNOSTICS 语句用于 SPI 值访问(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/Mac OS 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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。