diff --git a/src/query/src/optimizer/parallelize_scan.rs b/src/query/src/optimizer/parallelize_scan.rs index eb712ec920..b6d22f7de5 100644 --- a/src/query/src/optimizer/parallelize_scan.rs +++ b/src/query/src/optimizer/parallelize_scan.rs @@ -23,6 +23,7 @@ use datafusion::physical_plan::ExecutionPlan; use datafusion_common::tree_node::{Transformed, TreeNode}; use datafusion_common::{DataFusionError, Result}; use store_api::region_engine::PartitionRange; +use store_api::storage::TimeSeriesDistribution; use table::table::scan::RegionScanExec; #[derive(Debug)] @@ -65,6 +66,14 @@ impl ParallelizeScan { return Ok(Transformed::no(plan)); } + // don't parallelize if we want per series distribution + if matches!( + region_scan_exec.distribution(), + Some(TimeSeriesDistribution::PerSeries) + ) { + return Ok(Transformed::no(plan)); + } + let ranges = region_scan_exec.get_partition_ranges(); let total_range_num = ranges.len(); let expected_partition_num = config.execution.target_partitions;