pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
2002-11-27
此发行版的主要变更:
模式允许用户在独立的命名空间中创建对象,因此两个人或应用程序可以 拥有同名的表。还提供了一个用于共享表的公共模式。可以通过移除公共 模式上的权限来限制表/索引的创建。
PostgreSQL 现在支持 ALTER TABLE ... DROP COLUMN 功能。
返回多行和/或多列的函数现在比以前容易使用得多。你可以在 SELECT 的 FROM 子句中调用这样 的“表函数”,把它的输出当作表来处理。此外, PL/pgSQL 函数现在可以返回集合。
PostgreSQL 现在支持预备查询,以改进性能。
PostgreSQL 现在记录对象依赖关系,这带来 了诸多方面的改进。DROP 语句现在接受 CASCADE 或 RESTRICT,以控制依赖对象是否也 被删除。
函数和过程语言现在有了权限,并且函数可以定义为以其创建者的权限 运行。
多字节和区域设置支持现在总是启用。
多种日志选项得到了增强。
大量接口已迁移到 http://gborg.postgresql.org, 在那里它们可以独立地开发和发布。
默认情况下,函数现在最多可以有 32 个参数,标识符最长可达 63 字节。 此外,OPAQUE 现已废弃:有特定的“伪数据类型”来 表示 OPAQUE 在函数参数和结果类型中的各种旧有含义。
希望从任何以前的发行版迁移数据的用户,需要使用 pg_dump 进行转储/恢复。如果你的应用程序检查系统目录, 由于 7.3 引入了模式,还需要额外的变更;更多信息请参见:http://developer.postgresql.org/~momjian/upgrade_tips_7.3。
注意以下不兼容之处:
不再支持 6.3 之前的客户端。
pg_hba.conf 现在有一个用于用户名的列以及一些 附加功能。现有文件需要调整。
若干 postgresql.conf 日志参数已被重命名。
LIMIT #,# 已被禁用;请使用 LIMIT # OFFSET #。
带列列表的 INSERT 语句必须为每个指定的列提供 值。例如,INSERT INTO tab (col1, col2) VALUES ('val1') 现在是无效的。如果 INSERT 没有列列表,仍然允许 提供比预期少的列。
serial 列不再自动 UNIQUE;因此不会自动 创建索引。
已中止事务中的 SET 命令现在会被回滚。
COPY 不再把缺失的尾部列视为空值。所有列都需 指定。(不过,可以通过在 COPY 命令中指定列列表 来实现类似效果。)
数据类型 timestamp 现在等价于 timestamp without time zone,而不是 timestamp with time zone。
加载到 7.3 中的 7.3 之前的数据库不会拥有 serial 列、 唯一约束和外键的新对象依赖。目录 contrib/adddepend/ 中有详细的说明以及一个添加此类依赖的脚本。
不再允许空字符串('')作为整数字段的输入。以前 它被静默地解释为 0。
添加 pg_locks 视图以显示锁(Neil)
口令协商内存分配的安全修复(Neil)
移除对版本 0 FE/BE 协议(PostgreSQL 6.2 及更早版本)的支持(Tom)
为超级用户保留最后几个后端槽位,并添加参数 superuser_reserved_connections 来控制(Nigel J. Andrews)
只调用一次 localtime() 以改进启动(Tom)
将系统目录信息缓存到平面文件中以加快启动(Tom)
改进索引信息的缓存(Tom)
优化器改进(Tom、Fernando Nasser)
目录缓存现在会存储失败的查找(Tom)
哈希函数改进(Neil)
改进查询词法分析和网络处理的性能(Peter)
大对象恢复的速度改进(Mario Weilguni)
在第一次查找时标记已失效的索引条目,省去之后的堆取值(Tom)
避免过度的 NULL 位图填充(Manfred Koizar)
为 Solaris 添加 BSD 许可的 qsort() 以提升性能(Bruce)
将每行开销减少四字节(Manfred Koizar)
修复 GEQO 优化器缺陷(Neil Conway)
使 WITHOUT OID 真正做到每行节省四字节(Manfred Koizar)
添加 default_statistics_target 变量以指定 ANALYZE 桶数(Neil)
临时表使用本地缓冲区缓存,因此没有 WAL 开销(Tom)
改进大表上空闲空间映射的性能(Stephen Marshall、Tom)
改进的 WAL 写入并发(Tom)
为函数和过程语言添加权限(Peter)
为 CREATE DATABASE 添加 OWNER,使超级用户可以代表无特权用户创建数据库(Gavin Sherry、Tom)
添加新的对象权限位 EXECUTE 和 USAGE(Tom)
添加 SET SESSION AUTHORIZATION DEFAULT 和 RESET SESSION AUTHORIZATION(Tom)
允许函数以函数所有者的权限执行(Peter)
服务器日志消息现在标记为 LOG 而不是 DEBUG(Bruce)
为 pg_hba.conf 添加 user 列(Bruce)
log_connections 在日志文件中输出两行(Tom)
从 postgresql.conf 移除 debug_level,现在是 server_min_messages(Bruce)
新的 ALTER DATABASE/USER ... SET 命令用于每用户/数据库初始化(Peter)
新参数 server_min_messages 和 client_min_messages,控制哪些消息发送到服务器日志或客户端应用程序(Bruce)
允许 pg_hba.conf 指定以逗号分隔的用户/数据库列表、以 + 前缀的组名、以 @ 前缀的文件名(Bruce)
移除辅助口令文件能力和 pg_password 工具(Bruce)
为数据库本地的用户名添加变量 db_user_namespace(Bruce)
SSL 改进(Bear Giles)
使存储口令的加密成为默认(Bruce)
允许通过调用 pg_stat_reset() 重置 pg_statistics(Christopher)
添加 log_duration 参数(Bruce)
将 debug_print_query 重命名为 log_statement(Bruce)
将 show_query_stats 重命名为 show_statement_stats(Bruce)
添加参数 log_min_error_statement,在出错时将命令打印到日志(Gavin)
使游标不敏感,即其内容不发生变化(Tom)
禁用 LIMIT #,# 语法;现在只支持 LIMIT # OFFSET #(Bruce)
将标识符长度增加到 63(Neil、Bruce)
修复合并 >= 3 个不同长度列的 UNION 问题(Tom)
为 INSERT 添加 DEFAULT 关键字,例如 INSERT ... (..., DEFAULT, ...)(Rod)
允许视图使用 ALTER COLUMN ... SET DEFAULT 拥有默认值(Neil)
带列列表但不为所有列提供值的 INSERT 现在失败,例如 INSERT INTO tab (col1, col2) VALUES ('val1');(Rod)
修复连接别名(Tom)
修复 FULL OUTER JOIN(Tom)
改进无效标识符及位置的报告(Tom、Gavin)
修复 OPEN cursor(args)(Tom)
允许在视图和 currtid(viewname) 中使用 'ctid'(Hiroshi)
修复带 UNION 的 CREATE TABLE AS(Tom)
SQL99 语法改进(Thomas)
添加 statement_timeout 变量以取消查询(Bruce)
允许使用 PREPARE/EXECUTE 进行预备查询(Neil)
允许 FOR UPDATE 出现在 LIMIT/OFFSET 之后(Bruce)
添加变量 autocommit(Tom、David Van Wie)
使 CREATE DATABASE 中的等号变为可选(Gavin Sherry)
使 ALTER TABLE OWNER 也更改索引所有权(Neil)
新的 ALTER TABLE tabname ALTER COLUMN colname SET STORAGE 控制 TOAST 存储和压缩(John Gray)
添加模式支持,CREATE/DROP SCHEMA(Tom)
为临时表创建模式(Tom)
为模式搜索添加变量 search_path(Tom)
添加 ALTER TABLE SET/DROP NOT NULL(Christopher)
新的 CREATE FUNCTION 易变性级别(Tom)
使规则名只在每表内唯一(Tom)
为 DROP RULE 和 COMMENT ON RULE 添加 'ON tablename' 子句(Tom)
添加 ALTER TRIGGER RENAME(Joe)
新的 current_schema() 和 current_schemas() 查询函数(Tom)
允许函数返回多行(表函数)(Joe)
为一致性,使 CREATE DATABASE 中的 WITH 变为可选(Bruce)
添加对象依赖跟踪(Rod、Tom)
为 DROP 命令添加 RESTRICT/CASCADE(Rod)
为非 CHECK 约束添加 ALTER TABLE DROP(Rod)
删除带 SERIAL 的表时自动销毁序列(Rod)
防止删除被外键使用的列(Rod)
对象被删除时自动删除依赖的约束/函数(Rod)
添加 CREATE/DROP OPERATOR CLASS(Bill Studenmund、Tom)
添加 ALTER TABLE DROP COLUMN(Christopher、Tom、Hiroshi)
防止继承列被删除或重命名(Alvaro Herrera)
修复外键约束在中间数据库状态下出错的问题(Stephan)
将列或表的重命名传播到外键约束
添加 CREATE OR REPLACE VIEW(Gavin、Neil、Tom)
添加 CREATE OR REPLACE RULE(Gavin、Neil、Tom)
使规则按字母顺序执行,返回更可预测的值(Tom)
触发器现在按字母顺序触发(Tom)
添加 /contrib/adddepend 以处理 7.3 之前的对象依赖(Rod)
允许在插入/更新值时进行更好的类型转换(Tom)
使 COPY TO 将嵌入的回车和换行输出为 \r 和 \n(Tom)
允许 COPY FROM 中的 DELIMITER 为 8 位干净(Tatsuo)
为提升性能,使 pg_dump 使用 ALTER TABLE ADD PRIMARY KEY(Neil)
禁用多语句规则中的方括号(Bruce)
禁止在函数内调用 VACUUM(Bruce)
允许 dropdb 和其他脚本使用带空格的标识符(Bruce)
将数据库注释的更改限制在当前数据库
允许对操作符进行注释,独立于底层函数(Rod)
回滚已中止事务中的 SET 命令(Tom)
EXPLAIN 现在以查询形式输出(Tom)
在 EXPLAIN 中显示条件表达式和排序键(Tom)
添加 'SET LOCAL var = value',为单个事务设置配置变量(Tom)
允许 ANALYZE 在事务中运行(Bruce)
使用新的 WITH 子句改进 COPY 语法,保持向后兼容(Bruce)
修复 pg_dump 在非 ASCII 转储中一致地输出标签(Bruce)
使转储文件中的外键约束更清晰(Rod)
添加 COMMENT ON CONSTRAINT(Rod)
允许 COPY TO/FROM 指定列名(Brent Verner)
将 UNIQUE 和 PRIMARY KEY 约束转储为 ALTER TABLE(Rod)
使 SHOW 输出查询结果(Joe)
COPY 行过短时产生失败而不是填充 NULL(Neil)
修复 CLUSTER 以保留所有表属性(Alvaro Herrera)
新的 pg_settings 表用于查看/修改 GUC 设置(Joe)
为 pg_dump 输出添加智能引号和可移植性改进(Peter)
将序列列转储为 SERIAL(Tom)
启用大文件支持,pg_dump 支持 >2G(Peter、Philip Warner、Bruce)
禁止对参与引用约束的表执行 TRUNCATE(Rod)
使 TRUNCATE 也自动截断关系的 toast 表(Tom)
添加 clusterdb 工具,可基于先前的 CLUSTER 操作自动聚簇整个数据库(Alvaro Herrera)
全面翻修 pg_dumpall(Peter)
允许对 TOAST 表执行 REINDEX(Tom)
按 SQL99 实现 START TRANSACTION(Neil)
修复页分割影响批量删除时的罕见索引损坏(Tom)
修复继承情况下的 ALTER TABLE ... ADD COLUMN(Alvaro Herrera)
修复 factorial(0) 使其返回 1(Bruce)
日期/时间/时区改进(Thomas)
修复数组切片提取(Tom)
修复 extract/date_part 对 timestamp 报告正确微秒(Tatsuo)
允许 text_substr() 和 bytea_substr() 更高效地读取 TOAST 值(John Gray)
添加域支持(Rod)
使 TIMESTAMP 和 TIME 数据类型默认为 WITHOUT TIME ZONE(Thomas)
允许日期/时间类型在 configure 中使用 --enable-integer-datetimes 时采用 64 位整数的备选存储方案(Thomas)
使 timezone(timestamptz) 返回 timestamp 而不是字符串(Thomas)
允许日期/时间类型在公元前 1 年之前的日期中有小数秒(Thomas)
将 timestamp 数据类型的精度限制为 6 位小数(Thomas)
将时区转换函数从 timetz() 更名为 timezone()(Thomas)
添加配置变量 datestyle 和 timezone(Tom)
添加 OVERLAY(),允许替换字符串中的子串(Thomas)
添加 SIMILAR TO(Thomas、Tom)
添加正则表达式 SUBSTRING(string FROM pat FOR escape)(Thomas)
添加 LOCALTIME 和 LOCALTIMESTAMP 函数(Thomas)
使用 CREATE TYPE typename AS (column) 添加命名复合类型(Joe)
允许在表别名子句中定义复合类型(Joe)
添加新的 API 以简化 C 语言表函数的创建(Joe)
对与标准不匹配的 SQL99 函数,移除调用中 ODBC 兼容的空圆括号(Thomas)
允许 macaddr 数据类型接受无分隔符的 12 位十六进制数字(Mike Wyer)
添加 CREATE/DROP CAST(Peter)
添加 IS DISTINCT FROM 操作符(Thomas)
添加 SQL99 TREAT() 函数,CAST() 的同义词(Thomas)
添加 pg_backend_pid() 以输出后端 pid(Bruce)
添加 IS OF / IS NOT OF 类型谓词(Thomas)
允许未完全指定长度的位串常量(Thomas)
允许 8 字节整数与位串之间的转换(Thomas)
实现十六进制字面量到位串字面量的转换(Thomas)
允许表函数出现在 FROM 子句中(Joe)
将函数参数的最大数量增加到 32(Bruce)
不再为 SERIAL 列自动创建索引(Tom)
添加 current_database()(Rod)
修复 cash_words() 缓冲区溢出(Tom)
添加函数 replace()、split_part()、to_hex()(Joe)
修复 bytea 作为右侧参数的 LIKE(Joe)
防止 SELECT cash_out(2) 导致的崩溃(Tom)
修复 to_char(1,'FM999.99') 使其返回句点(Karel)
修复返回 OPAQUE 的触发器/类型/语言函数使其返回正确类型(Tom)
添加更多编码:韩语(JOHAB)、泰语(WIN874)、越南语(TCVN)、阿拉伯语(WIN1256)、简体中文(GBK)、韩语(UHC)(Eiji Tokuya)
默认启用区域设置支持(Peter)
添加区域设置变量(Peter)
在 PQescapeBytea/PQunescapeBytea 中为多字节转义 >= 0x7f 的字节(Tatsuo)
为正则表达式字符类添加区域设置感知
默认启用多字节支持(Tatsuo)
添加 GB18030 多字节支持(Bill Huang)
添加 CREATE/DROP CONVERSION,允许可加载编码(Tatsuo、Kaori)
添加 pg_conversion 表(Tatsuo)
添加 SQL99 CONVERT() 函数(Tatsuo)
pg_dumpall、pg_controldata 和 pg_resetxlog 现在支持国家语言(Peter)
新增和更新的翻译
允许递归 SQL 函数(Peter)
更改 PL/Tcl 构建以使用配置的编译器和 Makefile.shlib(Peter)
全面翻修 PL/pgSQL 的 FOUND 变量以更兼容 Oracle(Neil、Tom)
允许 PL/pgSQL 处理带引号的标识符(Tom)
允许返回集合的 PL/pgSQL 函数(Neil)
使 PL/pgSQL 感知模式(Joe)
移除一些内存泄漏(Nigel J. Andrews、Tom)
为兼容 7.2.0,psql \connect 不再将数据库名转换为小写(Tom)
添加 psql \timing 以对用户查询计时(Greg Sabino Mullane)
使 psql \d 显示索引信息(Greg Sabino Mullane)
新的 psql \dD 显示域(Jonathan Eisler)
允许 psql 显示视图上的规则(Paul ?)
修复 psql 变量替换(Tom)
允许 psql \d 显示临时表结构(Tom)
允许 psql \d 显示外键(Rod)
修复 \? 以遵守 \pset pager(Bruce)
使 psql 在启动时报告其版本号(Tom)
允许 \copy 指定列名(Tom)
添加 ~/.pgpass 以存储主机/用户口令组合(Alvaro Herrera)
为 libpq 添加 PQunescapeBytea() 函数(Patrick Welche)
修复通过非阻塞连接发送大查询的问题(Bernhard Herzog)
修复 libpq 在 Win9X 上使用计时器的问题(David Ford)
允许 libpq notify 处理标识符长度不同的服务器(Tom)
将 libpq 的 PQescapeString() 和 PQescapeBytea() 添加到 Windows(Bruce)
修复非阻塞连接的 SSL 问题(Jack Bates)
添加 libpq 连接超时参数(Denis A Ustimenko)
允许 JDBC 用 JDK 1.4 编译(Dave)
添加 JDBC 3 支持(Barry)
允许 JDBC 通过在连接 URL 中添加 ?loglevel=X 来设置日志级别(Barry)
添加打印版本号的 Driver.info() 消息(Barry)
添加可更新结果集(Raghu Nidagal、Dave)
添加对可调用语句的支持(Paul Bethe)
添加查询取消能力
添加刷新行(Dave)
修复多字节服务器的 MD5 加密处理(Jun Kawai)
添加对预备语句的支持(Barry)
修复 ECPG 关于单引号中八进制数的缺陷(Michael)
将 src/interfaces/libpgeasy 迁移到 http://gborg.postgresql.org(Marc、Bruce)
改进 Python 接口(Elliot Lee、Andrew Johnson、Greg Copeland)
添加 libpgtcl 连接关闭事件(Gerhard Hintermayer)
将 src/interfaces/libpq++ 迁移到 http://gborg.postgresql.org(Marc、Bruce)
将 src/interfaces/odbc 迁移到 http://gborg.postgresql.org(Marc)
将 src/interfaces/libpgeasy 迁移到 http://gborg.postgresql.org(Marc、Bruce)
将 src/interfaces/perl5 迁移到 http://gborg.postgresql.org(Marc、Bruce)
从主树移除 src/bin/pgaccess,现位于 http://www.pgaccess.org(Bruce)
为 libpgtcl 添加 pg_on_connection_loss 命令(Gerhard Hintermayer、Tom)
修复并行 make(Peter)
AIX 链接 Tcl 的修复(Andreas Zeugswetter)
允许 PL/Perl 在 Cygwin 下构建(Jason Tishler)
改进 MIPS 编译(Peter、Oliver Elphick)
要求 Autoconf 版本 2.53(Peter)
configure 默认要求 readline 和 zlib(Peter)
允许 Solaris 使用紧密共享内存(ISM)以提升性能(Scott Brunza、P.J. Josh Rovero)
编译时总是启用 syslog,移除 --enable-syslog 选项(Tatsuo)
编译时总是启用多字节,移除 --enable-multibyte 选项(Tatsuo)
编译时总是启用区域设置,移除 --enable-locale 选项(Peter)
修复 Win9x DLL 创建(Magnus Naeslund)
修复 WAL 代码在 Windows、BeOS 上使用 link() 的问题(Jason Tishler)
将 sys/types.h 添加到 c.h,从主文件中移除(Peter、Bruce)
修复 SMP 机器上的 AIX 挂起(Tomoyuki Niijima)
AIX SMP 挂起修复(Tomoyuki Niijima)
修复较新 glibc 库上 1970 年之前日期的处理(Tom)
修复 PowerPC SMP 锁定(Tom)
防止使用 gcc -ffast-math(Peter、Tom)
开发者构建现在要求 Bison >= 1.50
Kerberos 5 支持现在可用 Heimdal 构建(Peter)
在用户指南中添加列出 SQL 特性的附录(Thomas)
改进可加载模块链接以使用 RTLD_NOW(Tom)
新的错误级别 WARNING、INFO、LOG、DEBUG[1-5](Bruce)
新的 src/port 目录存放替代的 libc 函数(Peter、Bruce)
用于模式的新 pg_namespace 系统目录(Tom)
为模式添加 pg_class.relnamespace(Tom)
为模式添加 pg_type.typnamespace(Tom)
为模式添加 pg_proc.pronamespace(Tom)
重构聚合以拥有 pg_proc 项(Tom)
系统关系现在拥有自己的命名空间,不再要求 pg_* 测试(Fernando Nasser)
将 TOAST 索引名从 *_idx 重命名为 *_index(Neil)
为操作符、操作符类添加命名空间(Tom)
为服务器控制文件添加更多检查(Thomas)
新的波兰语 FAQ(Marcin Mazurek)
添加 Posix 信号量支持(Tom)
记录 reindex 的需要(Bruce)
重命名一些内部标识符以简化 Windows 编译(Jan、Katherine Ward)
添加关于计算磁盘空间的文档(Bruce)
从 GUC 移除 KSQO(Bruce)
修复 rtree 中的内存泄漏(Kenneth Been)
为一致性修改一些错误消息(Bruce)
移除未使用的系统表列(Peter)
在适当处使系统列为 NOT NULL(Tom)
清理 sprintf 的使用,改用 snprintf()(Neil、Jukka Holappa)
移除 OPAQUE 并创建特定的子类型(Tom)
数组内部处理的清理(Joe、Tom)
禁止 pg_atoi('')(Bruce)
移除参数 wal_files,因为 WAL 文件现在会被回收(Bruce)
为堆页面添加版本号(Tom)
允许 /contrib/array 中的 inet 数组(Neil)
GiST 修复(Teodor Sigaev、Neil)
升级 /contrib/mysql
添加 /contrib/dbsize,无需 vacuum 即可显示表大小(Peter)
添加 /contrib/intagg,整数聚合例程(mlw)
改进 /contrib/oid2name(Neil、Bruce)
改进 /contrib/tsearch(Oleg、Teodor Sigaev)
/contrib/rserver 的清理(Alexey V. Borzov)
更新 /contrib/oracle 转换工具(Gilles Darold)
更新 /contrib/dblink(Joe)
改进 /contrib/vacuumlo 支持的选项(Mario Weilguni)
/contrib/intarray 的改进(Oleg、Teodor Sigaev、Andrey Oktyabrski)
添加 /contrib/reindexdb 工具(Shaun Thomas)
为 /contrib/isbn_issn 添加索引(Dan Weston)
添加 /contrib/dbmirror(Steven Singer)
改进 /contrib/pgbench(Neil)
添加 /contrib/tablefunc 表函数示例(Joe)
添加 /contrib/ltree 树结构数据类型(Teodor Sigaev、Oleg Bartunov)
将 /contrib/pg_controldata、pg_resetxlog 移入主树(Bruce)
/contrib/cube 的修复(Bruno Wolff)
改进 /contrib/fulltextindex(Christopher)
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。