11//! EngineData related ffi code
22
3+ use delta_kernel:: arrow:: array:: {
4+ ffi:: { FFI_ArrowArray , FFI_ArrowSchema } ,
5+ ArrayData , StructArray ,
6+ } ;
37use delta_kernel:: { DeltaResult , EngineData } ;
48use std:: ffi:: c_void;
59
@@ -45,8 +49,8 @@ unsafe fn get_raw_engine_data_impl(data: &mut Handle<ExclusiveEngineData>) -> &m
4549#[ cfg( feature = "default-engine" ) ]
4650#[ repr( C ) ]
4751pub struct ArrowFFIData {
48- pub array : arrow_data :: ffi :: FFI_ArrowArray ,
49- pub schema : arrow_schema :: ffi :: FFI_ArrowSchema ,
52+ pub array : FFI_ArrowArray ,
53+ pub schema : FFI_ArrowSchema ,
5054}
5155
5256// TODO: This should use a callback to avoid having to have the engine free the struct
@@ -71,16 +75,16 @@ pub unsafe extern "C" fn get_raw_arrow_data(
7175// TODO: This method leaks the returned pointer memory. How will the engine free it?
7276#[ cfg( feature = "default-engine" ) ]
7377fn get_raw_arrow_data_impl ( data : Box < dyn EngineData > ) -> DeltaResult < * mut ArrowFFIData > {
74- let record_batch: arrow_array :: RecordBatch = data
78+ let record_batch: delta_kernel :: arrow :: array :: RecordBatch = data
7579 . into_any ( )
7680 . downcast :: < delta_kernel:: engine:: arrow_data:: ArrowEngineData > ( )
7781 . map_err ( |_| delta_kernel:: Error :: EngineDataType ( "ArrowEngineData" . to_string ( ) ) ) ?
7882 . into ( ) ;
79- let sa: arrow_array :: StructArray = record_batch. into ( ) ;
80- let array_data: arrow_data :: ArrayData = sa. into ( ) ;
83+ let sa: StructArray = record_batch. into ( ) ;
84+ let array_data: ArrayData = sa. into ( ) ;
8185 // these call `clone`. is there a way to not copy anything and what exactly are they cloning?
82- let array = arrow_data :: ffi :: FFI_ArrowArray :: new ( & array_data) ;
83- let schema = arrow_schema :: ffi :: FFI_ArrowSchema :: try_from ( array_data. data_type ( ) ) ?;
86+ let array = FFI_ArrowArray :: new ( & array_data) ;
87+ let schema = FFI_ArrowSchema :: try_from ( array_data. data_type ( ) ) ?;
8488 let ret_data = Box :: new ( ArrowFFIData { array, schema } ) ;
8589 Ok ( Box :: leak ( ret_data) )
8690}
0 commit comments