| 1412 | const Ordering& ordering() const override { return ordering_; } |
| 1413 | |
| 1414 | Status InputReceived(ExecNode* input, ExecBatch batch) override { |
| 1415 | // InputReceived may be called after execution was finished. Pushing it to the |
| 1416 | // InputState is unnecessary since we're done (and anyway may cause the |
| 1417 | // BackPressureController to pause the input, causing a deadlock), so drop it. |
| 1418 | if (::arrow::compute::kUnsequencedIndex == batch.index) |
| 1419 | return Status::Invalid("AsofJoin requires sequenced input"); |
| 1420 | |
| 1421 | if (process_task_.is_finished()) { |
| 1422 | DEBUG_SYNC(this, "Input received while done. Short circuiting.", |
| 1423 | DEBUG_MANIP(std::endl)); |
| 1424 | return Status::OK(); |
| 1425 | } |
| 1426 | |
| 1427 | // Get the input |
| 1428 | ARROW_DCHECK(std_has(inputs_, input)); |
| 1429 | size_t k = std_find(inputs_, input) - inputs_.begin(); |
| 1430 | |
| 1431 | // Put into the sequencing queue |
| 1432 | ARROW_RETURN_NOT_OK(state_.at(k)->InsertBatch(std::move(batch))); |
| 1433 | |
| 1434 | PushProcess(true); |
| 1435 | |
| 1436 | return Status::OK(); |
| 1437 | } |
| 1438 | |
| 1439 | Status InputFinished(ExecNode* input, int total_batches) override { |
| 1440 | { |
no test coverage detected