| 988 | } |
| 989 | |
| 990 | bool Driver::mayPushdownAggregation(Operator* aggregation) const { |
| 991 | for (auto i = 1; i < operators_.size(); ++i) { |
| 992 | auto op = operators_[i].get(); |
| 993 | if (aggregation == op) { |
| 994 | return true; |
| 995 | } |
| 996 | if (!op->isFilter() || !op->preservesOrder()) { |
| 997 | return false; |
| 998 | } |
| 999 | } |
| 1000 | BOLT_FAIL( |
| 1001 | "Aggregation operator not found in its Driver: {}", |
| 1002 | aggregation->toString()); |
| 1003 | } |
| 1004 | |
| 1005 | std::unordered_set<column_index_t> Driver::canPushdownFilters( |
| 1006 | const Operator* filterSource, |