版本 7.3

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 E. 版本说明 | 下一页

# E.241. 版本 7.3

> 发布日期: 2002-11-27

## E.241.1. 概述

主要的变化有：

模式

  模式允许用户在独立的命名空间中创建对象，所以两个人或应用可以有相同名字的表。 还有一个为共享表提供的公共模式。表/索引的创建可以通过在公共模式上删除权限来限制。

删除字段

  PostgreSQL现在支持`ALTER TABLE ... DROP COLUMN`功能。

表函数

  返回多个行和/或多个列的函数比以前更好用了。你可以在`SELECT` `FROM`子句中调用这样的一个"表函数"， 把它的输出当做一个表。还有PL/pgSQL函数现在可以返回集合了。

预备查询

  PostgreSQL现在支持预备查询，以提升性能。

依赖追踪

  PostgreSQL现在记录对象依赖关系，允许了在许多方面的改进。 `DROP`语句现在接受`CASCADE` 或 `RESTRICT` 来控制是否删除依赖对象。

权限

  函数和过程语言现在有权限了，并且函数可以定义为用它们的创建者的权限运行。

国际化

  现在总是启用多字节和本地支持。

日志

  各种日志选项都增强了。

接口

  大量的接口已经移动到了http://gborg.postgresql.org， 在这里它们可以独立的开发和发布。

函数/标识符

  缺省的，函数现在可以接受多达32个参数，标识符可以多达63个字节长度。 还有，`OPAQUE`现在已经废弃了：特定的"pseudo-datatypes" 在函数参数和结果类型中表示`OPAQUE`之前的含义。

## E.241.2. 迁移到版本 7.3

那些想要从任何先前的版本中迁移数据的需要使用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。

## E.241.3. 修改列表

### E.241.3.1. 服务器操作

- 添加pg_locks视图以显示锁(Neil)

- 为密码协商内存分配修复安全性(Neil)

- 删除对版本 0 FE/BE 协议的支持（PostgreSQL 6.2和之前的版本）(Tom)

- 为超级用户保留最后几个后端槽位，参数superuser_reserved_connections控制这个(Nigel J. Andrews)

### E.241.3.2. 性能

- 通过一次调用localtime()改善开始菜单(Tom)

- 为快速启动在平面文件中缓存系统目录信息(Tom)

- 改善索引信息的缓存(Tom)

- 优化器改善(Tom, Fernando Nasser)

- 目录缓存现在存储查找失败(Tom)

- 改善哈希函数(Neil)

- 提高查询标记和网络处理的性能(Peter)

- 为大对象存储提高速度(Mario Weilguni)

- 在第一次查询时标记过期的索引项，节省稍后的heap抓取(Tom)

- 避免过多的NULL位图填充(Manfred Koizar)

- 为Solaris提升性能添加BSD监听的qsort() (Bruce)

- 通过4个字节减少每行开销(Manfred Koizar)

- 修复GEQO优化器bug(Neil Conway)

- 使WITHOUT OID实际上保存每行4个字节(Manfred Koizar)

- 添加default_statistics_target变量以声明ANALYZE buckets (Neil)

- 使用本地缓冲区缓存临时表，这样没有WAL开销(Tom)

- 在大表上提升免费空间映射性能(Stephen Marshall, Tom)

- 提升了WAL写的并发性(Tom)

### E.241.3.3. 权限

- 在函数和过程语言上添加权限(Peter)

- 添加OWNER到CREATE DATABASE，这样超级用户可以代表非特权用户创建数据库(Gavin Sherry, Tom)

- 添加新对象权限位EXECUTE 和 USAGE (Tom)

- 添加SET SESSION AUTHORIZATION DEFAULT 和 RESET SESSION AUTHORIZATION (Tom)

- 允许用函数所有者的权限执行函数(Peter)

### E.241.3.4. 服务器配置

- 现在服务器日志信息标记为LOG，不是DEBUG (Bruce)

