@@ -71,13 +71,18 @@ impl fmt::Display for DataType {
71
71
Self :: Utf8 => write ! ( f, "Utf8" ) ,
72
72
Self :: LargeUtf8 => write ! ( f, "LargeUtf8" ) ,
73
73
Self :: Utf8View => write ! ( f, "Utf8View" ) ,
74
- Self :: ListView ( field) => write ! ( f, "ListView({field})" ) , // TODO: make more readable
75
- Self :: LargeListView ( field) => write ! ( f, "LargeListView({field})" ) , // TODO: make more readable
76
- Self :: List ( field) | Self :: LargeList ( field) => {
74
+ Self :: List ( field)
75
+ | Self :: LargeList ( field)
76
+ | Self :: ListView ( field)
77
+ | Self :: LargeListView ( field) => {
77
78
let type_name = if matches ! ( self , Self :: List ( _) ) {
78
79
"List"
79
- } else {
80
+ } else if matches ! ( self , Self :: ListView ( _) ) {
81
+ "ListView"
82
+ } else if matches ! ( self , Self :: LargeList ( _) ) {
80
83
"LargeList"
84
+ } else {
85
+ "LargeListView"
81
86
} ;
82
87
83
88
let name = field. name ( ) ;
@@ -196,6 +201,15 @@ mod tests {
196
201
assert_eq ! ( list_data_type_string, expected_string) ;
197
202
}
198
203
204
+ #[ test]
205
+ fn test_display_list_view ( ) {
206
+ let list_view_data_type =
207
+ DataType :: ListView ( Arc :: new ( Field :: new ( "item" , DataType :: Int32 , true ) ) ) ;
208
+ let list_view_data_type_string = list_view_data_type. to_string ( ) ;
209
+ let expected_string = "ListView(nullable Int32)" ;
210
+ assert_eq ! ( list_view_data_type_string, expected_string) ;
211
+ }
212
+
199
213
#[ test]
200
214
fn test_display_list_with_named_field ( ) {
201
215
let list_data_type = DataType :: List ( Arc :: new ( Field :: new ( "foo" , DataType :: UInt64 , false ) ) ) ;
@@ -204,6 +218,15 @@ mod tests {
204
218
assert_eq ! ( list_data_type_string, expected_string) ;
205
219
}
206
220
221
+ #[ test]
222
+ fn test_display_list_view_with_named_field ( ) {
223
+ let list_view_data_type =
224
+ DataType :: ListView ( Arc :: new ( Field :: new ( "bar" , DataType :: UInt64 , false ) ) ) ;
225
+ let list_view_data_type_string = list_view_data_type. to_string ( ) ;
226
+ let expected_string = "ListView(UInt64, field: 'bar')" ;
227
+ assert_eq ! ( list_view_data_type_string, expected_string) ;
228
+ }
229
+
207
230
#[ test]
208
231
fn test_display_nested_list ( ) {
209
232
let nested_data_type = DataType :: List ( Arc :: new ( Field :: new_list_field (
@@ -215,6 +238,17 @@ mod tests {
215
238
assert_eq ! ( nested_data_type_string, nested_expected_string) ;
216
239
}
217
240
241
+ #[ test]
242
+ fn test_display_nested_list_view ( ) {
243
+ let nested_view_data_type = DataType :: ListView ( Arc :: new ( Field :: new_list_field (
244
+ DataType :: ListView ( Arc :: new ( Field :: new_list_field ( DataType :: UInt64 , false ) ) ) ,
245
+ false ,
246
+ ) ) ) ;
247
+ let nested_view_data_type_string = nested_view_data_type. to_string ( ) ;
248
+ let nested_view_expected_string = "ListView(ListView(UInt64))" ;
249
+ assert_eq ! ( nested_view_data_type_string, nested_view_expected_string) ;
250
+ }
251
+
218
252
#[ test]
219
253
fn test_display_list_with_metadata ( ) {
220
254
let mut field = Field :: new_list_field ( DataType :: Int32 , true ) ;
@@ -227,6 +261,17 @@ mod tests {
227
261
assert_eq ! ( list_data_type_string, expected_string) ;
228
262
}
229
263
264
+ #[ test]
265
+ fn test_display_list_view_with_metadata ( ) {
266
+ let mut field = Field :: new_list_field ( DataType :: Int32 , true ) ;
267
+ let metadata = HashMap :: from ( [ ( "foo2" . to_string ( ) , "value2" . to_string ( ) ) ] ) ;
268
+ field. set_metadata ( metadata) ;
269
+ let list_view_data_type = DataType :: ListView ( Arc :: new ( field) ) ;
270
+ let list_view_data_type_string = list_view_data_type. to_string ( ) ;
271
+ let expected_string = "ListView(nullable Int32, metadata: {\" foo2\" : \" value2\" })" ;
272
+ assert_eq ! ( list_view_data_type_string, expected_string) ;
273
+ }
274
+
230
275
#[ test]
231
276
fn test_display_large_list ( ) {
232
277
let large_list_data_type =
@@ -253,6 +298,32 @@ mod tests {
253
298
assert_eq ! ( large_list_metadata_string, expected_metadata_string) ;
254
299
}
255
300
301
+ #[ test]
302
+ fn test_display_large_list_view ( ) {
303
+ let large_list_view_data_type =
304
+ DataType :: LargeListView ( Arc :: new ( Field :: new ( "item" , DataType :: Int32 , true ) ) ) ;
305
+ let large_list_view_data_type_string = large_list_view_data_type. to_string ( ) ;
306
+ let expected_string = "LargeListView(nullable Int32)" ;
307
+ assert_eq ! ( large_list_view_data_type_string, expected_string) ;
308
+
309
+ // Test with named field
310
+ let large_list_view_named =
311
+ DataType :: LargeListView ( Arc :: new ( Field :: new ( "bar" , DataType :: UInt64 , false ) ) ) ;
312
+ let large_list_view_named_string = large_list_view_named. to_string ( ) ;
313
+ let expected_named_string = "LargeListView(UInt64, field: 'bar')" ;
314
+ assert_eq ! ( large_list_view_named_string, expected_named_string) ;
315
+
316
+ // Test with metadata
317
+ let mut field = Field :: new_list_field ( DataType :: Int32 , true ) ;
318
+ let metadata = HashMap :: from ( [ ( "key1" . to_string ( ) , "value1" . to_string ( ) ) ] ) ;
319
+ field. set_metadata ( metadata) ;
320
+ let large_list_view_metadata = DataType :: LargeListView ( Arc :: new ( field) ) ;
321
+ let large_list_view_metadata_string = large_list_view_metadata. to_string ( ) ;
322
+ let expected_metadata_string =
323
+ "LargeListView(nullable Int32, metadata: {\" key1\" : \" value1\" })" ;
324
+ assert_eq ! ( large_list_view_metadata_string, expected_metadata_string) ;
325
+ }
326
+
256
327
#[ test]
257
328
fn test_display_fixed_size_list ( ) {
258
329
let fixed_size_list =
0 commit comments