Skip to main content

reifydb_sub_flow/operator/
sort.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2025 ReifyDB
3
4use 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		// TODO: Implement single-encoded sort processing
41		// For now, just pass through all changes with updated from
42		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}