@@ -706,3 +706,54 @@ impl fmt::Debug for Connection {
706
706
f. debug_struct ( "Connection" ) . finish ( )
707
707
}
708
708
}
709
+
710
+ #[ cfg( test) ]
711
+ mod tests {
712
+ use crate :: {
713
+ local:: { Connection , Database } ,
714
+ params:: Params ,
715
+ OpenFlags ,
716
+ } ;
717
+
718
+ #[ tokio:: test]
719
+ pub async fn test_kek ( ) {
720
+ let temp_dir = tempfile:: tempdir ( ) . unwrap ( ) ;
721
+ let path1 = temp_dir. path ( ) . join ( "local1.db" ) ;
722
+ let db1 = Database :: new ( path1. to_str ( ) . unwrap ( ) . to_string ( ) , OpenFlags :: default ( ) ) ;
723
+ let conn1 = Connection :: connect ( & db1) . unwrap ( ) ;
724
+ conn1
725
+ . query ( "PRAGMA journal_mode = WAL" , Params :: None )
726
+ . unwrap ( ) ;
727
+ conn1. wal_disable_checkpoint ( ) . unwrap ( ) ;
728
+
729
+ let path2 = temp_dir. path ( ) . join ( "local2.db" ) ;
730
+ let db2 = Database :: new ( path2. to_str ( ) . unwrap ( ) . to_string ( ) , OpenFlags :: default ( ) ) ;
731
+ let conn2 = Connection :: connect ( & db2) . unwrap ( ) ;
732
+ conn2
733
+ . query ( "PRAGMA journal_mode = WAL" , Params :: None )
734
+ . unwrap ( ) ;
735
+ conn2. wal_disable_checkpoint ( ) . unwrap ( ) ;
736
+
737
+ conn1. execute ( "CREATE TABLE t(x)" , Params :: None ) . unwrap ( ) ;
738
+ const CNT : usize = 32 ;
739
+ for _ in 0 ..CNT {
740
+ conn1
741
+ . execute (
742
+ "INSERT INTO t VALUES (randomblob(1024 * 1024))" ,
743
+ Params :: None ,
744
+ )
745
+ . unwrap ( ) ;
746
+ }
747
+ let handle = conn2. wal_insert_handle ( ) . unwrap ( ) ;
748
+ let frame_count = conn1. wal_frame_count ( ) ;
749
+ for frame_no in 0 ..frame_count {
750
+ let frame = conn1. wal_get_frame ( frame_no + 1 , 4096 ) . unwrap ( ) ;
751
+ handle. insert_at ( frame_no as u32 + 1 , & frame) . unwrap ( ) ;
752
+ }
753
+ let result = conn2. query ( "SELECT COUNT(*) FROM t" , Params :: None ) . unwrap ( ) ;
754
+ let row = result. unwrap ( ) . next ( ) . unwrap ( ) . unwrap ( ) ;
755
+ let column = row. get_value ( 0 ) . unwrap ( ) ;
756
+ let cnt = * column. as_integer ( ) . unwrap ( ) ;
757
+ assert_eq ! ( cnt, 32 as i64 ) ;
758
+ }
759
+ }
0 commit comments