fix(dameng): export bit values as numeric literals
This commit is contained in:
parent
36d8fabc8f
commit
96b5a71fb3
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -1038,7 +1038,7 @@ pub fn escape_value_typed(val: &serde_json::Value, db_type: &DatabaseType, colum
|
|||
}
|
||||
}
|
||||
}
|
||||
DatabaseType::SqlServer => {
|
||||
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(
|
||||
|
|
|
|||
Loading…
Reference in New Issue