@@ -612,7 +612,7 @@ pub struct Statement {
612612 // The libSQL connection instance.
613613 conn : Arc < libsql:: Connection > ,
614614 // The libSQL statement instance.
615- stmt : Arc < tokio :: sync :: Mutex < libsql:: Statement > > ,
615+ stmt : Arc < libsql:: Statement > ,
616616 // The column names.
617617 column_names : Vec < std:: ffi:: CString > ,
618618 // The access mode.
@@ -638,7 +638,7 @@ impl Statement {
638638 . iter ( )
639639 . map ( |c| std:: ffi:: CString :: new ( c. name ( ) . to_string ( ) ) . unwrap ( ) )
640640 . collect ( ) ;
641- let stmt = Arc :: new ( tokio :: sync :: Mutex :: new ( stmt) ) ;
641+ let stmt = Arc :: new ( stmt) ;
642642 Self {
643643 conn,
644644 stmt,
@@ -659,17 +659,16 @@ impl Statement {
659659 let total_changes_before = self . conn . total_changes ( ) ;
660660 let start = std:: time:: Instant :: now ( ) ;
661661
662- let mut stmt = self . stmt . lock ( ) . await ;
663- let params = map_params ( & stmt, params) ?;
664- stmt. run ( params) . await . map_err ( Error :: from) ?;
662+ let params = map_params ( & self . stmt , params) ?;
663+ self . stmt . run ( params) . await . map_err ( Error :: from) ?;
665664 let changes = if self . conn . total_changes ( ) == total_changes_before {
666665 0
667666 } else {
668667 self . conn . changes ( )
669668 } ;
670669 let last_insert_row_id = self . conn . last_insert_rowid ( ) ;
671670 let duration = start. elapsed ( ) . as_secs_f64 ( ) ;
672- stmt. reset ( ) ;
671+ self . stmt . reset ( ) ;
673672 Ok ( RunResult {
674673 changes : changes as f64 ,
675674 duration,
@@ -699,9 +698,8 @@ impl Statement {
699698 None
700699 } ;
701700 rt. block_on ( async move {
702- let mut stmt = self . stmt . lock ( ) . await ;
703- let params = map_params ( & stmt, params) ?;
704- let mut rows = stmt. query ( params) . await . map_err ( Error :: from) ?;
701+ let params = map_params ( & self . stmt , params) ?;
702+ let mut rows = self . stmt . query ( params) . await . map_err ( Error :: from) ?;
705703 let row = rows. next ( ) . await . map_err ( Error :: from) ?;
706704 let duration: Option < f64 > = start. map ( |start| start. elapsed ( ) . as_secs_f64 ( ) ) ;
707705 let result = Self :: get_internal (
@@ -713,7 +711,7 @@ impl Statement {
713711 pluck,
714712 duration,
715713 ) ;
716- stmt. reset ( ) ;
714+ self . stmt . reset ( ) ;
717715 result
718716 } )
719717 }
@@ -768,14 +766,13 @@ impl Statement {
768766 let params = {
769767 let stmt = stmt. clone ( ) ;
770768 rt. block_on ( async move {
771- let mut stmt = stmt. lock ( ) . await ;
772769 stmt. reset ( ) ;
773770 map_params ( & stmt, params) . unwrap ( )
774771 } )
775772 } ;
776773 let stmt = self . stmt . clone ( ) ;
777774 let future = async move {
778- let rows = stmt. lock ( ) . await . query ( params) . await . map_err ( Error :: from) ?;
775+ let rows = stmt. query ( params) . await . map_err ( Error :: from) ?;
779776 Ok :: < _ , napi:: Error > ( rows)
780777 } ;
781778 let column_names = self . column_names . clone ( ) ;
@@ -792,11 +789,7 @@ impl Statement {
792789
793790 #[ napi]
794791 pub fn raw ( & self , raw : Option < bool > ) -> Result < & Self > {
795- let rt = runtime ( ) ?;
796- let returns_data = rt. block_on ( async move {
797- let stmt = self . stmt . lock ( ) . await ;
798- !stmt. columns ( ) . is_empty ( )
799- } ) ;
792+ let returns_data = !self . stmt . columns ( ) . is_empty ( ) ;
800793 if !returns_data {
801794 return Err ( napi:: Error :: from_reason (
802795 "The raw() method is only for statements that return data" ,
@@ -826,8 +819,7 @@ impl Statement {
826819 pub fn columns ( & self , env : Env ) -> Result < Array > {
827820 let rt = runtime ( ) ?;
828821 rt. block_on ( async move {
829- let stmt = self . stmt . lock ( ) . await ;
830- let columns = stmt. columns ( ) ;
822+ let columns = self . stmt . columns ( ) ;
831823 let mut js_array = env. create_array ( columns. len ( ) as u32 ) ?;
832824 for ( i, col) in columns. iter ( ) . enumerate ( ) {
833825 let mut js_obj = env. create_object ( ) ?;
@@ -872,12 +864,7 @@ impl Statement {
872864
873865 #[ napi]
874866 pub fn interrupt ( & self ) -> Result < ( ) > {
875- let rt = runtime ( ) ?;
876- rt. block_on ( async move {
877- let mut stmt = self . stmt . lock ( ) . await ;
878- stmt. interrupt ( )
879- } )
880- . map_err ( Error :: from) ?;
867+ self . stmt . interrupt ( ) . map_err ( Error :: from) ?;
881868 Ok ( ( ) )
882869 }
883870}
@@ -894,7 +881,6 @@ pub fn statement_iterate_sync(
894881 let pluck = stmt. mode . pluck . load ( Ordering :: SeqCst ) ;
895882 let stmt = stmt. stmt . clone ( ) ;
896883 let ( rows, column_names) = rt. block_on ( async move {
897- let mut stmt = stmt. lock ( ) . await ;
898884 stmt. reset ( ) ;
899885 let params = map_params ( & stmt, params) ?;
900886 let rows = stmt. query ( params) . await . map_err ( Error :: from) ?;
0 commit comments