use crate::db::{
executor::{
OrderedKeyStreamBox, ScalarContinuationContext, pipeline::contracts::CursorEmissionMode,
projection::PreparedProjectionContract, route::LoadOrderRouteMode,
terminal::RetainedSlotLayout,
},
predicate::MissingRowPolicy,
query::plan::{AccessPlannedQuery, EffectiveRuntimeFilterProgram},
};
#[derive(Clone, Copy)]
pub(in crate::db::executor) struct ScalarMaterializationCapabilities<'a> {
pub(in crate::db::executor) residual_filter_program: Option<&'a EffectiveRuntimeFilterProgram>,
pub(in crate::db::executor) validate_projection: bool,
pub(in crate::db::executor) retain_slot_rows: bool,
pub(in crate::db::executor) retained_slot_layout: Option<&'a RetainedSlotLayout>,
pub(in crate::db::executor) prepared_projection_validation:
Option<&'a PreparedProjectionContract>,
pub(in crate::db::executor) cursor_emission: CursorEmissionMode,
}
pub(in crate::db::executor) struct KernelPageMaterializationRequest<'a> {
pub(in crate::db::executor) plan: &'a AccessPlannedQuery,
pub(in crate::db::executor) key_stream: &'a mut OrderedKeyStreamBox,
pub(in crate::db::executor) scan_budget_hint: Option<usize>,
pub(in crate::db::executor) load_order_route_mode: LoadOrderRouteMode,
pub(in crate::db::executor) capabilities: ScalarMaterializationCapabilities<'a>,
pub(in crate::db::executor) consistency: MissingRowPolicy,
pub(in crate::db::executor) continuation: ScalarContinuationContext,
}