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

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

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

E.233. 版本 7.2 #

发行日期

2002-02-04

E.233.1. 概述

此发行版改进了 PostgreSQL 在高流量应用程序中的使用。

此发行版的主要变更:

VACUUM

清理不再锁定表,因此允许在清理期间正常的用户访问。新 VACUUM FULL 命令通过锁定表并收缩表的磁盘副本执行旧式清理。

Transactions

超过四十亿事务的安装不再有问题。

OIDs

OID 现在是可选的。用户现在可以在 OID 使用过多的情形下创建不带 OID 的表。

Optimizer

系统现在在 ANALYZE 期间计算直方图列统计,使优化器的选择好得多。

Security

新的 MD5 加密选项允许更安全地存储和传输口令。Linux 和 BSD 系统上有新的 Unix 域套接字认证选项。

Statistics

管理员可以使用新的表访问统计模块获取表和索引使用的细粒度信息。

Internationalization

程序和库消息现在可以用多种语言显示。

E.233.2. 迁移到版本 7.2

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

请注意以下不兼容之处:

  • VACUUM 命令的语义在此版本中已更改。你可能需要相应地更新维护程序。

  • 在此版本中,使用 = NULL 的比较总是返回假(更准确地说是 NULL)。以前的版本自动把此语法转换为 IS NULL。旧行为可以用 postgresql.conf 参数重新启用。

  • pg_hba.confpg_ident.conf 配置现在只在收到 SIGHUP 信号后重新装载,而不是每次连接时。

  • 函数 octet_length() 现在返回未压缩的数据长度。

  • 日期/时间值 'current' 不再可用。你需要重写你的应用程序。

  • timestamp()time()interval() 函数不再可用。不要用 timestamp(),请改用 timestamp 'string'CAST

SELECT ... LIMIT #,# 语法将在下一个版本中移除。你应把查询改为使用独立的 LIMIT 和 OFFSET 子句,例如 LIMIT 10 OFFSET 20

E.233.3. 变更

E.233.3.1. 服务器操作

  • 在单独的目录中创建临时文件(Bruce)

  • postmaster 启动时删除孤立的临时文件(Bruce)

  • 为一些系统表添加唯一索引(Tom)

  • 系统表操作符重组(Oleg Bartunov、Teodor Sigaev、Tom)

  • 把 pg_log 改名为 pg_clog(Tom)

  • 启用 SIGTERM、SIGQUIT 来终止后端(Jan)

  • 移除后端数量的编译期限制(Tom)

  • 信号量资源失败时更好的清理(Tatsuo、Tom)

  • 允许安全的事务 ID 回卷(Tom)

  • 从一些系统表移除 OID(Tom)

  • 移除"触发数据更改违反"错误检查(Tom)

  • 预备/保存计划的 SPI 门户创建(Jan)

  • 允许 SPI 列函数用于系统列(Tom)

  • 长值压缩改进(Tom)

  • 表、索引访问的统计收集器(Jan)

  • 把超长序列名截断为合理的值(Tom)

  • 以毫秒测量事务时间(Thomas)

  • 修复 TID 顺序扫描(Hiroshi)

  • 超级用户 ID 现在固定为 1(Peter E)

  • pg_ctl 新 "reload" 选项(Tom)

E.233.3.2. 性能

  • 优化器改进(Tom)

  • 优化器的新直方图列统计(Tom)

  • 重用预写日志文件而不是丢弃它们(Tom)

  • 缓存改进(Tom)

  • IS NULL、IS NOT NULL 优化器改进(Tom)

  • 改进锁管理器以减少锁争用(Tom)

  • 为索引访问支持函数保留 relcache 条目(Tom)

  • 使 NUMERIC 中的 NaN 和无穷大有更好的选择率(Tom)

  • R-tree 性能改进(Kenneth Been)

  • B-tree 分裂更高效(Tom)

E.233.3.3. 权限

  • 把 UPDATE、DELETE 权限改为彼此独立(Peter E)

  • 新 REFERENCES、TRIGGER 权限(Peter E)

  • 允许一次对多个用户 GRANT/REVOKE(Peter E)

  • 新 has_table_privilege() 函数(Joe Conway)

  • 允许非超级用户清理数据库(Tom)

  • 新 SET SESSION AUTHORIZATION 命令(Peter E)

  • 修复新建表上权限修改的缺陷(Tom)

  • 禁止非超级用户访问 pg_statistic,新增用户可访问的视图(Tom)

