reifydb_sub_flow/operator/
sort.rs1use std::sync::Arc;
5
6use reifydb_core::{
7 interface::{catalog::flow::FlowNodeId, change::Change},
8 value::column::columns::Columns,
9};
10use reifydb_rql::expression::Expression;
11use reifydb_type::{Result, value::row_number::RowNumber};
12
13use crate::{
14 operator::{Operator, Operators},
15 transaction::FlowTransaction,
16};
17
18pub struct SortOperator {
19 parent: Arc<Operators>,
20 node: FlowNodeId,
21 _expressions: Vec<Expression>,
22}
23
24impl SortOperator {
25 pub fn new(parent: Arc<Operators>, node: FlowNodeId, _expressions: Vec<Expression>) -> Self {
26 Self {
27 parent,
28 node,
29 _expressions,
30 }
31 }
32}
33
34impl Operator for SortOperator {
35 fn id(&self) -> FlowNodeId {
36 self.node
37 }
38
39 fn apply(&self, _txn: &mut FlowTransaction, change: Change) -> Result<Change> {
40 Ok(Change::from_flow(self.node, change.version, change.diffs))
43 }
44
45 fn pull(&self, txn: &mut FlowTransaction, rows: &[RowNumber]) -> Result<Columns> {
46 self.parent.pull(txn, rows)
47 }
48}