PostgreSQL 9.6.0 手册 | |||
---|---|---|---|
上一页 | 上一级 | 附录 E. 版本说明 | 下一页 |
E.273. 版本 7.3
发布日期: 2002-11-27
E.273.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.273.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.273.3. 修改列表
E.273.3.1. 服务器操作
-
添加pg_locks视图以显示锁(Neil)
-
为密码协商内存分配修复安全性(Neil)
-
删除对版本 0 FE/BE 协议的支持(PostgreSQL 6.2和之前的版本)(Tom)
-
为超级用户保留最后几个后端槽位,参数superuser_reserved_connections控制这个(Nigel J. Andrews)
E.273.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.273.3.3. 权限
-
在函数和过程语言上添加权限(Peter)
-
添加OWNER到CREATE DATABASE,这样超级用户可以代表非特权用户创建数据库(Gavin Sherry, Tom)
-
添加新对象权限位EXECUTE 和 USAGE (Tom)
-
添加SET SESSION AUTHORIZATION DEFAULT 和 RESET SESSION AUTHORIZATION (Tom)
-
允许用函数所有者的权限执行函数(Peter)
E.273.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.273.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.273.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.273.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.273.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.273.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.273.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.273.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.273.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.273.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.273.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.273.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.273.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)