E.233.3.4. 客户端认证

  • 在认证前 fork postmaster 以防止挂起(Peter E)

  • 在 Linux、*BSD 上通过 Unix 域套接字新增 ident 认证(Helge Bahmann、Oliver Elphick、Teodor Sigaev、Bruce)

  • 新增使用 MD5 加密的口令认证方法(Bruce)

  • 允许用 MD5 加密存储的口令(Bruce)

  • PAM 认证(Dominic J. Eidson)

  • 只在启动和 SIGHUP 时装载 pg_hba.conf 和 pg_ident.conf(Bruce)

E.233.3.5. 服务器配置

  • 一些时区缩写解释为澳大利亚而不是北美,现在可在运行时设置(Bruce)

  • 设置默认事务隔离级别的新参数(Peter E)

  • 启用把 "expr = NULL" 转换为 "expr IS NULL" 的新参数,默认关闭(Peter E)

  • 控制 VACUUM 内存使用的新参数(Tom)

  • 设置客户端认证超时的新参数(Tom)

  • 设置最大打开文件数的新参数(Tom)

E.233.3.6. 查询

  • INSERT 规则添加的语句现在在 INSERT 之后执行(Jan)

  • 阻止目标列表中不加修饰的关系名(Bruce)

  • ORDER BY 中 NULL 现在排在所有正常值之后(Tom)

  • 新 IS UNKNOWN、IS NOT UNKNOWN 布尔测试(Tom)

  • 新 SHARE UPDATE EXCLUSIVE 锁模式(Tom)

  • 新 EXPLAIN ANALYZE 命令,显示运行时间和行数(Martijn van Oosterhout)

  • 修复 LIMIT 与子查询的问题(Tom)

  • 修复推入子查询的 LIMIT、DISTINCT ON(Tom)

  • 修复嵌套的 EXCEPT/INTERSECT(Tom)

E.233.3.7. 模式操作

  • 修复临时表中的 SERIAL(Bruce)

  • 允许临时序列(Bruce)

  • 序列现在内部使用 int8(Tom)

  • 新 SERIAL8 创建带序列的 int8 列,默认仍为 SERIAL4(Tom)

  • 用 WITHOUT OIDS 使 OID 可选(Tom)

  • 为 CREATE TYPE 新增 %TYPE 语法(Ian Lance Taylor)

  • 为 CHECK 约束新增 ALTER TABLE / DROP CONSTRAINT(Christopher Kings-Lynne)

  • 新 CREATE OR REPLACE FUNCTION 更改现有函数(保留函数 OID)(Gavin Sherry)

  • 新增 ALTER TABLE / ADD [ UNIQUE | PRIMARY ](Christopher Kings-Lynne)

  • 允许视图中重命名列

  • 让 ALTER TABLE / RENAME COLUMN 更新索引的列名(Brent Verner)

  • 修复继承表的 ALTER TABLE / ADD CONSTRAINT ... CHECK(Stephan Szabo)

  • ALTER TABLE RENAME 正确更新外键触发器参数(Brent Verner)

  • DROP AGGREGATE 和 COMMENT ON AGGREGATE 现在接受 aggtype(Tom)

  • 为 SQL 函数新增自动返回类型数据转换(Tom)

  • 允许 GiST 索引处理 NULL 和多键索引(Oleg Bartunov、Teodor Sigaev、Tom)

  • 启用部分索引(Martijn van Oosterhout)

E.233.3.8. 工具命令

  • 新增 RESET ALL、SHOW ALL(Marko Kreen)

  • CREATE/ALTER USER/GROUP 现在允许选项任意顺序(Vince)

  • 新增 LOCK A, B, C 功能(Neil Padgett)

  • CREATE/ALTER USER 的新 ENCRYPTED/UNENCRYPTED 选项(Bruce)

  • 新的轻量 VACUUM 不锁定表;旧语义以 VACUUM FULL 提供(Tom)

  • 禁用视图上的 COPY TO/FROM(Bruce)

  • COPY DELIMITERS 字符串必须恰好一个字符(Tom)

  • 关于索引元组少于堆的 VACUUM 警告现在只在适当时出现(Martijn van Oosterhout)

  • 修复 CREATE INDEX 的权限检查(Tom)

  • 禁止不当使用 CREATE/DROP INDEX/TRIGGER/VIEW(Tom)

