diff --git a/rust/lance/src/dataset/fragment.rs b/rust/lance/src/dataset/fragment.rs index 8a52c006d8c..28502752b8f 100644 --- a/rust/lance/src/dataset/fragment.rs +++ b/rust/lance/src/dataset/fragment.rs @@ -1347,7 +1347,7 @@ impl FileFragment { } /// Get the deletion vector for this fragment, using the cache if available. - pub(crate) async fn get_deletion_vector(&self) -> Result>> { + pub async fn get_deletion_vector(&self) -> Result>> { let Some(deletion_file) = self.metadata.deletion_file.as_ref() else { return Ok(None); }; diff --git a/rust/lance/src/dataset/scanner.rs b/rust/lance/src/dataset/scanner.rs index b1f2d075401..3e70b51016c 100644 --- a/rust/lance/src/dataset/scanner.rs +++ b/rust/lance/src/dataset/scanner.rs @@ -1473,7 +1473,7 @@ impl Scanner { Ok(concat_batches(&schema, &batches)?) } - fn create_count_plan(&self) -> BoxFuture<'_, Result>> { + pub fn create_count_plan(&self) -> BoxFuture<'_, Result>> { // Future intentionally boxed here to avoid large futures on the stack async move { if self.projection_plan.physical_projection.is_empty() { diff --git a/rust/lance/src/io/exec/filtered_read.rs b/rust/lance/src/io/exec/filtered_read.rs index e1dd87195a4..f97ebcdadbf 100644 --- a/rust/lance/src/io/exec/filtered_read.rs +++ b/rust/lance/src/io/exec/filtered_read.rs @@ -66,6 +66,17 @@ pub struct EvaluatedIndex { } impl EvaluatedIndex { + /// Get the row id mask representing which rows matched the index filter. + pub fn index_result(&self) -> &IndexExprResult { + &self.index_result + } + + /// Get a reference to the applicable fragments bitmap, containing the set of fragment IDs + /// implicated by the filter. + pub fn applicable_fragments(&self) -> &RoaringBitmap { + &self.applicable_fragments + } + pub fn try_from_arrow(batch: &RecordBatch) -> Result { if batch.num_rows() != 2 { return Err(Error::InvalidInput {