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 {