use radixdb_core::Result;
use radixdb_sql::ast::Expression;
use radixdb_storage::traits::QueryResult;
use crate::context::ExecutionContext;
use crate::expression::RowFilter;
use crate::result::FilteredResult;
pub fn apply(
input: Box<dyn QueryResult>,
predicate: &Expression,
ctx: &ExecutionContext,
) -> Result<Box<dyn QueryResult>> {
let filter = RowFilter::new(predicate, input.columns())?.with_context(ctx);
Ok(Box::new(FilteredResult::from_filter(input, filter)))
}