File indexing completed on 2025-08-28 08:26:53
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #pragma once
0019
0020 #include <functional>
0021 #include <memory>
0022 #include <vector>
0023
0024 #include "arrow/acero/options.h"
0025 #include "arrow/record_batch.h"
0026 #include "arrow/result.h"
0027 #include "arrow/status.h"
0028 #include "arrow/type.h"
0029
0030 namespace arrow {
0031
0032 using compute::ExecContext;
0033
0034 namespace acero {
0035
0036 class OrderByImpl {
0037 public:
0038 virtual ~OrderByImpl() = default;
0039
0040 virtual void InputReceived(const std::shared_ptr<RecordBatch>& batch) = 0;
0041
0042 virtual Result<Datum> DoFinish() = 0;
0043
0044 virtual std::string ToString() const = 0;
0045
0046 static Result<std::unique_ptr<OrderByImpl>> MakeSort(
0047 ExecContext* ctx, const std::shared_ptr<Schema>& output_schema,
0048 const SortOptions& options);
0049
0050 static Result<std::unique_ptr<OrderByImpl>> MakeSelectK(
0051 ExecContext* ctx, const std::shared_ptr<Schema>& output_schema,
0052 const SelectKOptions& options);
0053 };
0054
0055 }
0056 }