- 添加用户字段到pg_hba.conf (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_statistics通过调用pg_stat_reset()重置 (Christopher)

- 添加log_duration 参数 (Bruce)

- 将debug_print_query重命名为log_statement (Bruce)

- 将show_query_stats 重命名为 show_statement_stats (Bruce)

- 添加了参数log_min_error_statement到错误时输出到日志的命令(Gavin)

### E.241.3.5. 查询

- 使游标不敏感，意味着不改变它们的内容(Tom)

- 禁用 LIMIT #,# 语法；现在只支持 LIMIT # OFFSET # (Bruce)

- 增加标识符长度为63(Neil, Bruce)

- UNION修复了合并不同长度的 >= 3 字段(Tom)

- 添加DEFAULT关键字到 INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod)

- 通过使用ALTER COLUMN ... SET DEFAULT允许视图有缺省值(Neil)

- 未能INSERT没有提供所有字段值的字段列表，如：INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod)

- 修复join别名(Tom)

- 修复了FULL OUTER JOINs (Tom)

- 改善无效标识符和位置的报告(Tom, Gavin)

- 修复 OPEN cursor(args) (Tom)

- 允许'ctid'在视图和currtid(viewname)中使用 (Hiroshi)

- 修复CREATE TABLE AS with UNION (Tom)

- SQL99语法改善(Thomas)

- 添加statement_timeout变量到取消查询(Bruce)

- 允许预备查询PREPARE/EXECUTE (Neil)

- 允许FOR UPDATE出现在LIMIT/OFFSET后面(Bruce)

- 添加变量自动提交(Tom, David Van Wie)

### E.241.3.6. 对象操作

- 在 CREATE DATABASE 中使等号可选(Gavin Sherry)

- 使ALTER TABLE OWNER也改变索引的所有者(Neil)

- 新的ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage，压缩(John Gray)

- 添加模式支持， CREATE/DROP SCHEMA (Tom)

- 为临时表创建模式(Tom)

- 为模式搜索添加变量search_path (Tom)

- 添加了ALTER TABLE SET/DROP NOT NULL (Christopher)

- 新建CREATE FUNCTION波动水平(Tom)

- 使规则名只在每个表中唯一(Tom)

- 添加'ON tablename'子句到DROP RULE 和 COMMENT ON RULE (Tom)

- 添加ALTER TRIGGER RENAME (Joe)

- 新加current_schema() 和 current_schemas()查询功能(Tom)

- 允许函数返回多行（表函数）(Joe)

- 为了一致性，使WITH在CREATE DATABASE中可选(Bruce)

- 添加对象依赖追踪(Rod, Tom)

- 添加RESTRICT/CASCADE到DROP命令 (Rod)

- 为非检查约束添加ALTER TABLE DROP (Rod)

- 自动破坏带有SERIAL的表的DROP时顺序(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)

### E.241.3.7. 实用命令

- 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)

- 应用START TRANSACTION， 每个 SQL99 (Neil)

- 当页分裂影响容量删除时修复罕见的索引损坏(Tom)

- 为继承修复ALTER TABLE ... ADD COLUMN(Alvaro Herrera)

### E.241.3.8. 数据类型和函数

- 修复factorial(0)返回1 (Bruce)

- 改善Date/time/timezone (Thomas)

- 修复数组切片提取(Tom)

- 修复extract/date_part为时间戳报告适当的微秒(Tatsuo)

- 允许text_substr() 和 bytea_substr()更有效的读取TOAST值(John Gray)

- 添加域支持(Rod)

- 使WITHOUT TIME ZONE为TIMESTAMP和TIME数据类型的缺省(Thomas)

- 在配置中使用--enable-integer-datetimes允许64位整数交替日期/时间类型存储模式(Thomas)

- 使timezone(timestamptz)返回时间戳而不是一个字符串(Thomas)

- 时间的日期/时间类型中允许小数秒在1BC之前(Thomas)

- 限制时间戳数据类型精度为6个小数位(Thomas)

- 更改时区转换函数timetz()为timezone() (Thomas)

- 添加配置变量数据类型和时区(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)

### E.241.3.9. 国际化

- 添加额外的编码: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya)

- 缺省启用本地支持(Peter)

- 添加语言环境变量(Peter)

- 在PQescapeBytea/PQunescapeBytea中为多字节转义byes >= 0x7f (Tatsuo)

