diff --git a/benches/query_benchmarks.rs b/benches/query_benchmarks.rs index c25ae00..0fc385f 100644 --- a/benches/query_benchmarks.rs +++ b/benches/query_benchmarks.rs @@ -134,7 +134,7 @@ fn bench_multiple_updates(c: &mut Criterion) { fn bench_sum(c: &mut Criterion) { let mut group = c.benchmark_group("sum operation"); - for size in [10, 100, 1000].iter() { + for size in [10, 100, 1_000, 10_000, 100_000].iter() { group.bench_with_input(format!("sum {} records", size), size, |b, &size| { b.iter_with_setup( || { diff --git a/src/table.rs b/src/table.rs index f5b8aa2..161b5b1 100644 --- a/src/table.rs +++ b/src/table.rs @@ -500,6 +500,20 @@ mod tests { assert_eq!(table.sum(1, 2, 1), 25); } + #[test] + fn large_sum_test() { + let mut db = RDatabase::new(); + let table_ref = db.create_table("Scores".to_string(), 2, 0); + let mut table = table_ref.table.write().unwrap(); + + for x in 0..100_000 { + table.write(vec![x, x]); + } + + let v = table.sum(0, 100_000, 0); + assert_eq!((100_000 - 1) * 100_000 / 2, v); + } + #[test] fn delete_test() { let mut db = RDatabase::new();