@@ -598,9 +598,10 @@ impl Statement {
598598 Ok :: < _ , napi:: Error > ( rows)
599599 } ;
600600 env. execute_tokio_future ( future, move |& mut _env, result| {
601- let mut column_names = vec ! [ ] ;
601+ let mut column_names = Vec :: new ( ) ;
602602 for i in 0 ..result. column_count ( ) {
603- column_names. push ( result. column_name ( i) . unwrap ( ) . to_string ( ) ) ;
603+ let column_name = result. column_name ( i) . unwrap ( ) . to_string ( ) ;
604+ column_names. push ( std:: ffi:: CString :: new ( column_name) . unwrap ( ) ) ;
604605 }
605606 let iter = RowsIterator :: new (
606607 Arc :: new ( tokio:: sync:: Mutex :: new ( result) ) ,
@@ -632,9 +633,9 @@ impl Statement {
632633 params
633634 } ;
634635 let rows = stmt. query ( params) . await . map_err ( Error :: from) ?;
635- let mut column_names = vec ! [ ] ;
636+ let mut column_names = Vec :: new ( ) ;
636637 for i in 0 ..rows. column_count ( ) {
637- column_names. push ( rows. column_name ( i) . unwrap ( ) . to_string ( ) ) ;
638+ column_names. push ( std :: ffi :: CString :: new ( rows. column_name ( i) . unwrap ( ) . to_string ( ) ) . unwrap ( ) ) ;
638639 }
639640 Ok :: < _ , napi:: Error > ( ( rows, column_names) )
640641 } ;
@@ -723,9 +724,9 @@ impl Statement {
723724 libsql:: params:: Params :: None
724725 } ;
725726 let mut rows = stmt. query ( params) . await . map_err ( Error :: from) ?;
726- let mut column_names = vec ! [ ] ;
727+ let mut column_names = Vec :: new ( ) ;
727728 for i in 0 ..rows. column_count ( ) {
728- column_names. push ( rows. column_name ( i) . unwrap ( ) . to_string ( ) ) ;
729+ column_names. push ( std :: ffi :: CString :: new ( rows. column_name ( i) . unwrap ( ) . to_string ( ) ) . unwrap ( ) ) ;
729730 }
730731 let row = rows. next ( ) . await . map_err ( Error :: from) ?;
731732 let duration = start. elapsed ( ) . as_secs_f64 ( ) ;
@@ -776,7 +777,7 @@ impl Statement {
776777#[ napi]
777778pub struct RowsIterator {
778779 rows : Arc < tokio:: sync:: Mutex < libsql:: Rows > > ,
779- column_names : Vec < String > ,
780+ column_names : Vec < std :: ffi :: CString > ,
780781 safe_ints : bool ,
781782 raw : bool ,
782783 pluck : bool ,
@@ -786,7 +787,7 @@ pub struct RowsIterator {
786787impl RowsIterator {
787788 pub fn new (
788789 rows : Arc < tokio:: sync:: Mutex < libsql:: Rows > > ,
789- column_names : Vec < String > ,
790+ column_names : Vec < std :: ffi :: CString > ,
790791 safe_ints : bool ,
791792 raw : bool ,
792793 pluck : bool ,
@@ -831,7 +832,7 @@ impl RowsIterator {
831832
832833#[ napi]
833834pub struct Record {
834- column_names : Vec < String > ,
835+ column_names : Vec < std :: ffi :: CString > ,
835836 row : Option < libsql:: Row > ,
836837 safe_ints : bool ,
837838 raw : bool ,
@@ -864,7 +865,7 @@ fn runtime() -> Result<&'static Runtime> {
864865
865866fn map_row (
866867 env : & Env ,
867- column_names : & [ String ] ,
868+ column_names : & [ std :: ffi :: CString ] ,
868869 row : & libsql:: Row ,
869870 safe_ints : bool ,
870871 raw : bool ,
@@ -900,7 +901,7 @@ fn convert_value_to_js(
900901
901902fn map_row_object (
902903 env : & Env ,
903- column_names : & [ String ] ,
904+ column_names : & [ std :: ffi :: CString ] ,
904905 row : & libsql:: Row ,
905906 safe_ints : bool ,
906907 pluck : bool ,
@@ -927,9 +928,8 @@ fn map_row_object(
927928 Err ( e) => return Err ( napi:: Error :: from_reason ( e. to_string ( ) ) ) ,
928929 } ;
929930
930- let column_name = column_names[ idx] . as_str ( ) ;
931+ let column_name = & column_names[ idx] ;
931932 let js_value = convert_value_to_js ( env, & value, safe_ints) ?;
932- let column_name = std:: ffi:: CString :: new ( column_name) . unwrap ( ) ;
933933 unsafe {
934934 napi:: sys:: napi_set_named_property (
935935 env. raw ( ) ,
@@ -947,7 +947,7 @@ fn map_row_object(
947947
948948fn map_row_raw (
949949 env : & Env ,
950- column_names : & [ String ] ,
950+ column_names : & [ std :: ffi :: CString ] ,
951951 row : & libsql:: Row ,
952952 safe_ints : bool ,
953953 pluck : bool ,
0 commit comments