fix(dameng): export bit values as numeric literals

This commit is contained in:
zipg authored and GitHub committed 2026-07-16 15:21:44 +08:00
1 parent 36d8fabc8f
commit 96b5a71fb3
2 files changed
+44 -1

No files matched your search

+24
View File
@@ -171,6 +171,9 @@ fn format_export_sql_literal_for_database(value: &Value, database_type: Option<D
return number.to_string();
}
if let Some(value) = value.as_bool() {
if database_type == Some(DatabaseType::Dameng) {
return if value { "1" } else { "0" }.to_string();
}
return if value { "TRUE" } else { "FALSE" }.to_string();
}
if let Some(arr) = value.as_array() {
@@ -1843,6 +1846,27 @@ mod tests {
);
}
#[test]
fn dameng_bit_columns_export_as_numeric_literals() {
let statements = build_export_insert_statements(BuildExportInsertStatementsOptions {
database_type: Some(DatabaseType::Dameng),
schema: Some("DBX_TEST".to_string()),
table_name: Some("FLAGS".to_string()),
qualified_table_name: None,
columns: vec!["ENABLED".to_string(), "DELETED".to_string(), "OPTIONAL".to_string()],
column_types: vec![Some("BIT".to_string()), Some("bit".to_string()), Some("BIT".to_string())],
column_extras: Vec::new(),
rows: vec![vec![json!(true), json!(false), Value::Null]],
batch_size: Some(10),
})
.unwrap();
assert_eq!(
statements,
vec!["INSERT INTO \"DBX_TEST\".\"FLAGS\" (\"ENABLED\", \"DELETED\", \"OPTIONAL\") VALUES (1, 0, NULL);"]
);
}
#[test]
fn mysql_export_uses_typed_literals_for_numeric_and_blob_columns() {
let statements = build_export_insert_statements(BuildExportInsertStatementsOptions {