- 添加语言环境意识到规则表达式字符类

- 缺省启用多字节支持(Tatsuo)

- 添加GB18030多字节支持(Bill Huang)

- 添加CREATE/DROP CONVERSION，允许可加载的编码(Tatsuo, Kaori)

- 添加pg_conversion表(Tatsuo)

- 添加SQL99 CONVERT()函数(Tatsuo)

- pg_dumpall, pg_controldata, 和 pg_resetxlog现在国家语言意识(Peter)

- 新的和更新的翻译

### E.241.3.10. 服务器端语言

- 允许递归的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)

### E.241.3.11. psql

- 为了与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)

### E.241.3.12. libpq

- 添加~/.pgpass存储主机/用户密码组合(Alvaro Herrera)

- 添加PQunescapeBytea()函数到libpq (Patrick Welche)

- 修复在非阻塞连接上发送大查询(Bernhard Herzog)

- 修复libpq在Win9X上使用定时器(David Ford)

- 允许libpq通知用不同长度的标识符处理服务器(Tom)

- 添加libpq PQescapeString() 和 PQescapeBytea()到Windows (Bruce)

- 用非阻塞连接修复SSL (Jack Bates)

- 添加libpq连接超时参数(Denis A Ustimenko)

### E.241.3.13. JDBC

- 允许JDBC用JDK 1.4编译(Dave)

- 添加JDBC 3支持(Barry)

- 允许JDBC通过添加?loglevel=X到连接的URL来设置日志级别(Barry)

- 添加Driver.info()信息，输出版本号(Barry)

- 添加可更新的结果集(Raghu Nidagal, Dave)

- 添加对可调用语句的支持(Paul Bethe)

- 添加查询取消能力

- 添加立即刷新(Dave)

- 修复MD5加密处理多字节服务器(Jun Kawai)

- 添加对预备语句的支持(Barry)

### E.241.3.14. 各种接口

- 修复ECPG bug，关于单引号中的八进制数字(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)

- 添加pg_on_connection_loss命令到libpgtcl (Gerhard Hintermayer, Tom)

### E.241.3.15. 源码

- 修复并行进行(Peter)

- AIX修复了连接Tcl (Andreas Zeugswetter)

- 允许PL/Perl在Cygwin下建立(Jason Tishler)

- 改善MIPS编译(Peter, Oliver Elphick)

- 需要Autoconf版本2.53 (Peter)

- 需要在配置中缺省有readline 和 zlib (Peter)

- 为了性能，允许Solaris使用Intimate Shared Memory (ISM) (Scott Brunza, P.J. Josh Rovero)

- 在编译时总是启用系统日志，删除--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)

- 修复AIX挂在SMP机器上(Tomoyuki Niijima)

- AIX SMP 挂修复(Tomoyuki Niijima)

- 修复1970以前的日期在新的glibc库上处理(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_* test (Fernando Nasser)

- 重命名TOAST索引为*_index而不是*_idx (Neil)

- 为操作符、操作符类添加命名空间(Tom)

- 添加额外的检查到服务器控制文件(Thomas)

- 新增Polish FAQ (Marcin Mazurek)

- 添加Posix信号灯支持(Tom)

- 文档需要重建索引(Bruce)

- 重命名一些内部的标识符以简化Windows编译(Jan, Katherine Ward)

- 添加计算磁盘空间的文件(Bruce)

- 从GUC中删除KSQO(Bruce)

- 修复rtree中的内存溢出(Kenneth Been)

- 为一致性修复一些错误消息(Bruce)

- 删除未使用的系统表字段(Peter)

- 在适当的地方使系统字段为NOT NULL (Tom)

- 为了支持snprintf()清除snprintf的使用(Neil, Jukka Holappa)

- 删除OPAQUE创建特定的子类型(Tom)

- 在数组内部处理清理(Joe, Tom)

- 不允许pg_atoi('') (Bruce)

- 删除参数wal_files因为WAL文件现在回收利用了(Bruce)

- 添加版本号到heap页(Tom)

### E.241.3.16. 贡献包

- /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)

上一页 | 起始页 | 下一页
版本 7.3.1 | 上一级 | 版本 7.2.8