@@ -821,11 +821,8 @@ fn get_column_writers_with_encryptor(
821
821
) -> Result < Vec < ArrowColumnWriter > > {
822
822
let mut writers = Vec :: with_capacity ( arrow. fields . len ( ) ) ;
823
823
let mut leaves = parquet. columns ( ) . iter ( ) ;
824
- let column_factory = ArrowColumnWriterFactory :: new ( ) . with_file_encryptor (
825
- row_group_index,
826
- file_encryptor,
827
- arrow. clone ( ) ,
828
- ) ;
824
+ let column_factory =
825
+ ArrowColumnWriterFactory :: new ( ) . with_file_encryptor ( row_group_index, file_encryptor) ;
829
826
for field in & arrow. fields {
830
827
column_factory. get_arrow_column_writer (
831
828
field. data_type ( ) ,
@@ -843,8 +840,6 @@ struct ArrowColumnWriterFactory {
843
840
row_group_index : usize ,
844
841
#[ cfg( feature = "encryption" ) ]
845
842
file_encryptor : Option < Arc < FileEncryptor > > ,
846
- #[ cfg( feature = "encryption" ) ]
847
- schema_ref : Option < SchemaRef > ,
848
843
}
849
844
850
845
impl ArrowColumnWriterFactory {
@@ -854,8 +849,6 @@ impl ArrowColumnWriterFactory {
854
849
row_group_index : 0 ,
855
850
#[ cfg( feature = "encryption" ) ]
856
851
file_encryptor : None ,
857
- #[ cfg( feature = "encryption" ) ]
858
- schema_ref : None ,
859
852
}
860
853
}
861
854
@@ -864,28 +857,31 @@ impl ArrowColumnWriterFactory {
864
857
mut self ,
865
858
row_group_index : usize ,
866
859
file_encryptor : Option < Arc < FileEncryptor > > ,
867
- schema_ref : SchemaRef ,
868
860
) -> Self {
869
861
self . row_group_index = row_group_index;
870
862
self . file_encryptor = file_encryptor;
871
- self . schema_ref = Some ( schema_ref) ;
872
863
self
873
864
}
874
865
875
- // todo: add column path
876
866
#[ cfg( feature = "encryption" ) ]
877
- fn create_page_writer ( & self , column_index : usize ) -> Box < ArrowPageWriter > {
867
+ fn create_page_writer (
868
+ & self ,
869
+ column_descriptor : & ColumnDescPtr ,
870
+ column_index : usize ,
871
+ ) -> Box < ArrowPageWriter > {
878
872
let page_encryptor = self . file_encryptor . as_ref ( ) . map ( |fe| {
879
- let binding = self . schema_ref . clone ( ) . unwrap ( ) ;
880
- let column_path = binding. field ( column_index) . name ( ) . as_bytes ( ) . to_vec ( ) ;
881
-
873
+ let column_path = column_descriptor. path ( ) . string ( ) ;
882
874
PageEncryptor :: new ( fe. clone ( ) , self . row_group_index , column_index, column_path)
883
875
} ) ;
884
876
Box :: new ( ArrowPageWriter :: default ( ) . with_encryptor ( page_encryptor) )
885
877
}
886
878
887
879
#[ cfg( not( feature = "encryption" ) ) ]
888
- fn create_page_writer ( & self , _column_index : usize ) -> Box < ArrowPageWriter > {
880
+ fn create_page_writer (
881
+ & self ,
882
+ _column_descriptor : & ColumnDescPtr ,
883
+ _column_index : usize ,
884
+ ) -> Box < ArrowPageWriter > {
889
885
Box :: < ArrowPageWriter > :: default ( )
890
886
}
891
887
@@ -897,7 +893,7 @@ impl ArrowColumnWriterFactory {
897
893
out : & mut Vec < ArrowColumnWriter > ,
898
894
) -> Result < ( ) > {
899
895
let col = |desc : & ColumnDescPtr | {
900
- let page_writer = self . create_page_writer ( out. len ( ) ) ;
896
+ let page_writer = self . create_page_writer ( desc , out. len ( ) ) ;
901
897
let chunk = page_writer. buffer . clone ( ) ;
902
898
let writer = get_column_writer ( desc. clone ( ) , props. clone ( ) , page_writer) ;
903
899
ArrowColumnWriter {
@@ -907,7 +903,7 @@ impl ArrowColumnWriterFactory {
907
903
} ;
908
904
909
905
let bytes = |desc : & ColumnDescPtr | {
910
- let page_writer = self . create_page_writer ( out. len ( ) ) ;
906
+ let page_writer = self . create_page_writer ( desc , out. len ( ) ) ;
911
907
let chunk = page_writer. buffer . clone ( ) ;
912
908
let writer = GenericColumnWriter :: new ( desc. clone ( ) , props. clone ( ) , page_writer) ;
913
909
ArrowColumnWriter {
0 commit comments