fix(transfer): create Dameng tables without IF NOT EXISTS
This commit is contained in:
parent
99b1b73967
commit
e25f2c762f
|
|
@ -1991,7 +1991,7 @@ pub fn generate_create_table_ddl(
|
|||
};
|
||||
|
||||
let create_prefix = match target_db {
|
||||
DatabaseType::SqlServer => "CREATE TABLE",
|
||||
DatabaseType::SqlServer | DatabaseType::Dameng => "CREATE TABLE",
|
||||
_ => "CREATE TABLE IF NOT EXISTS",
|
||||
};
|
||||
|
||||
|
|
@ -5461,6 +5461,64 @@ mod tests {
|
|||
assert!(ddl.contains("PRIMARY KEY (`id`)"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn dameng_create_table_omits_if_not_exists_without_changing_other_prefixes() {
|
||||
let cols = vec![test_column("id", "int")];
|
||||
|
||||
let dameng = generate_create_table_ddl(
|
||||
&cols,
|
||||
"users",
|
||||
"source",
|
||||
"SYSDBA",
|
||||
&DatabaseType::Dameng,
|
||||
&DatabaseType::Mysql,
|
||||
None,
|
||||
None,
|
||||
);
|
||||
let mysql = generate_create_table_ddl(
|
||||
&cols,
|
||||
"users",
|
||||
"",
|
||||
"app",
|
||||
&DatabaseType::Mysql,
|
||||
&DatabaseType::Mysql,
|
||||
None,
|
||||
None,
|
||||
);
|
||||
let postgres = generate_create_table_ddl(
|
||||
&cols,
|
||||
"users",
|
||||
"",
|
||||
"public",
|
||||
&DatabaseType::Postgres,
|
||||
&DatabaseType::Mysql,
|
||||
None,
|
||||
None,
|
||||
);
|
||||
let sqlserver = generate_create_table_ddl(
|
||||
&cols,
|
||||
"users",
|
||||
"",
|
||||
"dbo",
|
||||
&DatabaseType::SqlServer,
|
||||
&DatabaseType::Mysql,
|
||||
None,
|
||||
None,
|
||||
);
|
||||
|
||||
assert!(dameng.starts_with("CREATE TABLE \"SYSDBA\".\"users\" ("), "ddl: {dameng}");
|
||||
assert!(!dameng.contains("IF NOT EXISTS"), "ddl: {dameng}");
|
||||
assert!(dameng.contains("\"id\" INTEGER"), "ddl: {dameng}");
|
||||
assert!(mysql.starts_with("CREATE TABLE IF NOT EXISTS `users` ("), "ddl: {mysql}");
|
||||
assert!(postgres.starts_with("CREATE TABLE IF NOT EXISTS \"public\".\"users\" ("), "ddl: {postgres}");
|
||||
assert!(
|
||||
sqlserver.starts_with(
|
||||
"IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'users')\nCREATE TABLE [dbo].[users] ("
|
||||
),
|
||||
"ddl: {sqlserver}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn postgres_create_table_preserves_defaults_identity_and_exact_types() {
|
||||
let cols = vec![
|
||||
|
|
|
|||
Loading…
Reference in New Issue