E.242. Postgres95 版本 0.03
发布日期: 1995-07-21
E.242.1. 修改列表
不兼容的变化:
* BETA-0.3 与之前版本创建的数据库不兼容(由于系统目录和索引结构的改变)
* 双引号(")作为字符串文本的引用字符已经弃用了;你需要将它们转换为单引号(')。
* 聚集名(如 int4sum)为了与 SQL 标准(如 sum)一致已经重命名了
* CHANGE ACL 语法被 GRANT/REVOKE 语法替代了
* 浮点值(如 3.14)现在是 float4 类型(而不是在以前版本中的 float8);
如果你确定是 float8,你可能必须类型转换。如果你忘记了做类型转换,
并且你分配一个 float 文本到一个 float8 类型的字段,你可能会得到不正确的存储值!
* LIBPQ 已经完全修补了,这样前端应用可以连接到多个后端
* pg_user 中的 usesysid 字段已经从 int2 改变成 int4,以允许 Unix 用户 id 有更广泛的范围。
* netbsd/freebsd/bsd o/s 端口已经合并到了一个单一的 BSD44_derived 端口。(感谢 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) 作为截断的文本类型实施。另外,char(N) 有空白填充。
* 单引号(')用于引用字符串字面值;'' (除了 \')作为在一个字符串中插入一个单引号的含义来支持
* 使用 SQL 标准聚集名(MAX, MIN, AVG, SUM, COUNT)(还有,聚集现在可以重载,也就是,
你可以定义你自己的 MAX 聚集来接受一个用户定义的类型。)
* 删除了 CHANGE ACL。添加了 GRANT/REVOKE 语法。
- 权限可以通过使用 "GROUP" 关键字赋予一个组。
例如:
GRANT SELECT ON foobar TO GROUP my_group;
关键字 'PUBLIC' 也支持意为所有用户。
权限一次只能赋予或撤销一个用户或组。
不支持 "WITH GRANT OPTION"。只有类的所有者可以改变访问控制。
- 缺省的访问控制赋予用户只读访问。你必须明确授予用户 insert/update 访问。
要改变这个,在定义 ACL_WORLD_DEFAULT 中更改行:
src/backend/utils/acl.h
Bug 修复:
* 聚集在空表处不运行的bug已经修复了。现在,聚集在空表上运行时会返回聚集的初始状态。
因此,对一个空表 COUNT 现在可能会返回 0。对一个空表 MAX/MIN 将会返回一个值为 NULL 的行。
* 允许在监控器中使用 \;
* LISTEN/NOTIFY 异步通知机制现在可以工作了
* 规则动作体中的 NOTIFY 现在可以工作了
* 哈希索引现在可以工作了,访问方法一般来说应该执行的更好了。大的 btree 索引的创建应该更快了。
(感谢 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 修改:
* -oid 选项已经添加到了 "pg_result" tcl 命令中。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 文档。