|
| 1 | +use std::collections::HashMap; |
1 | 2 | use std::sync::{Arc, OnceLock}; |
2 | 3 |
|
3 | 4 | use datafusion::arrow::array::{ |
@@ -158,14 +159,22 @@ fn union_fields() -> UnionFields { |
158 | 159 | static FIELDS: OnceLock<UnionFields> = OnceLock::new(); |
159 | 160 | FIELDS |
160 | 161 | .get_or_init(|| { |
| 162 | + let json_metadata: HashMap<String, String> = |
| 163 | + HashMap::from_iter(vec![("is_json".to_string(), "true".to_string())]); |
161 | 164 | UnionFields::from_iter([ |
162 | 165 | (TYPE_ID_NULL, Arc::new(Field::new("null", DataType::Null, true))), |
163 | 166 | (TYPE_ID_BOOL, Arc::new(Field::new("bool", DataType::Boolean, false))), |
164 | 167 | (TYPE_ID_INT, Arc::new(Field::new("int", DataType::Int64, false))), |
165 | 168 | (TYPE_ID_FLOAT, Arc::new(Field::new("float", DataType::Float64, false))), |
166 | 169 | (TYPE_ID_STR, Arc::new(Field::new("str", DataType::Utf8, false))), |
167 | | - (TYPE_ID_ARRAY, Arc::new(Field::new("array", DataType::Utf8, false))), |
168 | | - (TYPE_ID_OBJECT, Arc::new(Field::new("object", DataType::Utf8, false))), |
| 170 | + ( |
| 171 | + TYPE_ID_ARRAY, |
| 172 | + Arc::new(Field::new("array", DataType::Utf8, false).with_metadata(json_metadata.clone())), |
| 173 | + ), |
| 174 | + ( |
| 175 | + TYPE_ID_OBJECT, |
| 176 | + Arc::new(Field::new("object", DataType::Utf8, false).with_metadata(json_metadata.clone())), |
| 177 | + ), |
169 | 178 | ]) |
170 | 179 | }) |
171 | 180 | .clone() |
|
0 commit comments