diff --git a/src/mito2/src/compaction.rs b/src/mito2/src/compaction.rs index a43fa8a0a6..a67110f8b8 100644 --- a/src/mito2/src/compaction.rs +++ b/src/mito2/src/compaction.rs @@ -60,7 +60,7 @@ use crate::error::{ use crate::metrics::{COMPACTION_STAGE_ELAPSED, INFLIGHT_COMPACTION_COUNT}; use crate::read::BoxedRecordBatchStream; use crate::read::projection::ProjectionMapper; -use crate::read::scan_region::{PredicateGroup, ScanInput}; +use crate::read::scan_region::{PredicateGroup, ScanInput, concretize_json2_types}; use crate::read::seq_scan::SeqScan; use crate::region::options::{MergeMode, RegionOptions}; use crate::region::version::VersionControlRef; @@ -840,14 +840,14 @@ struct CompactionSstReaderBuilder<'a> { impl CompactionSstReaderBuilder<'_> { /// Builds [BoxedRecordBatchStream] that reads all SST files and yields batches in flat format for compaction. async fn build_flat_sst_reader(self) -> Result { - let scan_input = self.build_scan_input()?.with_compaction(true); + let scan_input = self.build_scan_input().await?.with_compaction(true); SeqScan::new(scan_input) .build_flat_reader_for_compaction() .await } - fn build_scan_input(self) -> Result { + async fn build_scan_input(self) -> Result { let mapper = ProjectionMapper::all(&self.metadata, true)?; let mut scan_input = ScanInput::new(self.sst_layer, mapper) .with_files(self.inputs.to_vec()) @@ -867,7 +867,7 @@ impl CompactionSstReaderBuilder<'_> { scan_input.with_predicate(time_range_to_predicate(time_range, &self.metadata)?); } - Ok(scan_input) + concretize_json2_types(scan_input).await } } diff --git a/src/mito2/src/read/scan_region.rs b/src/mito2/src/read/scan_region.rs index 8cdc1cb12a..fce18eaee9 100644 --- a/src/mito2/src/read/scan_region.rs +++ b/src/mito2/src/read/scan_region.rs @@ -806,7 +806,7 @@ impl ScanRegion { } } -async fn concretize_json2_types(input: ScanInput) -> Result { +pub(crate) async fn concretize_json2_types(input: ScanInput) -> Result { let Some(output_schema) = input.mapper.as_flat().map(|x| x.output_schema()) else { return Ok(input); };