@@ -28,8 +28,8 @@ use arrow::array::{
2828 builder:: {
2929 ArrayBuilder , BinaryBuilder , BinaryDictionaryBuilder , BooleanBuilder , Date32Builder ,
3030 Decimal128Builder , Float32Builder , Float64Builder , Int16Builder , Int32Builder ,
31- Int64Builder , Int8Builder , ListBuilder , MapBuilder , StringBuilder , StringDictionaryBuilder ,
32- StructBuilder , TimestampMicrosecondBuilder ,
31+ Int64Builder , Int8Builder , ListBuilder , MapBuilder , NullBuilder , StringBuilder ,
32+ StringDictionaryBuilder , StructBuilder , TimestampMicrosecondBuilder ,
3333 } ,
3434 types:: Int32Type ,
3535 Array , ArrayRef , RecordBatch , RecordBatchOptions ,
@@ -267,6 +267,10 @@ pub(super) fn append_field(
267267 append_field_to_builder ! ( Date32Builder , |builder: & mut Date32Builder | builder
268268 . append_value( row. get_date( idx) ) ) ;
269269 }
270+ DataType :: Null => {
271+ let field_builder = get_field_builder ! ( struct_builder, NullBuilder , idx) ;
272+ field_builder. append_null ( ) ;
273+ }
270274 DataType :: Timestamp ( TimeUnit :: Microsecond , _) => {
271275 append_field_to_builder ! (
272276 TimestampMicrosecondBuilder ,
@@ -1148,6 +1152,12 @@ fn append_columns(
11481152 . append_value( row. get_date( idx) )
11491153 ) ;
11501154 }
1155+ DataType :: Null => {
1156+ let null_builder = downcast_builder_ref ! ( NullBuilder , builder) ;
1157+ for _ in row_start..row_end {
1158+ null_builder. append_null ( ) ;
1159+ }
1160+ }
11511161 DataType :: Timestamp ( TimeUnit :: Microsecond , _) => {
11521162 append_column_to_builder ! (
11531163 TimestampMicrosecondBuilder ,
@@ -1252,6 +1262,7 @@ fn make_builders(
12521262 }
12531263 }
12541264 DataType :: Date32 => Box :: new ( Date32Builder :: with_capacity ( row_num) ) ,
1265+ DataType :: Null => Box :: new ( NullBuilder :: new ( ) ) ,
12551266 DataType :: Timestamp ( TimeUnit :: Microsecond , _) => {
12561267 Box :: new ( TimestampMicrosecondBuilder :: with_capacity ( row_num) . with_data_type ( dt. clone ( ) ) )
12571268 }
0 commit comments