Skip to content

Commit 1620453

Browse files
authored
mark string array/object union fields as json (#76)
1 parent 484e74a commit 1620453

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/common_union.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::collections::HashMap;
12
use std::sync::{Arc, OnceLock};
23

34
use datafusion::arrow::array::{
@@ -158,14 +159,22 @@ fn union_fields() -> UnionFields {
158159
static FIELDS: OnceLock<UnionFields> = OnceLock::new();
159160
FIELDS
160161
.get_or_init(|| {
162+
let json_metadata: HashMap<String, String> =
163+
HashMap::from_iter(vec![("is_json".to_string(), "true".to_string())]);
161164
UnionFields::from_iter([
162165
(TYPE_ID_NULL, Arc::new(Field::new("null", DataType::Null, true))),
163166
(TYPE_ID_BOOL, Arc::new(Field::new("bool", DataType::Boolean, false))),
164167
(TYPE_ID_INT, Arc::new(Field::new("int", DataType::Int64, false))),
165168
(TYPE_ID_FLOAT, Arc::new(Field::new("float", DataType::Float64, false))),
166169
(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+
),
169178
])
170179
})
171180
.clone()

0 commit comments

Comments
 (0)