发布日期: 1995-07-21
不兼容的变化: * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS (due to system catalog changes and indexing structure changes). * double-quote (") is deprecated as a quoting character for string literals; you need to convert them to single quotes ('). * name of aggregates (eg. int4sum) are renamed in accordance with the SQL standard (eg. sum). * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax. * float literals (eg. 3.14) are now of type float4 (instead of float8 in previous releases); you might have to do typecasting if you depend on it being of type float8. If you neglect to do the typecasting and you assign a float literal to a field of type float8, you may get incorrect values stored! * LIBPQ has been totally revamped so that frontend applications can connect to multiple backends * the usesysid field in pg_user has been changed from int2 to int4 to allow wider range of Unix user ids. * the netbsd/freebsd/bsd o/s ports have been consolidated into a single BSD44_derived port. (thanks to Alistair Crooks) SQL 标准兼容(下列详细的改变令 postgres95 与 SQL-92 标准更加兼容)∶ * 下面的 SQL 类型现在是内置的了:smallint, int(eger), float, real, char(N), varchar(N), date 和 time。 下面的是现有 postgres 类型的别名: smallint -> int2 integer, int -> int4 float, real -> float4 char(N) 和 varchar(N) 是用截断的 text 类型实现的。另外, char(N) 会填充空白。 * 单引号(')包围字串文本;支持使用''(以及 \')作为在字串中插入单引号的方法 * 使用了 SQL 标准的聚集名字(MAX,MIN,AVG,SUM,COUNT) (还有,聚集现在可以重载了,也就是说,你可以定义你自己的接受用户定义类型的 MAX 函数。) * CHANGE ACL removed. GRANT/REVOKE syntax added. - Privileges can be given to a group using the "GROUP" keyword. For example: GRANT SELECT ON foobar TO GROUP my_group; The keyword 'PUBLIC' is also supported to mean all users. Privileges can only be granted or revoked to one user or group at a time. "WITH GRANT OPTION" is not supported. Only class owners can change access control - The default access control is to to grant users readonly access. You must explicitly grant insert/update access to users. To change this, modify the line in src/backend/utils/acl.h that defines ACL_WORLD_DEFAULT 修补: * 不能在聚集函数里使用空表的毛病已经fix掉了。现在, 在空表上运行的聚集将返回聚集的初始状态。因此,在空表上 COUNT 将正确地返回 0。 一个空表地 MAX/MIN 将返回一条为 NULL 的元组。 * 允许在 SQL 界面里使用 \; * LISTEN/NOTIFY 异步通知机制现在可以用了 * 规则动作体里面的 NOTIFY 现在可以用了 * 散列索引可以用了,并且通常来说,访问方法应该运行得更好了。 大索引的创建应该更快。(感谢 Paul Aoki) 其它修改和增强: * 增加了一个 EXPLAIN 语句,用于解析查询执行规划(比如,"EXPLAIN SELECT * FROM EMP" 打印该查询的执行规划。 * WARN 和 NOTICE 消息上不再有时间戳。么打开错误消息的时间戳,把 src/backend/utils/elog.h 里面的下面这行注释掉: /* define ELOG_TIMESTAMPS */ * 在出现权限违反的时候,会给出 "Either no such class or insufficient privilege" 消息。如果没有找到某个表,也会返回这个信息。这样就避免了非特权用户 猜测特权表的存在。 * 做了一些额外的用户不可见的系统表修改。 libpgtcl 修改: * 向 "pg_result" tcl 命令中增加了 -oid 选项。 pg_result -oid 返回最后插入的元组的 oid。如果最后的命令不是 INSERT, 那么 pg_result -oid 返回 ""。 * 大对象接口可以以 pg_lo* tcl 命令的形式获得: pg_lo_open,pg_lo_close,pg_lo_creat,等。 可移植性增强和新的移植: * flex/lex 的问题已经清理干净了。现在你应该能够在任何平台上使用 flex 代替 lex。 我们不再基于你使用的平台假设你使用的是什么词法分析器(lexer)。 * 现在支持 Linux-ELF 移植了。测试了多种配置: 下列配置是一定可以运行的: kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24 所有东西都是 ELF 格式, 新应用: * ipcclean 加入发布之中 通常不需要运行 ipcclean,但是如果你的后端崩苦,留下挂着的共享内存段, 那么 ipcclean 可以为你清理这些东西。 新文档: * 修改了用户手册,增加了 libpq 的文档。