use crate::physical::types::{OperatorResult, PhysicalOperatorExec};
use akar_common::types::PhysicalTypeID;
use akar_common::vector::DataChunk;
use std::sync::Arc;
pub struct PhysicalExplain {
pub inner_plan: String,
}
impl PhysicalOperatorExec for PhysicalExplain {
fn operator_type(&self) -> &str {
"explain"
}
fn execute(&self, _input: Vec<DataChunk>) -> OperatorResult {
let plan_str = self.inner_plan.clone();
let array = Arc::new(arrow::array::StringArray::from(vec![plan_str]));
let arrow = akar_common::arrow_vector::ArrowVector::new(array, PhysicalTypeID::String);
let chunk = DataChunk {
fields: vec![arrow.array],
field_types: vec![PhysicalTypeID::String],
size: 1,
field_names: vec![],
sel_vector: None,
};
Ok(vec![chunk])
}
}