fix(duckdb): support table rename

This commit is contained in:
onenewcode authored and GitHub committed 2026-08-12 12:36:14 +08:00
1 parent e9e0d04a2c
commit e9538ee1dd
2 files changed
+30 -3

No files matched your search

+29 -2
View File
@@ -685,7 +685,11 @@ pub fn supports_object_rename(database_type: Option<DatabaseType>, object_type:
}
if matches!(
database_type,
DatabaseType::Sqlite | DatabaseType::Rqlite | DatabaseType::Turso | DatabaseType::CloudflareD1
DatabaseType::Sqlite
| DatabaseType::Rqlite
| DatabaseType::Turso
| DatabaseType::CloudflareD1
| DatabaseType::DuckDb
) {
return object_type == DatabaseObjectType::Table;
}
@@ -729,7 +733,13 @@ pub fn build_rename_object_sql(options: RenameObjectSqlOptions) -> Result<String
if matches!(
database_type,
Some(DatabaseType::Sqlite | DatabaseType::Rqlite | DatabaseType::Turso | DatabaseType::CloudflareD1)
Some(
DatabaseType::Sqlite
| DatabaseType::Rqlite
| DatabaseType::Turso
| DatabaseType::CloudflareD1
| DatabaseType::DuckDb
)
) {
return Ok(format!(
"ALTER TABLE {} RENAME TO {};",
@@ -1866,6 +1876,23 @@ mod tests {
}
}
#[test]
fn builds_duckdb_table_rename_sql() {
assert!(supports_object_rename(Some(DatabaseType::DuckDb), DatabaseObjectType::Table));
assert!(!supports_object_rename(Some(DatabaseType::DuckDb), DatabaseObjectType::View));
assert_eq!(
build_rename_object_sql(RenameObjectSqlOptions {
database_type: Some(DatabaseType::DuckDb),
object_type: DatabaseObjectType::Table,
schema: Some("main".to_string()),
old_name: "users".to_string(),
new_name: "app users".to_string(),
})
.unwrap(),
"ALTER TABLE \"main\".\"users\" RENAME TO \"app users\";"
);
}
#[test]
fn builds_postgres_table_and_view_rename_sql() {
assert_eq!(