E.233.3.9. 数据类型和函数

  • SUM()、AVG()、COUNT() 现在内部使用 int8 以提升速度(Tom)

  • 新增 convert()、convert2()(Tatsuo)

  • 新函数 bit_length()(Peter E)

  • 使 CHAR(n)/VARCHAR(n) 中的 "n" 表示字符数而不是字节数(Tatsuo)

  • CHAR()、VARCHAR() 现在拒绝过长的字符串(Peter E)

  • BIT VARYING 现在拒绝过长的位串(Peter E)

  • BIT 现在拒绝与声明大小不匹配的位串(Peter E)

  • INET、CIDR 文本转换函数(Alex Pilosov)

  • INET、CIDR 操作符 << 和 <<= 可索引(Alex Pilosov)

  • Bytea \### 现在要求有效的三位八进制数

  • Bytea 比较改进,现在支持 =、<>、>、>=、< 和 <=

  • Bytea 现在支持 B-tree 索引

  • Bytea 现在支持 LIKE、LIKE...ESCAPE、NOT LIKE、NOT LIKE...ESCAPE

  • Bytea 现在支持连接

  • 新 bytea 函数:position、substring、trim、btrim 和 length

  • 新 encode() 函数模式 "escaped",在最小转义的 bytea 与 text 之间转换

  • 新增 pg_database_encoding_max_length()(Tatsuo)

  • 新增 pg_client_encoding() 函数(Tatsuo)

  • now() 返回毫秒精度的时间(Thomas)

  • 新 TIMESTAMP WITHOUT TIMEZONE 数据类型(Thomas)

  • 新增带 "T" 的 ISO 日期/时间规格,yyyy-mm-ddThh:mm:ss(Thomas)

  • 新 xid/int 比较函数(Hiroshi)

  • 为 TIME、TIMESTAMP 和 INTERVAL 数据类型新增精度(Thomas)

  • 修改类型强制逻辑,先尝试二进制兼容函数(Tom)

  • 新 encode() 函数默认安装(Marko Kreen)

  • 改进的 to_*() 转换函数(Karel Zak)

  • 优化单字节编码下的 LIKE/ILIKE(Tatsuo)

  • contrib/pgcrypto 中的新函数:crypt()、hmac()、encrypt()、gen_salt()(Marko Kreen)

  • 修正 translate() 函数的描述(Bruce)

  • 为 SET TIME ZONE 新增 INTERVAL 参数(Thomas)

  • 新增 INTERVAL YEAR TO MONTH(等)语法(Thomas)

  • 优化单字节编码下的长度函数(Tatsuo)

  • 修复 path_inter、path_distance、path_length、dist_ppath 以处理闭合路径(Curtis Barrett、Tom)

  • octet_length(text) 现在返回未压缩的长度(Tatsuo、Bruce)

  • 处理日期/时间字面量中的 "July" 全名(Greg Sabino Mullane)

  • 一些 datatype() 函数调用现在的求值方式不同

  • 新增对儒略和 ISO 时间规格的支持(Thomas)

E.233.3.10. 国际化

  • psql、pg_dump、libpq 和服务器的国家语言支持(Peter E)

  • 中文(简体、繁体)、捷克语、法语、德语、匈牙利语、俄语、瑞典语的消息翻译(Peter E、Serguei A. Mokhov、Karel Zak、Weiping He、Zhenbang Wei、Kovacs Zoltan)

  • 使 trim、ltrim、rtrim、btrim、lpad、rpad、translate 感知多字节(Tatsuo)

  • 新增 LATIN5,6,7,8,9,10 支持(Tatsuo)

  • 新增 ISO 8859-5,6,7,8 支持(Tatsuo)

  • 更正 LATIN5 为 ISO-8859-9 而不是 ISO-8859-5(Tatsuo)

  • 使 mic2ascii() 不感知非 ASCII(Tatsuo)

  • 拒绝无效的多字节字符序列(Tatsuo)

