From 96b5a71fb37b0eb97d84375ebd7e522847521ea3 Mon Sep 17 00:00:00 2001 From: zipg Date: Thu, 16 Jul 2026 15:21:44 +0800 Subject: [PATCH] fix(dameng): export bit values as numeric literals --- crates/dbx-core/src/database_export.rs | 24 ++++++++++++++++++++++++ crates/dbx-core/src/transfer.rs | 21 ++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/crates/dbx-core/src/database_export.rs b/crates/dbx-core/src/database_export.rs index 2e2151d43..3c31ed0cb 100644 --- a/crates/dbx-core/src/database_export.rs +++ b/crates/dbx-core/src/database_export.rs @@ -171,6 +171,9 @@ fn format_export_sql_literal_for_database(value: &Value, database_type: Option { + DatabaseType::SqlServer | DatabaseType::Dameng => { if *b { "1".to_string() } else { @@ -6144,6 +6144,25 @@ mod tests { assert_eq!(sql, "INSERT INTO [dbo].[flags] ([enabled], [deleted]) VALUES\n(1, 0)"); } + #[test] + fn dameng_insert_formats_bit_booleans_as_numeric_literals() { + let sql = generate_insert_typed( + &[String::from("enabled"), String::from("deleted"), String::from("optional")], + &[Some(String::from("BIT")), Some(String::from("bit")), Some(String::from("BIT"))], + &[vec![json!(true), json!(false), serde_json::Value::Null]], + "flags", + "DBX_TEST", + &DatabaseType::Dameng, + ); + + assert_eq!( + sql, + "INSERT INTO \"DBX_TEST\".\"flags\" (\"enabled\", \"deleted\", \"optional\") VALUES\n(1, 0, NULL)" + ); + assert!(!sql.contains("TRUE")); + assert!(!sql.contains("FALSE")); + } + #[test] fn sqlserver_upsert_formats_bit_booleans_as_numeric_literals() { let sql = generate_upsert_typed(