Skip to main content

reifydb_function/is/
anonymous.rs

1// SPDX-License-Identifier: AGPL-3.0-or-later
2// Copyright (c) 2025 ReifyDB
3
4use 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}