E.233.3.11. PL/pgSQL

  • 现在 SELECT 循环使用门户,允许超大结果集(Jan)

  • CURSOR 和 REFCURSOR 支持(Jan)

  • 现在可以返回打开的游标(Jan)

  • 新增 ELSEIF(Klaus Reger)

  • 改进 PL/pgSQL 错误报告,包括错误位置(Tom)

  • 为兼容允许游标声明中的 IS 或 FOR 关键字(Bruce)

  • SELECT ... FOR UPDATE 的修复(Tom)

  • 返回多行的 PERFORM 的修复(Tom)

  • 让 PL/pgSQL 使用服务器的类型强制代码(Tom)

  • 内存泄漏修复(Jan、Tom)

  • 使尾部分号可选(Tom)

E.233.3.12. PL/Perl

  • 新不可信 PL/Perl(Alex Pilosov)

  • 即使 libperl 不是共享的,PL/Perl 现在也能在一些平台上构建(Peter E)

E.233.3.13. PL/Tcl

  • 现在报告 errorInfo(Vsevolod Lobko)

  • 新增 spi_lastoid 函数(bob@redivi.com)

E.233.3.14. PL/Python

  • ……是新的(Andrew Bosma)

E.233.3.15. psql

  • \d 按唯一、主键分组显示索引(Christopher Kings-Lynne)

  • 允许反斜杠命令中的尾部分号(Greg Sabino Mullane)

  • 如果可能从 /dev/tty 读取口令

  • 更改用户和数据库时强制新的口令提示(Tatsuo、Tom)

  • 为 Unicode 格式化正确的列数(Patrice)

E.233.3.16. libpq

  • 新函数 PQescapeString(),转义命令字符串中的引号(Florian Weimer)

  • 新函数 PQescapeBytea(),转义二进制字符串以用作 SQL 字符串字面量

E.233.3.17. JDBC

  • 返回 INSERT 的 OID(Ken K)

  • 处理更多数据类型(Ken K)

  • 处理字符串中的单引号和换行(Ken K)

  • 处理 NULL 变量(Ken K)

  • 时区处理的修复(Barry Lind)

  • 改进的 Druid 支持

  • 允许非多字节服务器使用 8 位字符(Barry Lind)

  • 支持 BIT、BINARY 类型(Ned Wolpert)

  • 降低内存使用(Michael Stephens、Dave Cramer)

  • 更新 DatabaseMetaData(Peter E)

  • 新增 DatabaseMetaData.getCatalogs()(Peter E)

  • 编码修复(Anders Bengtsson)

  • Get/setCatalog 方法(Jason Davies)

  • DatabaseMetaData.getColumns() 现在返回列默认值(Jason Davies)

  • DatabaseMetaData.getColumns() 性能改进(Jeroen van Vianen)

  • 一些 JDBC1 和 JDBC2 的合并(Anders Bengtsson)

  • 事务性能改进(Barry Lind)

  • 数组修复(Greg Zoller)

  • 序列化添加

  • 批处理修复(Rene Pijlman)

  • ExecSQL 方法重组(Anders Bengtsson)

  • GetColumn() 修复(Jeroen van Vianen)

  • 修复 isWriteable() 函数(Rene Pijlman)

  • 更好地通过 JDBC2 一致性测试(Rene Pijlman)

  • 新增 bytea 类型能力(Barry Lind)

  • 新增 isNullable()(Rene Pijlman)

  • JDBC 日期/时间测试套件修复(Liam Stewart)

  • SELECT 'id' AS xxx FROM table 的修复(Dave Cramer)

  • 修复 DatabaseMetaData 以正确显示精度(Mark Lillywhite)

  • 新 getImported/getExported 键(Jason Davies)

  • MD5 口令加密支持(Jeremy Wohl)

  • 修复为真正使用类型缓存(Ned Wolpert)

