pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
2001-04-13
此发行版专注于移除 PostgreSQL 代码中存在多年的限制。
此发行版的主要变更:
为了在操作系统崩溃时保持数据库一致性,以前的 PostgreSQL 版本强制在每次事务提交前把所有数据修改写到磁盘。有了 WAL,只需把一个日志文件刷到磁盘,大幅改进了性能。如果你在以前的版本中一直用 -F 禁用磁盘刷写,可能要考虑停止使用它。
TOAST——以前的版本有编译期行长度限制,通常为 8k - 32k。这一限制使长文本字段的存储很困难。有了 TOAST,任意长度的长行都能以良好的性能存储。
我们现在支持外连接。不再需要用 UNION/NOT IN 变通实现外连接。我们使用 SQL92 外连接语法。
以前的 C 函数管理器不能正确处理空值,也不支持 64 位 CPU(Alpha)。新的函数管理器可以。你可以继续使用旧的自定义函数,但将来可能想重写它们以使用新的函数管理器调用接口。
以前版本不支持的大量复杂查询现在可以工作。视图、聚合、UNION、LIMIT、游标、子查询和继承表的许多组合现在都能正常工作。继承表现在默认被访问。FROM 中的子查询现在受支持。
希望从任何以前的版本迁移数据的用户,需要使用 pg_dump 进行转储/恢复。
缺陷修复 --------- 大量多字节/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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。