CREATE ... CLONE 命令:克隆包含混合表的数据库和架构¶
由于 混合表 对 克隆 的支持有限,因此在尝试克隆包含混合表的数据库或架构时,请注意以下行为:
- 变更前:
一般情况下,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');
以下命令成功执行,并在克隆数据库中包含混合表:
CREATE DATABASE dst CLONE src;
- 变更后:
CREATE SCHEMA ... 如果指定的架构中存在任何混合表,CLONE 命令将返回错误。例如,以下命令会失败:
CREATE SCHEMA dst CLONE src;
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;
CREATEDATABASE ...CLONE 命令的行为未指定 Time Travel 参数的命令*不会更改*。例如,以下命令成功执行,并在克隆的数据库中包含混合表:
CREATE DATABASE dst CLONE src;
CREATE DATABASE ...CLONE 命令如果使用 Time Travel 并使用 STATEMENT 参数指定时间,则在指定数据库中存在任何混合表时,它会返回错误。例如,以下命令会失败:
CREATE DATABASE dst CLONE src BEFORE (STATEMENT => '01b7676a-0002-d908-0000-a99500f6e00e');
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;
其他 CREATE DATABASE ...CLONE 命令如果指定 Time Travel 参数,并且没有为包含混合表的目标数据库使用 AT TIMESTAMP,则要么返回错误,要么自动跳过混合表:
如果(显式或默认)启用了捆绑包,这些 CREATE DATABASE ...CLONE 命令将返回错误。
如果显式禁用捆绑包,这些 CREATE DATABASE ...CLONE 命令会自动跳过混合表。
有关更多信息,请参阅 克隆包含混合表的数据库。
参考:1792