diff --git a/src/query/service/src/servers/flight/v1/exchange/exchange_transform_shuffle.rs b/src/query/service/src/servers/flight/v1/exchange/exchange_transform_shuffle.rs index 9c3242147c8d3..a4d35f6c2dfbe 100644 --- a/src/query/service/src/servers/flight/v1/exchange/exchange_transform_shuffle.rs +++ b/src/query/service/src/servers/flight/v1/exchange/exchange_transform_shuffle.rs @@ -169,7 +169,8 @@ impl Processor for ExchangeShuffleTransform { } } - if !self.initialized && !self.waiting_outputs.is_empty() { + // Lazy execution: To avoid memory issues from concurrent execution of all query fragments, we will defer execution until all downstream operations are ready. + if !self.initialized && self.waiting_outputs.len() == self.outputs.len() { self.initialized = true; for input in &self.inputs { input.port.set_need_data();