reifydb_sub_flow/operator/
extend.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::{Operator, operator::Operators, transaction::FlowTransaction};
14
15pub struct ExtendOperator {
16 parent: Arc<Operators>,
17 node: FlowNodeId,
18 #[allow(dead_code)]
19 expressions: Vec<Expression>,
20}
21
22impl ExtendOperator {
23 pub fn new(parent: Arc<Operators>, node: FlowNodeId, expressions: Vec<Expression>) -> Self {
24 Self {
25 parent,
26 node,
27 expressions,
28 }
29 }
30}
31
32impl Operator for ExtendOperator {
33 fn id(&self) -> FlowNodeId {
34 self.node
35 }
36
37 fn apply(&self, _txn: &mut FlowTransaction, change: Change) -> Result<Change> {
38 Ok(Change::from_flow(self.node, change.version, change.diffs))
41 }
42
43 fn pull(&self, txn: &mut FlowTransaction, rows: &[RowNumber]) -> Result<Columns> {
44 self.parent.pull(txn, rows)
45 }
46}