E.88. 版本 1.01 #
发行日期
1996-02-23
E.88.1. 从版本 1.0 迁移到版本 1.01
以下说明是为了帮助希望把数据库从 Postgres95 1.0 迁移到 Postgres95 1.01 的用户。
如果你全新开始使用 Postgres95 1.01 而不需要迁移旧数据库,则无需再往下读。
为了在用 Postgres95 1.0 版本创建的数据库上运行 Postgres95 1.01 版本,需要以下步骤:
把
src/Makefile.global中NAMEDATALEN的定义改为 16,把OIDNAMELEN的定义改为 20。决定是否要使用基于主机的认证。
如果要用,你必须在顶级数据目录(通常是
$PGDATA的值)中创建名为pg_hba的文件。src/libpq/pg_hba给出了示例语法。如果不想使用基于主机的认证,可以注释掉这一行:
HBA = 1
(位于
src/Makefile.global)注意,基于主机的认证默认开启,如果你不执行上述 A 或 B 步骤,开箱即用的 1.01 将不允许你连接到 1.0 数据库。
编译并安装 1.01,但不要执行
initdb步骤。在做任何其他事情之前,终止你的 1.0 postmaster,并备份现有的
$PGDATA目录。把
PGDATA环境变量指向你的 1.0 数据库,但把路径设置为使用 1.01 二进制文件。把文件
从 5.0 改为 5.1$PGDATA/PG_VERSION启动新的 1.01 postmaster
把 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.88.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 中支持字符串数组