extend raw WAL API with few more methods

- try_wal_watermark_read_page - try to read page from the DB with given WAL watermark value
- wal_changed_pages_after - return set of unique pages changed after watermark WAL position
This commit is contained in:
Nikita Sivukhin
2025-08-04 16:55:50 +04:00
parent 83b1e99a61
commit 2e23230e79
10 changed files with 305 additions and 54 deletions

View File

@@ -1213,8 +1213,8 @@ pub unsafe extern "C" fn libsql_wal_get_frame(
let db: &mut sqlite3 = &mut *db;
let db = db.inner.lock().unwrap();
let frame = std::slice::from_raw_parts_mut(p_frame, frame_len as usize);
match db.conn.wal_get_frame(frame_no, frame) {
Ok(()) => SQLITE_OK,
match db.conn.wal_get_frame(frame_no as u64, frame) {
Ok(..) => SQLITE_OK,
Err(_) => SQLITE_ERROR,
}
}
@@ -1250,7 +1250,7 @@ pub unsafe extern "C" fn libsql_wal_insert_frame(
let db: &mut sqlite3 = &mut *db;
let db = db.inner.lock().unwrap();
let frame = std::slice::from_raw_parts(p_frame, frame_len as usize);
match db.conn.wal_insert_frame(frame_no, frame) {
match db.conn.wal_insert_frame(frame_no as u64, frame) {
Ok(_) => SQLITE_OK,
Err(LimboError::Conflict(..)) => {
if !p_conflict.is_null() {