use crate::db::{
direction::Direction,
executor::{
EntityAuthority, OrderedKeyStreamBox, ScalarContinuationContext,
pipeline::contracts::CursorEmissionMode, projection::PreparedSlotProjectionValidation,
route::LoadOrderRouteContract, 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 PreparedSlotProjectionValidation>,
pub(in crate::db::executor) cursor_emission: CursorEmissionMode,
}
pub(in crate::db::executor) struct KernelPageMaterializationRequest<'a> {
pub(in crate::db::executor) authority: EntityAuthority,
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_contract: LoadOrderRouteContract,
pub(in crate::db::executor) capabilities: ScalarMaterializationCapabilities<'a>,
pub(in crate::db::executor) consistency: MissingRowPolicy,
pub(in crate::db::executor) continuation: &'a ScalarContinuationContext,
pub(in crate::db::executor) direction: Direction,
}