CREATE ... CLONE 命令:克隆包含混合表的数据库和架构

注意

此行为变更包含在 2024_08 捆绑包中。

有关捆绑包的当前状态,请参阅 捆绑包历史记录

由于 混合表克隆 的支持有限,因此在尝试克隆包含混合表的数据库或架构时,请注意以下行为:

变更前:

一般情况下,CREATE DATABASE ... CLONE 和 CREATE SCHEMA ... CLONE 命令 都会自动跳过混合表(如果指定的数据库或架构中存在混合表)。

CREATE DATABASE ...如果命令中没有指定 Time Travel 参数,或者指定了 AT TIMESTAMP 值,则 CLONE 命令将克隆混合表。

例如,以下命令会成功执行,但会跳过混合表:

CREATE SCHEMA dst CLONE src;
CREATE DATABASE dst CLONE src
  BEFORE (STATEMENT => '01b7676a-0002-d908-0000-a99500f6e00e');
Copy

以下命令成功执行,并在克隆数据库中包含混合表:

CREATE DATABASE dst CLONE src;
Copy
变更后:

CREATE SCHEMA ... 如果指定的架构中存在任何混合表,CLONE 命令将返回错误。例如,以下命令会失败:

CREATE SCHEMA dst CLONE src;
Copy
392105 (0A000): SQL execution error: Cloning a SCHEMA which contains a HYBRID TABLE is unsupported. To perform the clone while skipping HYBRID TABLES, append the `IGNORE HYBRID TABLES` syntax to your DDL.

该错误提示您使用 IGNORE HYBRID TABLES 参数 运行命令。使用此参数时,该命令将创建克隆架构,但会跳过任何混合表。例如:

CREATE SCHEMA dst CLONE src IGNORE HYBRID TABLES;
Copy

CREATEDATABASE ...CLONE 命令的行为未指定 Time Travel 参数的命令*不会更改*。例如,以下命令成功执行,并在克隆的数据库中包含混合表:

CREATE DATABASE dst CLONE src;
Copy

CREATE DATABASE ...CLONE 命令如果使用 Time Travel 并使用 STATEMENT 参数指定时间,则在指定数据库中存在任何混合表时,它会返回错误。例如,以下命令会失败:

CREATE DATABASE dst CLONE src
  BEFORE (STATEMENT => '01b7676a-0002-d908-0000-a99500f6e00e');
Copy
392106 (0A000): SQL execution error: Time Travel cloning a DATABASE which contains a HYBRID TABLE, when specifying the time via a `STATEMENT` is unsupported. To perform the clone while skipping HYBRID TABLES, append the `IGNORE HYBRID TABLES` syntax to your DDL.

该错误提示您使用 IGNORE HYBRID TABLES 参数。使用此参数时,该命令将创建克隆数据库,但会跳过任何混合表。例如:

CREATE DATABASE dst CLONE src
  BEFORE (STATEMENT => '01b7676a-0002-d908-0000-a99500f6e00e')
  IGNORE HYBRID TABLES;
Copy

其他 CREATE DATABASE ...CLONE 命令如果指定 Time Travel 参数,并且没有为包含混合表的目标数据库使用 AT TIMESTAMP,则要么返回错误,要么自动跳过混合表:

  • 如果(显式或默认)启用了捆绑包,这些 CREATE DATABASE ...CLONE 命令将返回错误。

  • 如果显式禁用捆绑包,这些 CREATE DATABASE ...CLONE 命令会自动跳过混合表。

有关更多信息,请参阅 克隆包含混合表的数据库

参考:1792

语言: 中文