发布日期: 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 的文档。