企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 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 文档。 ```