E.233.3.18. ODBC

  • 移除查询大小限制(Hiroshi)

  • 移除文本字段大小限制(Hiroshi)

  • 多字节模式下 SQLPrimaryKeys 的修复(Hiroshi)

  • 允许 ODBC 过程调用(Hiroshi)

  • 改进布尔处理(Aidan Mountford)

  • 大多数配置选项现在可通过 DSN 设置(Hiroshi)

  • 多字节、性能修复(Hiroshi)

  • 允许驱动与 iODBC 或 unixODBC 一起使用(Peter E)

  • MD5 口令加密支持(Bruce)

  • 为 odbc.sql 添加更多兼容函数(Peter E)

E.233.3.19. ECPG

  • 实现 EXECUTE ... INTO(Christof Petig)

  • 多行描述符支持(如 CARDINALITY)(Christof Petig)

  • GRANT 参数的修复(Lee Kindness)

  • 修复 INITIALLY DEFERRED 缺陷

  • 各种缺陷修复(Michael、Christof Petig)

  • 指示符变量数组的自动分配(int *ind_p=NULL)

  • 字符串数组的自动分配(char **foo_pp=NULL)

  • 修复 ECPGfree_auto_mem

  • 所有有外部链接的函数名现在都以 ECPG 为前缀

  • 结构数组的修复(Michael)

E.233.3.20. 其他接口

  • Python 修复 fetchone()(Gerhard Haring)

  • 在适当处在 Tcl 中使用 UTF、Unicode(Vsevolod Lobko、Reinhard Max)

  • 新增 Tcl COPY TO/FROM(ljb)

  • 防止 pg_dump 输出默认索引操作符类(Tom)

  • 修复 libpgeasy 内存泄漏(Bruce)

E.233.3.21. 构建和安装

  • Configure、动态装载器和共享库修复(Peter E)

  • QNX 4 移植的修复(Bernd Tegge)

  • Cygwin 和 Windows 移植的修复(Jason Tishler、Gerhard Haring、Dmitry Yurtaev、Darko Prenosil、Mikhail Terekhov)

  • Windows 套接字通信失败的修复(Magnus、Mikhail Terekhov)

  • Hurd 编译修复(Oliver Elphick)

  • BeOS 修复(Cyril Velter)

  • 移除 configure --enable-unicode-conversion,现由多字节启用(Tatsuo)

  • AIX 修复(Tatsuo、Andreas)

  • 修复并行 make(Peter E)

  • 把 SQL 语言手册页安装到操作系统特定的目录(Peter E)

  • 把 config.h 改名为 pg_config.h(Peter E)

  • 重新组织头文件的安装布局(Peter E)

E.233.3.22. 源代码

  • 移除 SEP_CHAR(Bruce)

  • 新 GUC 钩子(Tom)

  • 合并 GUC 和命令行处理(Marko Kreen)

  • 移除 EXTEND INDEX(Martijn van Oosterhout、Tom)

  • 新的缩进 java 代码的 pgjindent 工具(Bruce)

  • 在 C++ 下编译时移除 true/false 的定义(Leandro Fanzone、Tom)

  • pgindent 修复(Bruce、Tom)

  • 在适当处用 strcmp() 取代 strcasecmp()(Peter E)

  • Dynahash 可移植性改进(Tom)

  • 在自旋锁结构中添加 'volatile' 用法

  • 改进信号处理逻辑(Tom)

E.233.3.23. 附加模块

  • 新 contrib/rtree_gist(Oleg Bartunov、Teodor Sigaev)

  • 新 contrib/tsearch 全文索引(Oleg、Teodor Sigaev)

  • 新增用于远程数据库访问的 contrib/dblink(Joe Conway)

  • contrib/ora2pg Oracle 转换工具(Gilles Darold)

  • contrib/xml XML 转换工具(John Gray)

  • contrib/fulltextindex 修复(Christopher Kings-Lynne)

  • 新 contrib/fuzzystrmatch,含 levenshtein 和 metaphone,合并了 soundex(Joe Conway)

  • 为 contrib/intarray 新增布尔查询、二分搜索和修复(Oleg Bartunov)

  • 新 pg_upgrade 工具(Bruce)

  • 新增 pg_resetxlog 选项(Bruce、Tom)

提交更正

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