#[path = "common/mod.rs"]
mod common;
use common::*;
#[test]
#[ignore = "slow in debug, run with --ignored"]
fn test_10k_insert_consistency() {
let (_dir, db) = setup_db();
exec(
&db,
"CREATE TABLE bench (id INT PRIMARY KEY, val FLOAT, tag TEXT)",
);
insert_test_rows(&db, 10_000);
assert_eq!(count_rows(&db, "SELECT * FROM bench"), 10_000);
let us_count = count_rows(&db, "SELECT * FROM bench WHERE tag = 'US'");
assert!(
us_count > 3000 && us_count < 4000,
"US count {} unexpected",
us_count
);
let eu_count = count_rows(&db, "SELECT * FROM bench WHERE tag = 'EU'");
assert_eq!(us_count + eu_count, 10_000);
}
#[test]
#[ignore = "slow in debug, run with --ignored"]
fn test_rapid_insert_delete_cycle() {
let (_dir, db) = setup_db();
exec(&db, "CREATE TABLE t (id INT PRIMARY KEY, val INT)");
exec(&db, "INSERT INTO t VALUES (1, 100)");
for _ in 0..500 {
exec(&db, "INSERT INTO t VALUES (2, 200)");
exec(&db, "DELETE FROM t WHERE id = 2");
}
assert_eq!(count_rows(&db, "SELECT * FROM t"), 1);
assert_eq!(count_rows(&db, "SELECT * FROM t WHERE val = 100"), 1);
}
#[test]
#[ignore = "slow in debug, run with --ignored"]
fn test_rapid_update_same_row() {
let (_dir, db) = setup_db();
exec(&db, "CREATE TABLE t (id INT PRIMARY KEY, val INT)");
exec(&db, "INSERT INTO t VALUES (1, 0)");
for i in 1..=500 {
exec(&db, &format!("UPDATE t SET val = {} WHERE id = 1", i));
}
assert_eq!(count_rows(&db, "SELECT * FROM t"), 1);
}
#[test]
#[ignore = "slow in debug, run with --ignored"]
fn test_many_small_batches() {
let (_dir, db) = setup_db();
exec(&db, "CREATE TABLE t (id INT PRIMARY KEY, val INT)");
for i in 1..=1000 {
exec(&db, &format!("INSERT INTO t VALUES ({}, {})", i, i));
}
assert_eq!(count_rows(&db, "SELECT * FROM t"), 1000);
let _ = fast_count(&db, "SELECT * FROM t");
assert_eq!(count_rows(&db, "SELECT * FROM t"), 1000);
}
#[test]
#[ignore = "slow in debug, run with --ignored"]
fn test_large_result_set() {
let (_dir, db) = setup_db();
exec(
&db,
"CREATE TABLE bench (id INT PRIMARY KEY, val FLOAT, tag TEXT)",
);
insert_test_rows(&db, 50_000);
let count = fast_count(&db, "SELECT * FROM bench");
assert_eq!(count, 50_000);
let filtered = fast_count(&db, "SELECT * FROM bench WHERE tag = 'US'");
assert!(filtered > 15000 && filtered < 20000);
}
#[test]
#[ignore = "slow in debug, run with --ignored"]
fn test_mixed_read_write_stability() {
let (_dir, db) = setup_db();
exec(
&db,
"CREATE TABLE bench (id INT PRIMARY KEY, val FLOAT, tag TEXT)",
);
insert_test_rows(&db, 5_000);
for round in 0..10 {
exec(
&db,
&format!("INSERT INTO bench VALUES ({}, 0.0, 'NEW')", 900000 + round),
);
let _ = fast_count(&db, "SELECT * FROM bench WHERE tag = 'US'");
let _ = fast_count(&db, "SELECT * FROM bench");
}
assert_eq!(count_rows(&db, "SELECT * FROM bench"), 5_010);
}
#[test]
#[ignore = "slow in debug, run with --ignored"]
fn test_index_after_bulk_insert() {
let (_dir, db) = setup_db();
exec(
&db,
"CREATE TABLE bench (id INT PRIMARY KEY, val FLOAT, tag TEXT)",
);
insert_test_rows(&db, 5_000);
exec(&db, "CREATE INDEX idx_tag ON bench (tag) USING COLUMN");
assert!(count_rows(&db, "SELECT * FROM bench WHERE tag = 'US'") > 0);
assert_eq!(count_rows(&db, "SELECT DISTINCT tag FROM bench"), 2);
}
#[test]
#[ignore = "slow in debug, run with --ignored"]
fn test_50k_full_workload() {
let (_dir, db) = setup_db();
exec(
&db,
"CREATE TABLE bench (id INT PRIMARY KEY, val FLOAT, tag TEXT)",
);
insert_test_rows(&db, 50_000);
let _ = fast_count(&db, "SELECT * FROM bench");
let _ = fast_count(&db, "SELECT * FROM bench WHERE tag = 'US'");
let _ = fast_count(&db, "SELECT * FROM bench WHERE tag = 'US' LIMIT 10");
let _ = db.execute("SELECT COUNT(*) FROM bench WHERE tag = 'US'");
let _ = fast_count(&db, "SELECT DISTINCT tag FROM bench");
let _ = db.execute("SELECT * FROM bench ORDER BY val DESC LIMIT 10");
assert_eq!(count_rows(&db, "SELECT * FROM bench"), 50_000);
}