@@ -54,6 +54,8 @@ pub struct ParquetWriterBuilder<T: LocationGenerator, F: FileNameGenerator> {
5454 file_io : FileIO ,
5555 location_generator : T ,
5656 file_name_generator : F ,
57+
58+ delete_if_empty : bool ,
5759}
5860
5961impl < T : LocationGenerator , F : FileNameGenerator > ParquetWriterBuilder < T , F > {
@@ -65,13 +67,15 @@ impl<T: LocationGenerator, F: FileNameGenerator> ParquetWriterBuilder<T, F> {
6567 file_io : FileIO ,
6668 location_generator : T ,
6769 file_name_generator : F ,
70+ delete_if_empty : bool ,
6871 ) -> Self {
6972 Self {
7073 props,
7174 schema,
7275 file_io,
7376 location_generator,
7477 file_name_generator,
78+ delete_if_empty,
7579 }
7680 }
7781}
@@ -101,6 +105,7 @@ impl<T: LocationGenerator, F: FileNameGenerator> FileWriterBuilder for ParquetWr
101105 written_size,
102106 current_row_num : 0 ,
103107 out_file,
108+ delete_if_empty : self . delete_if_empty ,
104109 } )
105110 }
106111}
@@ -216,6 +221,7 @@ pub struct ParquetWriter {
216221 writer : AsyncArrowWriter < AsyncFileWriter < TrackWriter > > ,
217222 written_size : Arc < AtomicI64 > ,
218223 current_row_num : usize ,
224+ delete_if_empty : bool ,
219225}
220226
221227/// Used to aggregate min and max value of each column.
@@ -411,6 +417,11 @@ impl FileWriter for ParquetWriter {
411417 Error :: new ( ErrorKind :: Unexpected , "Failed to close parquet writer." ) . with_source ( err)
412418 } ) ?;
413419
420+ if self . delete_if_empty && self . current_row_num == 0 {
421+ self . out_file . delete ( ) . await ?;
422+ return Ok ( vec ! [ ] ) ;
423+ }
424+
414425 let written_size = self . written_size . load ( std:: sync:: atomic:: Ordering :: Relaxed ) ;
415426
416427 Ok ( vec ! [ Self :: to_data_file_builder(
@@ -671,6 +682,7 @@ mod tests {
671682 file_io. clone ( ) ,
672683 location_gen,
673684 file_name_gen,
685+ false ,
674686 )
675687 . build ( )
676688 . await ?;
@@ -867,6 +879,7 @@ mod tests {
867879 file_io. clone ( ) ,
868880 location_gen,
869881 file_name_gen,
882+ false ,
870883 )
871884 . build ( )
872885 . await ?;
@@ -1057,6 +1070,7 @@ mod tests {
10571070 file_io. clone ( ) ,
10581071 loccation_gen,
10591072 file_name_gen,
1073+ false ,
10601074 )
10611075 . build ( )
10621076 . await ?;
0 commit comments