|
18 | 18 | use std::any::Any;
|
19 | 19 | use std::pin::Pin;
|
20 | 20 | use std::sync::Arc;
|
21 |
| -use std::task::{Context, Poll}; |
| 21 | +use std::task::{ready, Context, Poll}; |
22 | 22 |
|
23 | 23 | use super::{
|
24 | 24 | ColumnStatistics, DisplayAs, ExecutionPlanProperties, PlanProperties,
|
@@ -59,6 +59,7 @@ pub struct FilterExec {
|
59 | 59 | metrics: ExecutionPlanMetricsSet,
|
60 | 60 | /// Selectivity for statistics. 0 = no rows, 100 = all rows
|
61 | 61 | default_selectivity: u8,
|
| 62 | + /// Properties equivalence properties, partitioning, etc. |
62 | 63 | cache: PlanProperties,
|
63 | 64 | }
|
64 | 65 |
|
@@ -375,26 +376,20 @@ impl Stream for FilterExecStream {
|
375 | 376 | ) -> Poll<Option<Self::Item>> {
|
376 | 377 | let poll;
|
377 | 378 | loop {
|
378 |
| - match self.input.poll_next_unpin(cx) { |
379 |
| - Poll::Ready(value) => match value { |
380 |
| - Some(Ok(batch)) => { |
381 |
| - let timer = self.baseline_metrics.elapsed_compute().timer(); |
382 |
| - let filtered_batch = batch_filter(&batch, &self.predicate)?; |
383 |
| - // skip entirely filtered batches |
384 |
| - if filtered_batch.num_rows() == 0 { |
385 |
| - continue; |
386 |
| - } |
387 |
| - timer.done(); |
388 |
| - poll = Poll::Ready(Some(Ok(filtered_batch))); |
389 |
| - break; |
| 379 | + match ready!(self.input.poll_next_unpin(cx)) { |
| 380 | + Some(Ok(batch)) => { |
| 381 | + let timer = self.baseline_metrics.elapsed_compute().timer(); |
| 382 | + let filtered_batch = batch_filter(&batch, &self.predicate)?; |
| 383 | + // skip entirely filtered batches |
| 384 | + if filtered_batch.num_rows() == 0 { |
| 385 | + continue; |
390 | 386 | }
|
391 |
| - _ => { |
392 |
| - poll = Poll::Ready(value); |
393 |
| - break; |
394 |
| - } |
395 |
| - }, |
396 |
| - Poll::Pending => { |
397 |
| - poll = Poll::Pending; |
| 387 | + timer.done(); |
| 388 | + poll = Poll::Ready(Some(Ok(filtered_batch))); |
| 389 | + break; |
| 390 | + } |
| 391 | + value => { |
| 392 | + poll = Poll::Ready(value); |
398 | 393 | break;
|
399 | 394 | }
|
400 | 395 | }
|
|
0 commit comments