diff --git a/src/config/src/utils/schema.rs b/src/config/src/utils/schema.rs index d6e7beb180..92c49f6b1b 100644 --- a/src/config/src/utils/schema.rs +++ b/src/config/src/utils/schema.rs @@ -163,6 +163,7 @@ fn convert_data_type( | (DataType::Int64, DataType::Utf8) => { fields.insert(key.to_string(), Field::new(key, data_type, true)); } + (DataType::Int64, DataType::Boolean) | (DataType::UInt64, DataType::Boolean) => {} (DataType::UInt64, DataType::Float64) | (DataType::UInt64, DataType::Utf8) => { fields.insert(key.to_string(), Field::new(key, data_type, true)); } diff --git a/src/service/logs/mod.rs b/src/service/logs/mod.rs index 7f56d737b5..0b04d36983 100644 --- a/src/service/logs/mod.rs +++ b/src/service/logs/mod.rs @@ -176,6 +176,13 @@ pub fn cast_to_schema_v1( if val.is_i64() { continue; } + if val.is_boolean() { + value.insert( + field_name_str, + Value::Number(bool_to_serde_json_number(val.as_bool().unwrap())), + ); + continue; + } let val = get_string_value(val); match val.parse::() { Ok(val) => { @@ -188,6 +195,13 @@ pub fn cast_to_schema_v1( if val.is_u64() { continue; } + if val.is_boolean() { + value.insert( + field_name_str, + Value::Number(bool_to_serde_json_number(val.as_bool().unwrap())), + ); + continue; + } let val = get_string_value(val); match val.parse::() { Ok(val) => { @@ -200,6 +214,13 @@ pub fn cast_to_schema_v1( if val.is_f64() { continue; } + if val.is_boolean() { + value.insert( + field_name_str, + Value::Number(bool_to_serde_json_number(val.as_bool().unwrap())), + ); + continue; + } let val = get_string_value(val); match val.parse::() { Ok(val) => { @@ -399,6 +420,11 @@ async fn add_record( Ok(()) } +fn bool_to_serde_json_number(value: bool) -> serde_json::Number { + let num = value as i64; + serde_json::Number::from(num) +} + struct StreamMeta<'a> { org_id: String, stream_name: String,