企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.205\. 版本 7.3 > **发布日期:** 2002-11-27 ## E.205.1\. 概述 主要的变化有: 模式 模式允许用户在独立的命名空间中创建对象,所以两个人或应用可以有相同名字的表。 还有一个为共享表提供的公共模式。表/索引的创建可以通过在公共模式上删除权限来限制。 删除字段 PostgreSQL现在支持`ALTER TABLE ... DROP COLUMN`功能。 表函数 返回多个行和/或多个列的函数比以前更好用了。你可以在`SELECT` `FROM`子句中调用这样的一个"表函数", 把它的输出当做一个表。还有PL/pgSQL函数现在可以返回集合了。 预备查询 PostgreSQL现在支持预备查询,以提升性能。 依赖追踪 PostgreSQL现在记录对象依赖关系,允许了在许多方面的改进。 `DROP`语句现在接受`CASCADE` 或 `RESTRICT` 来控制是否删除依赖对象。 权限 函数和过程语言现在有权限了,并且函数可以定义为用它们的创建者的权限运行。 国际化 现在总是启用多字节和本地支持。 日志 各种日志选项都增强了。 接口 大量的接口已经移动到了[http://gborg.postgresql.org](http://gborg.postgresql.org), 在这里它们可以独立的开发和发布。 函数/标识符 缺省的,函数现在可以接受多达32个参数,标识符可以多达63个字节长度。 还有,`OPAQUE`现在已经废弃了:特定的"pseudo-datatypes" 在函数参数和结果类型中表示`OPAQUE`之前的含义。 ## E.205.2\. 迁移到版本 7.3 那些想要从任何先前的版本中迁移数据的需要使用pg_dump的转储/恢复。 如果你的应用检索系统表,那么需要做额外的改变,由于7.3中模式的引入;要获取更多信息, 请参阅[http://developer.postgresql.org/~momjian/upgrade_tips_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.205.3\. 修改列表 ### E.205.3.1\. 服务器操作 * 添加pg_locks视图以显示锁(Neil) * 为密码协商内存分配修复安全性(Neil) * 删除对版本 0 FE/BE 协议的支持(PostgreSQL 6.2和之前的版本)(Tom) * 为超级用户保留最后几个后端槽位,参数superuser_reserved_connections控制这个(Nigel J. Andrews) ### E.205.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.205.3.3\. 权限 * 在函数和过程语言上添加权限(Peter) * 添加OWNER到CREATE DATABASE,这样超级用户可以代表非特权用户创建数据库(Gavin Sherry, Tom) * 添加新对象权限位EXECUTE 和 USAGE (Tom) * 添加SET SESSION AUTHORIZATION DEFAULT 和 RESET SESSION AUTHORIZATION (Tom) * 允许用函数所有者的权限执行函数(Peter) ### E.205.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.205.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.205.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.205.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.205.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.205.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.205.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.205.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.205.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.205.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.205.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.205.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.205.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)