|
| 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