版本 1.01

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 E. 版本说明 | 下一页

# E.276. 版本 1.01

> 发布日期: 1996-02-23

## E.276.1. 从版本 1.0 迁移到版本 1.01

下面信息是给那些希望将数据库从Postgres95 1.0 向 Postgres95 1.01 迁移的用户的一些有用信息。

如果你是刚刚安装完成 Postgres95 1.01 并且没有需要迁移的旧数据库， 那么你不需要阅读下面部分。

如果要把 Postgres95 版本 1.0 的数据库向 Postgres95 版本 1.01 迁移，需要进行下面的步骤：

1. 把文件 `src/Makefile.global` 里的变量 `NAMEDATALEN` 定义为16， `OIDNAMELEN` 定义为 20。

2. 决定自己是否需要以主机为基础的认证（HBA）。

   1. 如果你需要这么做，你必须在顶级数据目录（通常是你的环境变量 `$PGDATA` 的值） 里创建一个名为 `pg_hba` 的文件。 我们在例子语法里用 `src/libpq/pg_hba` 代表。

   2. 如果你不需要这样以主机为基础的认证，你可以把 `src/Makefile.global` 里的下面这行注释掉

          HBA = 1

      要注意缺省时以主机为基础的认证（HBA）是打开的， 而且如果你不做上面所说的步骤A或B中的其中一步，其他主机上（out-of-the-box） 的1.01版本将不允许你与1.0的数据库联接。

3. 编译和安装 1.01，但是不要执行 `initdb` 步骤。

4. 在进行下一步之前，终止 1.0 的 postmaster 进程，然后备份你现有的 `$PGDATA` 目录。

5. 把你的 `PGDATA` 环境变量设置为你的 1.0 的库（的位置）， 但是把路径设置成 1.01 的可执行文件路径。

6. 把文件 ``$PGDATA`/PG_VERSION` 从 5.0 修改成 5.1

7. 运行新的 1.01 的 postmaster。

8. 把 1.01 的新的内建的函数和操作符追加到 1.0 的数据库中去。 这一步是通过在你的 1.0 的库上运行 1.01 的服务器，并且运行附加的查询并保存到文件 1.0_to_1.01.sql 中。 如果你的 1.0 数据库名为`testdb`，那么我们可以通过`psql` 很容易完整升级工作：

       % psql testdb -f 1.0_to_1.01.sql

   然后执行下面命令（可以从下面剪切和拷贝）：

       -- add builtin functions that are new to 1.01

       create function int4eqoid (int4, oid) returns bool as 'foo'
       language 'internal';
       create function oideqint4 (oid, int4) returns bool as 'foo'
       language 'internal';
       create function char2icregexeq (char2, text) returns bool as 'foo'
       language 'internal';
       create function char2icregexne (char2, text) returns bool as 'foo'
       language 'internal';
       create function char4icregexeq (char4, text) returns bool as 'foo'
       language 'internal';
       create function char4icregexne (char4, text) returns bool as 'foo'
       language 'internal';
       create function char8icregexeq (char8, text) returns bool as 'foo'
       language 'internal';
       create function char8icregexne (char8, text) returns bool as 'foo'
       language 'internal';
       create function char16icregexeq (char16, text) returns bool as 'foo'
       language 'internal';
       create function char16icregexne (char16, text) returns bool as 'foo'
       language 'internal';
       create function texticregexeq (text, text) returns bool as 'foo'
       language 'internal';
       create function texticregexne (text, text) returns bool as 'foo'
       language 'internal';

       -- add builtin functions that are new to 1.01

       create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
       create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
       create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
       create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
       create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
       create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
       create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
       create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
       create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
       create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
       create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
       create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);

## E.276.2. 修改列表

    不兼容性：
     * 1.01 向后兼容 1.0 数据库，提供了用户指导步骤，在 MIGRATION_from_1.0_to_1.01 文件中概述。
       如果没有采取这些步骤，1.01 是不与 1.0 数据库兼容的。

    增强：
     * 添加了 PQdisplayTuples() 到 libpq 并且为了使用它更改了监控器和 psql
     * 添加了 NeXT 端口 (需要 SysVIPC 实现)
     * 添加了 CAST .. AS ... 语法
     * 添加了 ASC 和 DESC 关键字
     * 添加了 'internal' 作为 CREATE FUNCTION 内部函数的可能语言，CREATE FUNCTION 内部函数是 C 函数，
       已经静态的连接到了 Postgres 后端。
     * 为系统标识符添加了一个新的类型 "name" （表名，属性名等）。这个替换老的 char16 类型。
       通过在 src/Makefile.global 中的 NAMEDATALEN #define 设置。
     * 一个可读的参考手册描述查询语言。
     * 添加了基于主机的访问控制。一个配置文件($PGDATA/pg_hba)用来保存配置数据。
       如果基于主机的访问控制不再需要了，注释掉 src/Makefile.global 中的 HBA=1。
     * 更改正则表达式处理为统一的使用 Henry Spencer 的正则表达式代码，不管是什么平台。
       正则表达式代码包含在发布中。
     * 为大小写不敏感的正则表达式添加了函数和操作符。操作符是 ~* 和 !~*。
     * pg_dump 为了更好的性能使用 COPY 而不是 SELECT 循环

    Bug 修复：
     * 修复了一个优化器 bug ，当函数调用在 WHERE 子句中用于比较时会引起内核转储
     * 更改所有 getuid 的使用为 geteuid ，这样就使用了有效的 uid
     * psql 在使用 -C 发生错误时返回非零的状态
     * 应用了公共补丁 1-14

上一页 | 起始页 | 下一页
版本 1.02 | 上一级 | 版本 1.0