选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

E.234. 版本 1.01 #

发行日期

1996-02-23

E.234.1. 从版本 1.0 迁移到版本 1.01

以下说明是为了帮助希望把数据库从 Postgres95 1.0 迁移到 Postgres95 1.01 的用户。

如果你全新开始使用 Postgres95 1.01 而不需要迁移旧数据库,则无需执行任何操作。

为了在用 Postgres95 1.0 版本创建的数据库上运行 Postgres95 1.01 版本,需要以下步骤:

  1. src/Makefile.globalNAMEDATALEN 的定义改为 16,把 OIDNAMELEN 的定义改为 20

  2. 决定是否要使用基于主机的认证。

    1. 如果要用,你必须在顶级数据目录(通常是 $PGDATA 的值)中创建名为 pg_hba 的文件。src/libpq/pg_hba 给出了示例语法。

    2. 如果不想使用基于主机的认证,可以注释掉 这一行:

      HBA = 1
      

      (位于 src/Makefile.global

      注意,基于主机的认证默认开启,如果你不执行上述 A 或 B 步骤,默认的 pg_hba 文件将拒绝所有到 Postgres 的连接,因此请执行上面的 A 或 B,或删除 pg_hba 文件。

  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.01 服务器运行你自己的 1.0 数据库,并应用随附保存在 1.0_to_1.01.sql 文件中的查询。这可以通过 psql 轻松完成。如果你的 1.0 数据库名为 testdb

    % 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.234.2. 变更

不兼容变更:
* 只要用户按照 MIGRATION_from_1.0_to_1.01 文件中概述的步骤操作,1.01 与 1.0 数据库向后兼容。
  如果未采取这些步骤,1.01 与 1.0 数据库不兼容。

增强:
* 为 libpq 添加 PQdisplayTuples() 并更改 monitor 和 psql 使用它
* 新增 NeXT 移植(需要 SysVIPC 实现)
* 新增 CAST .. AS 语法
* 为 libpq 添加 PQtrace()/PQuntrace()
* 新增为表字段设置默认值的能力
* 新增了出色的 QNX 移植
* 新增了许多新的内置函数
* 在 tclsh 中支持字符串数组

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。