use vortex_error::VortexResult;
use super::super::RowFnExecutionArgs;
use super::super::args::BorrowedRowFnArgs;
use crate::ArrayRef;
use crate::ExecutionCtx;
use crate::IntoArray;
use crate::arrays::ConstantArray;
impl RowFnExecutionArgs {
pub(super) fn execute_all_constant(
&self,
kernel: impl Fn(BorrowedRowFnArgs<'_>, &mut ExecutionCtx) -> VortexResult<ArrayRef>,
ctx: &mut ExecutionCtx,
) -> VortexResult<ArrayRef> {
let result = self.validate_kernel_output(
kernel(self.execution_args(&self.inputs, 1), ctx)?,
1,
ctx,
)?;
let result = self.finalize_output(result, 1)?;
let scalar = result.execute_scalar(0, ctx)?;
Ok(ConstantArray::new(scalar, self.row_count).into_array())
}
}