File tree Expand file tree Collapse file tree 7 files changed +85
-0
lines changed
Expand file tree Collapse file tree 7 files changed +85
-0
lines changed Original file line number Diff line number Diff line change @@ -107,6 +107,10 @@ int libsql_load_extension(libsql_connection_t conn,
107107 const char * entry_point ,
108108 const char * * out_err_msg );
109109
110+ int libsql_set_reserved_bytes (libsql_connection_t conn , int32_t reserved_bytes , const char * * out_err_msg );
111+
112+ int libsql_get_reserved_bytes (libsql_connection_t conn , int32_t * reserved_bytes , const char * * out_err_msg );
113+
110114int libsql_reset (libsql_connection_t conn , const char * * out_err_msg );
111115
112116void libsql_disconnect (libsql_connection_t conn );
Original file line number Diff line number Diff line change @@ -549,6 +549,45 @@ pub unsafe extern "C" fn libsql_load_extension(
549549 0
550550}
551551
552+ #[ no_mangle]
553+ pub unsafe extern "C" fn libsql_set_reserved_bytes (
554+ conn : libsql_connection_t ,
555+ reserved_bytes : i32 ,
556+ out_err_msg : * mut * const std:: ffi:: c_char ,
557+ ) -> std:: ffi:: c_int {
558+ if conn. is_null ( ) {
559+ set_err_msg ( "Null connection" . to_string ( ) , out_err_msg) ;
560+ return 1 ;
561+ }
562+ let conn = conn. get_ref ( ) ;
563+ if let Err ( err) = conn. set_reserved_bytes ( reserved_bytes) {
564+ set_err_msg ( err. to_string ( ) , out_err_msg) ;
565+ return 1 ;
566+ }
567+ 0
568+ }
569+
570+ #[ no_mangle]
571+ pub unsafe extern "C" fn libsql_get_reserved_bytes (
572+ conn : libsql_connection_t ,
573+ reserved_bytes : * mut i32 ,
574+ out_err_msg : * mut * const std:: ffi:: c_char ,
575+ ) -> std:: ffi:: c_int {
576+ if conn. is_null ( ) {
577+ set_err_msg ( "Null connection" . to_string ( ) , out_err_msg) ;
578+ return 1 ;
579+ }
580+ let conn = conn. get_ref ( ) ;
581+ match conn. get_reserved_bytes ( ) {
582+ Ok ( v) => * reserved_bytes = v,
583+ Err ( err) => {
584+ set_err_msg ( err. to_string ( ) , out_err_msg) ;
585+ return 1 ;
586+ }
587+ }
588+ 0
589+ }
590+
552591#[ no_mangle]
553592pub unsafe extern "C" fn libsql_reset (
554593 conn : libsql_connection_t ,
Original file line number Diff line number Diff line change @@ -39,6 +39,14 @@ pub(crate) trait Conn {
3939
4040 async fn reset ( & self ) ;
4141
42+ fn set_reserved_bytes ( & self , _reserved_bytes : i32 ) -> Result < ( ) > {
43+ Err ( crate :: Error :: ReservedBytesNotSupported )
44+ }
45+
46+ fn get_reserved_bytes ( & self ) -> Result < i32 > {
47+ Err ( crate :: Error :: ReservedBytesNotSupported )
48+ }
49+
4250 fn enable_load_extension ( & self , _onoff : bool ) -> Result < ( ) > {
4351 Err ( crate :: Error :: LoadExtensionNotSupported )
4452 }
@@ -230,6 +238,14 @@ impl Connection {
230238 self . conn . reset ( ) . await
231239 }
232240
241+ pub fn set_reserved_bytes ( & self , reserved_bytes : i32 ) -> Result < ( ) > {
242+ self . conn . set_reserved_bytes ( reserved_bytes)
243+ }
244+
245+ pub fn get_reserved_bytes ( & self ) -> Result < i32 > {
246+ self . conn . get_reserved_bytes ( )
247+ }
248+
233249 /// Enable loading SQLite extensions from SQL queries and Rust API.
234250 ///
235251 /// See [`load_extension`](Connection::load_extension) documentation for more details.
Original file line number Diff line number Diff line change @@ -61,6 +61,8 @@ pub enum Error {
6161 Sync ( crate :: BoxError ) ,
6262 #[ error( "WAL frame insert conflict" ) ]
6363 WalConflict ,
64+ #[ error( "Reserved bytes not supported" ) ]
65+ ReservedBytesNotSupported ,
6466}
6567
6668#[ cfg( feature = "hrana" ) ]
Original file line number Diff line number Diff line change @@ -81,6 +81,14 @@ impl Conn for LibsqlConnection {
8181
8282 async fn reset ( & self ) { }
8383
84+ fn set_reserved_bytes ( & self , reserved_bytes : i32 ) -> Result < ( ) > {
85+ self . conn . set_reserved_bytes ( reserved_bytes)
86+ }
87+
88+ fn get_reserved_bytes ( & self ) -> Result < i32 > {
89+ self . conn . get_reserved_bytes ( )
90+ }
91+
8492 fn enable_load_extension ( & self , onoff : bool ) -> Result < ( ) > {
8593 self . conn . enable_load_extension ( onoff)
8694 }
Original file line number Diff line number Diff line change @@ -542,6 +542,14 @@ impl Conn for RemoteConnection {
542542 }
543543
544544 async fn reset ( & self ) { }
545+
546+ fn set_reserved_bytes ( & self , reserved_bytes : i32 ) -> Result < ( ) > {
547+ self . local . set_reserved_bytes ( reserved_bytes)
548+ }
549+
550+ fn get_reserved_bytes ( & self ) -> Result < i32 > {
551+ self . local . get_reserved_bytes ( )
552+ }
545553}
546554
547555pub struct ColumnMeta {
Original file line number Diff line number Diff line change @@ -189,4 +189,12 @@ impl Conn for SyncedConnection {
189189 }
190190
191191 async fn reset ( & self ) { }
192+
193+ fn set_reserved_bytes ( & self , reserved_bytes : i32 ) -> Result < ( ) > {
194+ self . local . set_reserved_bytes ( reserved_bytes)
195+ }
196+
197+ fn get_reserved_bytes ( & self ) -> Result < i32 > {
198+ self . local . get_reserved_bytes ( )
199+ }
192200}
You can’t perform that action at this time.
0 commit comments