diff --git a/crates/database/src/query/index_range.rs b/crates/database/src/query/index_range.rs index 7b714d03..b3a728df 100644 --- a/crates/database/src/query/index_range.rs +++ b/crates/database/src/query/index_range.rs @@ -213,6 +213,7 @@ impl IndexRange { self.version.clone(), ) .await?; + anyhow::ensure!(self.unfetched_interval != new_unfetched_interval); self.unfetched_interval = new_unfetched_interval; self.page_count += 1; self.rows_read += page.len(); diff --git a/crates/database/src/transaction_index.rs b/crates/database/src/transaction_index.rs index bf1a0a0f..ae2cda5d 100644 --- a/crates/database/src/transaction_index.rs +++ b/crates/database/src/transaction_index.rs @@ -237,6 +237,11 @@ impl TransactionIndex { (None, None) => break, } } + if remaining_interval == range_request.interval { + Err(anyhow::anyhow!( + "query for {remaining_interval:?} did not shrink" + ))?; + } (range_results, remaining_interval) }; assert!(results.insert(batch_key, item_result).is_none()); @@ -382,6 +387,11 @@ impl TransactionIndex { indexed_fields.clone(), interval_read, )?; + if interval_unread == interval { + Err(anyhow::anyhow!( + "query for {interval_unread:?} did not shrink" + ))?; + } (out, interval_unread) }; assert!(results.insert(batch_key, result).is_none());