Comando CREATE … CLONE: clonagem de bancos de dados e esquemas que contêm tabelas híbridas (pendente)¶
Atenção
Essa mudança de comportamento está no pacote 2024_08.
Para saber o status atual do pacote, consulte Histórico do pacote.
Como as tabelas híbridas têm suporte limitado para clonagem, observe o seguinte comportamento quando você tentar clonar um banco de dados ou um esquema que contenha tabelas híbridas:
- Antes da mudança:
Em geral, os comandos CREATE DATABASE … CLONE e CREATE SCHEMA … CLONE ignoram silenciosamente as tabelas híbridas se houver alguma no banco de dados ou esquema especificado.
Os comandos CREATE DATABASE … CLONE clonam tabelas híbridas se nenhum parâmetro de Time Travel for especificado no comando ou se um valor AT TIMESTAMP for especificado.
Por exemplo, os comandos a seguir são bem-sucedidos, mas ignoram as tabelas híbridas:
CREATE SCHEMA dst CLONE src; CREATE DATABASE dst CLONE src BEFORE (STATEMENT => '01b7676a-0002-d908-0000-a99500f6e00e');
O comando a seguir é bem-sucedido e inclui tabelas híbridas no banco de dados clonado:
CREATE DATABASE dst CLONE src;
- Após a mudança:
Os comandos CREATE SCHEMA … CLONE retornam um erro se existirem tabelas híbridas no esquema especificado. Por exemplo, o comando a seguir falha:
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.
O erro solicita que você execute o comando usando o parâmetro IGNORE HYBRID TABLES. Ao usar esse parâmetro, o comando criará o esquema clonado, mas ignorará todas as tabelas híbridas. Por exemplo:
CREATE SCHEMA dst CLONE src IGNORE HYBRID TABLES;
O comportamento dos comandos CREATE DATABASE … CLONE que não especificam os parâmetros do Time Travel não é alterado. Por exemplo, o comando a seguir é bem-sucedido e inclui tabelas híbridas no banco de dados clonado:
CREATE DATABASE dst CLONE src;
Comandos CREATE DATABASE … CLONE que usam Time Travel e especificam o tempo com o parâmetro STATEMENT retornam um erro se houver alguma tabela híbrida no banco de dados especificado. Por exemplo, o comando a seguir falha:
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.
O erro solicita que você execute o comando usando o parâmetro IGNORE HYBRID TABLES. Ao usar esse parâmetro, o comando criará o banco de dados clonado, mas ignorará todas as tabelas híbridas. Por exemplo:
CREATE DATABASE dst CLONE src BEFORE (STATEMENT => '01b7676a-0002-d908-0000-a99500f6e00e') IGNORE HYBRID TABLES;
Outros comandos CREATE DATABASE … CLONE que especificam parâmetros de Time Travel e não usam AT TIMESTAMP em um banco de dados de destino que contém tabelas híbridas retornam um erro ou ignoram silenciosamente as tabelas híbridas:
Se o pacote estiver ativado (explicitamente ou por padrão), esses comandos CREATE DATABASE … CLONE retornam um erro.
Se o pacote estiver explicitamente desativado, esses comandos CREATE DATABASE … CLONE ignoram silenciosamente as tabelas híbridas.
Para obter mais informações, consulte Clone bancos de dados que contenham tabelas híbridas.
Ref.: 1792