Skip to content

Commit 52c6f61

Browse files
committed
Fix "File too large" error for impossible precedence
1 parent 1f9f5f0 commit 52c6f61

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

graphannis/src/annis/db/aql/operators/precedence.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,8 @@ impl<'a> BinaryOperatorBase for Precedence<'a> {
178178
std::ops::Bound::Excluded(max_dist) => max_dist - 1,
179179
};
180180
let max_possible_dist = std::cmp::min(max_dist, stats_order.max_depth);
181-
let num_of_descendants = max_possible_dist - self.spec.dist.min_dist() + 1;
181+
let num_of_descendants =
182+
max_possible_dist.saturating_sub(self.spec.dist.min_dist()) + 1;
182183

183184
return Ok(EstimationType::Selectivity(
184185
(num_of_descendants as f64) / (stats_order.nodes as f64 / 2.0),

graphannis/tests/searchtest.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,3 +364,27 @@ fn negative_token_search_applies_leaf_filter() {
364364
}
365365
}
366366
}
367+
368+
#[ignore]
369+
#[test]
370+
fn no_error_on_large_token_distance() {
371+
let cs = CORPUS_STORAGE.as_ref().unwrap();
372+
373+
let q = SearchQuery {
374+
corpus_names: &["subtok.demo"],
375+
query: r#"tok .100 tok"#,
376+
query_language: QueryLanguage::AQL,
377+
timeout: None,
378+
};
379+
// There should be an empty result, but no error
380+
let result = cs
381+
.find(
382+
q.clone(),
383+
0,
384+
Some(1),
385+
graphannis::corpusstorage::ResultOrder::Normal,
386+
)
387+
.unwrap();
388+
389+
assert_eq!(0, result.len());
390+
}

0 commit comments

Comments
 (0)