@@ -30,14 +30,16 @@ use crate::Result;
3030pub struct DataFileWriterBuilder < B : FileWriterBuilder > {
3131 inner : B ,
3232 partition_value : Option < Struct > ,
33+ partition_spec_id : i32 ,
3334}
3435
3536impl < B : FileWriterBuilder > DataFileWriterBuilder < B > {
3637 /// Create a new `DataFileWriterBuilder` using a `FileWriterBuilder`.
37- pub fn new ( inner : B , partition_value : Option < Struct > ) -> Self {
38+ pub fn new ( inner : B , partition_value : Option < Struct > , partition_spec_id : i32 ) -> Self {
3839 Self {
3940 inner,
4041 partition_value,
42+ partition_spec_id,
4143 }
4244 }
4345}
@@ -50,6 +52,7 @@ impl<B: FileWriterBuilder> IcebergWriterBuilder for DataFileWriterBuilder<B> {
5052 Ok ( DataFileWriter {
5153 inner_writer : Some ( self . inner . clone ( ) . build ( ) . await ?) ,
5254 partition_value : self . partition_value . unwrap_or ( Struct :: empty ( ) ) ,
55+ partition_spec_id : self . partition_spec_id ,
5356 } )
5457 }
5558}
@@ -59,6 +62,7 @@ impl<B: FileWriterBuilder> IcebergWriterBuilder for DataFileWriterBuilder<B> {
5962pub struct DataFileWriter < B : FileWriterBuilder > {
6063 inner_writer : Option < B :: R > ,
6164 partition_value : Struct ,
65+ partition_spec_id : i32 ,
6266}
6367
6468#[ async_trait:: async_trait]
@@ -76,6 +80,7 @@ impl<B: FileWriterBuilder> IcebergWriter for DataFileWriter<B> {
7680 . map ( |mut res| {
7781 res. content ( DataContentType :: Data ) ;
7882 res. partition ( self . partition_value . clone ( ) ) ;
83+ res. partition_spec_id ( self . partition_spec_id ) ;
7984 res. build ( ) . expect ( "Guaranteed to be valid" )
8085 } )
8186 . collect_vec ( ) )
@@ -146,7 +151,10 @@ mod test {
146151 file_name_gen,
147152 ) ;
148153
149- let mut data_file_writer = DataFileWriterBuilder :: new ( pw, None ) . build ( ) . await . unwrap ( ) ;
154+ let mut data_file_writer = DataFileWriterBuilder :: new ( pw, None , 0 )
155+ . build ( )
156+ . await
157+ . unwrap ( ) ;
150158
151159 let arrow_schema = arrow_schema:: Schema :: new ( vec ! [
152160 Field :: new( "foo" , DataType :: Int32 , false ) ,
@@ -215,7 +223,7 @@ mod test {
215223 ) ;
216224
217225 let mut data_file_writer =
218- DataFileWriterBuilder :: new ( parquet_writer_builder, Some ( partition_value. clone ( ) ) )
226+ DataFileWriterBuilder :: new ( parquet_writer_builder, Some ( partition_value. clone ( ) ) , 0 )
219227 . build ( )
220228 . await ?;
221229
0 commit comments