@@ -407,15 +407,18 @@ struct SchemaSourceNode : public SourceNode {
407407
408408struct RecordBatchReaderSourceNode : public SourceNode {
409409 RecordBatchReaderSourceNode (ExecPlan* plan, std::shared_ptr<Schema> schema,
410- arrow::AsyncGenerator<std::optional<ExecBatch>> generator)
411- : SourceNode(plan, schema, generator) {}
410+ arrow::AsyncGenerator<std::optional<ExecBatch>> generator,
411+ Ordering ordering = Ordering::Unordered())
412+ : SourceNode(plan, schema, generator, ordering) {}
412413
413414 static Result<ExecNode*> Make (ExecPlan* plan, std::vector<ExecNode*> inputs,
414415 const ExecNodeOptions& options) {
415416 RETURN_NOT_OK (ValidateExecNodeInputs (plan, inputs, 0 , kKindName ));
416417 const auto & cast_options =
417418 checked_cast<const RecordBatchReaderSourceNodeOptions&>(options);
418419 auto & reader = cast_options.reader ;
420+ Ordering ordering =
421+ cast_options.implicit_ordering ? Ordering::Implicit () : Ordering::Unordered ();
419422 auto io_executor = cast_options.io_executor ;
420423
421424 if (reader == nullptr ) {
@@ -428,7 +431,7 @@ struct RecordBatchReaderSourceNode : public SourceNode {
428431
429432 ARROW_ASSIGN_OR_RAISE (auto generator, MakeGenerator (reader, io_executor));
430433 return plan->EmplaceNode <RecordBatchReaderSourceNode>(plan, reader->schema (),
431- generator);
434+ generator, ordering );
432435 }
433436
434437 static Result<arrow::AsyncGenerator<std::optional<ExecBatch>>> MakeGenerator (
0 commit comments