reifydb_function/is/
anonymous.rs1use reifydb_core::value::column::data::ColumnData;
5use reifydb_type::value::r#type::Type;
6
7use crate::{
8 ScalarFunction, ScalarFunctionContext,
9 error::{ScalarFunctionError, ScalarFunctionResult},
10};
11
12pub struct IsAnonymous;
13
14impl IsAnonymous {
15 pub fn new() -> Self {
16 Self
17 }
18}
19
20impl ScalarFunction for IsAnonymous {
21 fn scalar(&self, ctx: ScalarFunctionContext) -> ScalarFunctionResult<ColumnData> {
22 if ctx.columns.len() != 0 {
23 return Err(ScalarFunctionError::ArityMismatch {
24 function: ctx.fragment.clone(),
25 expected: 0,
26 actual: ctx.columns.len(),
27 });
28 }
29
30 let is_anonymous = ctx.identity.is_anonymous();
31 let data: Vec<bool> = vec![is_anonymous; ctx.row_count];
32
33 Ok(ColumnData::bool(data))
34 }
35
36 fn return_type(&self, _input_types: &[Type]) -> Type {
37 Type::Boolean
38 }
39}