core/mvcc: test order by desc with mvcc

This commit is contained in:
Pere Diaz Bou
2025-11-17 16:21:38 +01:00
parent 72bf195f4b
commit 73d9f0016c

View File

@@ -1633,3 +1633,28 @@ fn test_cursor_with_btree_and_mvcc_2() {
assert_eq!(rows[1], vec![Value::Integer(2)]);
assert_eq!(rows[2], vec![Value::Integer(3)]);
}
#[test]
fn test_cursor_with_btree_and_mvcc_with_backward_cursor() {
let mut db = MvccTestDbNoConn::new_with_random_db();
// First write some rows and checkpoint so data is flushed to BTree file (.db)
{
let conn = db.connect();
conn.execute("CREATE TABLE t(x integer primary key)")
.unwrap();
conn.execute("INSERT INTO t VALUES (1)").unwrap();
conn.execute("INSERT INTO t VALUES (3)").unwrap();
conn.execute("PRAGMA wal_checkpoint(TRUNCATE)").unwrap();
}
// Now restart so new connection will have to read data from BTree instead of MVCC.
db.restart();
let conn = db.connect();
// Insert a new row so that we have a gap in the BTree.
conn.execute("INSERT INTO t VALUES (2)").unwrap();
let rows = get_rows(&conn, "SELECT * FROM t order by x desc");
dbg!(&rows);
assert_eq!(rows.len(), 3);
assert_eq!(rows[0], vec![Value::Integer(3)]);
assert_eq!(rows[1], vec![Value::Integer(2)]);
assert_eq!(rows[2], vec![Value::Integer(1)]);
}